|
|
发表于 2012-10-18 18:18:18
|
显示全部楼层
朋友,首先你这个程序里,错误真的不少,我改了好几处,才编译通过,具体你自己也看看吧,我改的就不给你指出来了,
其次,你的问题,我注释在程序里了,互相学习吧,嘿嘿- #include <stdio.h>
- #include <windows.h>
- double calc(double,char,double);
- int main(void)
- {
- double num_01,num_02,result;
- char sign,a;
- int ok;
- for(ok=1;ok!=0;)[color=Red]//这里ok还是初始化一下,要不虽然能运行,可那判断的是ok的地址;
- //这里我感觉先对ok赋初值,再用while语句更舒服,个人感觉,嘿嘿;[/color]
- {
- printf("请输入要计算的式子:\n");
- scanf("%lf%c%lf",&num_01,&sign,&num_02);[color=Red]//这里我们输入完要求输入的内容后;
- //会用回车结束输入;[/color]
- getchar();[color=Red]//这句是将上句中最好输入的那个回车过滤掉,否则会被下一个scanf;
- //语句作为输入读取[/color]
- putchar('\n');
- result = calc(num_01,sign,num_02);
- printf("%.2lf%c%.2lf=%.2lf\n",num_01,sign,num_02,result);
- printf("是否继续计算Y/N:");
- scanf("%c",&a);[color=Red]//如果没有上面的getchar语句,这里实际读入的是上一个scanf
- //语句输入的最后那个回车的值,这也是导致下面的判断语句不能
- //正确判断的原因[/color]
- if(a == 'n' || a == 'N')ok = 0;
- if(a == 'y'||a == 'Y')ok = 1;
- }
- system("pause");
- return 0;
- }
- double calc(double num_01,char sign,double num_02)
- {
- double result;
- switch(sign)
- {
- case '+': result = num_01 + num_02;break;
- case '-': result = num_01 - num_02;;break;
- case '*': result = num_01 * num_02;;break;
- case '/':
- if(num_02 == 0)
- printf("除数不能为零\n");
- else
- result = num_01/num_02;
- break;
- default: printf("输入错误\n");break;
- }
- return result;
- }
复制代码 |
评分
-
查看全部评分
|