【发布时间】:2019-09-17 10:29:28
【问题描述】:
我正在制作一个科学计算器。并考虑循环语句,直到用户通过使用 0 作为选项之一要求停止。但即使在输入 0 之后。它最后一次询问这个语句:
printf("Enter two numbers (For only one no. required you can just enter other number anything)\n");
我尝试过使用goto, exit(0) 和return 0 语句。甚至while(1) 和for(;;) 也会循环。
#include <stdio.h>
#include<math.h>
int main()
{
int a;
float b,c;
float d=3.14159/180;
while(1)
{
printf("\nScientific Calculator :\n");
printf("Enter option:\n 0- Exit, 1-Add, 2-Sub, 3-Multiply, 4-Divide,\n 5-sin(x), 6-cos(x), 7-tan(x), 8-sinh(x), 9-cosh(x), 10-tanh(x),\n11-log10(x),12-exponent,13-power of x w.r.t y \n");
scanf("%d",&a);
printf("Enter two numbers (For only one no. required you can just enter other number anything)\n"); //Here is where it starts even after return 0
scanf("%f%f",&b,&c); //Here after inputting value it ends.
switch(a)
{
case 0:return 0; //Here is the return 0;
case 1:printf("%d",(int)(b+c)); break;
case 2:printf("%d",(int)(b-c)); break;
case 3:printf("%d",(int)(b*c)); break;
case 4:printf("%f",b/c); break;
case 5:printf("%f",sin(b*d)); break;
case 6:printf("%f",cos(b*d)); break;
case 7:printf("%f",tan(b*d)); break;
case 8:printf("%f",sinh(b*d)); break;
case 9:printf("%f",cosh(b*d)); break;
case 10:printf("%f",cosh(b*d)); break;
case 11:printf("%f",tanh(b*d)); break;
case 12:printf("%f",log10(b)); break;
case 13:printf("%f",exp(b)); break;
case 14:printf("%f",pow(b,c)); break;
default:printf("Enter correct option\n");
}
}
return 0;
}
我希望它退出并退出程序,但它要求输入 printf("Enter two numbers ---\n"); 并在输入值后退出。
【问题讨论】:
-
对scanf进行一些基本检查会很好
-
你检查case 0太晚了,看我的回答
-
恕我直言,这更像是
printf("Enter two number,它做得太早了,在询问参数之前你应该知道你要对它们做什么。 -
@OznOg 你是正确的案例 12 和 13
-
如果选择无效,读数字也没用,我编辑了我的答案
标签: c for-loop while-loop return exit