当前位置: 代码迷 >> C语言 >> 我错在哪里呀?
  详细解决方案

我错在哪里呀?

热度:169   发布时间:2006-03-22 19:38:00.0
我错在哪里呀?

#include "stdio.h"
main()
{
double m=0,n=0;
for(;;)
{
scanf("%f",&n);
if(getchar()=='+')
{
scanf("%f",&m);
n+=m; printf("=%f",n);
}
if(getchar()=='-')
{
scanf("%f",&m);
n-=m; printf("=%f",n);
}
if(getchar()=='*')
{
scanf("%f",&m);
n*=m; printf("=%f",n);
}
if(getchar()=='/')
{
scanf("%f",&m);
if(m==0)printf("error");
else n/=m; printf("=%f",n);
}

}
}
四则运算计算器的编程...我错在哪里呀?请高手指点!

搜索更多相关的解决方案: scanf  getchar  printf  

----------------解决方案--------------------------------------------------------
以下是引用指幕天在2006-3-22 19:38:00的发言:

#include "stdio.h"
main()
{
double m=0,n=0; //用float精度足够了
for(;;)
{
scanf("%f",&n);
if(getchar()=='+') //你输入了n后按了回车键,因此这里的 getchar()为'\n' ,非'+','-",' * ',"/"
{
scanf("%f",&m);
n+=m; printf("=%f",n);
}
if(getchar()=='-')
{
scanf("%f",&m);
n-=m; printf("=%f",n);
}
if(getchar()=='*')
{
scanf("%f",&m);
n*=m; printf("=%f",n);
}
if(getchar()=='/')
{
scanf("%f",&m);
if(m==0)printf("error");
else n/=m; printf("=%f",n);
}

}
}
四则运算计算器的编程...我错在哪里呀?请高手指点!


----------------解决方案--------------------------------------------------------

这是修改后的程序:
#include <stdio.h>
main()
{
float m=0,n=0;
int i;
char c;
printf("Input n:\n");
scanf("%f",&n);
printf("Input oper:\n");
c=getchar(); //存储回车键'\n'
if(c=='\n') c=getchar(); //存储操作符
if(c=='+')
{
printf("Input m:\n");
scanf("%f",&m);
n+=m; printf("=%f",n);
}
if(c=='-')
{
scanf("%f",&m);
n-=m; printf("=%f",n);
}
if(c=='*')
{
scanf("%f",&m);
n*=m; printf("=%f",n);
}
if(c=='/')
{
scanf("%f",&m);
if(m==0)printf("error");
else n/=m; printf("=%f",n);
}


}


----------------解决方案--------------------------------------------------------
以下是引用haishanglang在2006-3-22 20:08:00的发言:

以下是引用指幕天在2006-3-22 19:38:00的发言:

#include "stdio.h"
main()
{
double m=0,n=0; //用float精度足够了
for(;;)
{
scanf("%f",&n);
if(getchar()=='+') //你输入了n后按了回车键,因此这里的 getchar()为'\n' ,非'+','-",' * ',"/"
{ /*我没有按回车的
scanf("%f",&m);
n+=m; printf("=%f",n);
}
if(getchar()=='-')
{
scanf("%f",&m);
n-=m; printf("=%f",n);
}
if(getchar()=='*')
{
scanf("%f",&m);
n*=m; printf("=%f",n);
}
if(getchar()=='/')
{
scanf("%f",&m);
if(m==0)printf("error");
else n/=m; printf("=%f",n);
}

}
}
四则运算计算器的编程...我错在哪里呀?请高手指点!


----------------解决方案--------------------------------------------------------

为什么不用switch case语句呢,应该要简单些吧!


----------------解决方案--------------------------------------------------------
是的,我只是想知道上面哪里错了.....先在还不明白,请指教...
----------------解决方案--------------------------------------------------------
你的次序编译连接都能通过啊?
----------------解决方案--------------------------------------------------------
你看看图片

[此贴子已经被作者于2006-3-22 22:06:17编辑过]


----------------解决方案--------------------------------------------------------
但是运行结果不对呀...
----------------解决方案--------------------------------------------------------
  相关解决方案