PAT(乙級)2020年秋季考試 7-3 如需挪車請致電 (20分)


7-3 如需挪車請致電 (20分)
 

phone.jpg

上圖轉自新浪微博。車主用一系列簡單計算給出了自己的電話號碼,即:

2、3、9​​=3、9​​=3、0、叄=、5、9、1、23​​=8、8,最后得到的電話號碼就是 153 3033 3384。

本題就請你寫個程序自動完成電話號碼的轉換,以幫助那些不會計算的人。

輸入格式:

輸入用 11 行依次給出 11 位數字的計算公式,每個公式占一行。這里僅考慮以下幾種運算:加(+)、減(-)、乘(*)、除(/)、取余(%,注意這不是上圖中的百分比)、開平方根號(sqrt)、指數(^)和文字(即 0 到 9 的全小寫漢語拼音,如 ling 表示 0)。運算符與運算數之間無空格,運算數保證是不超過 1000 的非負整數。題目保證每個計算至多只有 1 個運算符,結果都是 1 位整數。

輸出格式:

在一行中給出電話號碼,數字間不要空格。

輸入樣例:

2/2
3+2
sqrt9
sqrt9
6%2
san
5-2
9/3
1*3
2^3
8/2
 

輸出樣例:

15330333384



代碼講解:此題要從運算符的個數入手,咱們看,輸入的運算符只有倆目,或者單目(sqrt)
其余的就是沒有(一定要注意,運算符為0的情況可能只有單獨的數字的情況),那我們當務
之急,就是求有幾個操作數,就可以了,求操作數,就和求一個句子中單詞的數量是一樣的。。


 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<math.h>
 4 int main()
 5 {
 6     char pin[11][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
 7     int i,j,count,a,b,count_r=0,flag=0;
 8     char input[300],c,suiji[30];
 9     char result[200]={0};
10     for(i=0;i<11;i++)
11     {
12         count=0;
13         flag=0;
14         scanf("%s",input);
15         for(j=0;input[j]!='\0';j++)
16         {
17             if(input[j]>='0'&&input[j]<='9')
18             {
19                 if(flag==0)
20                 {
21                 count++;
22                 flag=1;
23                 }
24             }     
25             else
26             {
27                 flag=0;
28             }
29         }
30         if(2==count)
31         {
32             sscanf(input,"%d%c%d",&a,&c,&b);
33             switch(c)
34             {
35                 case '+': result[count_r++]=a+b+'0';break;
36                 case '-': result[count_r++]=a-b+'0';break;
37                 case '*': result[count_r++]=a*b+'0';break;
38                 case '/': result[count_r++]=a/b+'0';break;
39                 case '%': result[count_r++]=a%b+'0';break; 
40                 case '^': result[count_r++]=(int)(pow(a,b))+'0';break;
41             }
42         }
43         else
44         {
45             if(1==count)
46             {
47                 if(input[0]=='s')
48                 {
49                 sscanf(input,"%4s%d",suiji,&a);
50                 result[count_r++]=(int)(sqrt(a))+'0';
51                 }
52                 else
53                 result[count_r++]=input[0]; 
54                 
55             }
56             else
57             {
58                 for(j=0;j<10;j++)
59                 {
60                     if(strcmp(pin[j],input)==0)
61                     {
62                         result[count_r++]=j+'0';
63                         break;
64                     }
65                     
66                 }
67             }
68         }
69     }
70     printf("%s\n",result);
71     return 0; 
72 } 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM