【发布时间】:2013-09-05 10:10:05
【问题描述】:
我决定使用代码制作一个计算器,但我的程序无法正常工作。 当我输入我的操作数和新数字时,它似乎不会扫描操作数和数字,也不会启动循环。 感谢您的帮助。
#include <stdio.h>
#include <math.h>
float add(float x,float y);
float sub(float x,float y);
float div(float x,float y);
float exp(float x,float y);
float mult(float x,float y);
int main(){
float y,x;
char op;
printf("Type in a number\n");
scanf("%f",&x);
printf("Type in your operand and desired number\n");
scanf("%c",&op);
scanf("%f",&y);
while (!(op=='q')){
if(op=='+'){
printf("Your result is %.1f\n",add(x,y));
scanf("%c",&op);
scanf("%f",&y);
}
else if(op=='-'){
printf("Your result is %.1f\n",sub(x,y));
scanf("%c",&op);
scanf("%f",&y);
}
else if(op=='*'){
printf("Your result is %.1f\n",mult(x,y));
scanf("%c",&op);
scanf("%f",&y);
}
else if(op=='/'){
printf("Your result is %.1f\n",div(x,y));
scanf("%c",&op);
scanf("%f",&y);
}
else if(op=='^'){
printf("Your result is %.1f\n",exp(x,y));
scanf("%c",&op);
scanf("%f",&y);
}
}
printf("Your final result is %.1f\n",x);
return(0);
}
float add(float x,float y){
return (x+y);
}
float sub(float x,float y){
return (x-y);
}
float div(float x,float y){
return (x/y);
}
float exp(float x,float y){
x=pow(x,y);
return(x);
}
float mult(float x,float y){
return (x*y);
}
【问题讨论】:
-
你的函数 exp 重命名冲突。
-
是的,我知道我把它改名了,谢谢
-
这个想法很简单,但您的解决方案并不好,将数字和字符与 scanf 混合读取真的很痛苦,因为 scanf 会留下空白。此外,这些 if 在放入 switch 时看起来更好。当用户没有输入正确的操作数时,你不处理这种情况。
-
我还是个 c 初学者,所以我在学习,但是这个 while(getchar()!='\n') continue;
-
让我感到困惑,我应该像在循环中的第一个 scanf 之后还是在两个 scanfs 之后一样输入那个 getchar ......对不起,如果我无法理解它们的放置位置
标签: c function math calculator