填空题 请补充main函数,该函数的功能是:从键盘输入只有两个整数参与运算的一个四则运算式,然后计算出它的值。注意数字全部为正整数。 例如,输入308*28,结果为8624.000000。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。 试题程序: # include<stdio, h> main ( ) { int a=0, b=0, flag=l, fg=l; float result; char *p, ch; char str[10]; clrscr (); printf("/n Input a string /n"); gets (str); p=str; while (*p) { if (*p>='0' &&*p<='9' && flag==l ) a={{U}} 【1】 {{/U}}; else if (fg) { ch=*p; flag=2; fg=0; } if (*p>='0 ' &&*p<='9' &&flag==2) b={{U}} 【2】 {{/U}}; p++; } switch({{U}} 【3】 {{/U}}) { case '+': result=a+b;break; case '-': result=a-b;break; case '*' :result=a*b;break; case '/' :result= (float) a/b;break; printf ("/nresult=%f", result); }
  • 1、
【正确答案】 1、a*l0+*p-'0' (2)b*10+*p-'0' (3)ch    
【答案解析】[解析] 填空1:变量a用来保存第一个整数,*p-‘0’ 得到指针p所指的数字字符的对应数字。填空2:同理,变量b用来保存第二个整数。填空3:字符ch中保存的是四则运算符,而switch语句中case后面的常量表达式都是运算符,所以为了能够匹配,switch后面括号中的表达式应该为ch。