c语言编写计算器程序
#include <stdlib.h>
int main(void)
{
int num1=0;
int num2=0;
int resule=0;
char sign;
printf("请输入两个要进行运算的数字,以逗号隔开:");
scanf("%d,%d",&num1,&num2);
printf("请输入运符号(+、-、*、/):");
scanf("%c",&sign);
if(sign!='+' && sign!='-' && sign!='*' && sign!='/')
{
printf("您输入的运算符有问题!\n");
system("PAUSE");
return 0;
}
switch(sign)
{
case '+':
resule=num1+num2;
break;
case '-':
resule=num1-num2;
break;
case '*':
resule=num1*num2;
break;
case '/':
if(0==num2)
{
printf("当您使用除法时,您输入的第二个数不能用0!\n");
system("PAUSE");
return 0;
}
else
{
resule=num1/num2;
}
}
printf("%d",resule);
system("PAUSE");
return 0;
}
如果定义先输入数字,函数运行不能提示输入运算符号,先输入副号可以避免,求解。。。为啥不能先输入数字。或者是缺少什么代码。。谢谢 展开
C语言编写计算器
我们可以用printf和scanf函数输出结果和获取用户的输入。需要<stdio.h>头文件。scanf函数在读取数据的时候不需要再一行上输入每个数据,只要数据和数据之间留出空白就可以了。先声明两个变量number1和number2,operation变量用来存储运算符。用scanf函数获取这两个数字和运算符。分别用%lf %c %lf
然后需要检测输入是否是正确的,检查是不是+ - * / %,在这里要用到switch函数,用来看operation变量是否别传入了正确的值。
switch(operation)
{
case '+':
printf........
}
具体的运算我们只需要再case之后的printf语句中设定和输出就可以了。
由于除法和取余运算比较特殊,我们单独说明。除法的除数不能为零,所以除法需要检测除数是否为零,只需要用if else语句就可以,if(number2 == ),取余运算符对于浮点数没有意义,所以将浮点数转换为long类型,强制类型转换,if((long)number2 == 0) else ,这样整个代码就完成了。
简单计算器的编辑并不难,但是要注意一些细节,除法的处理要注意除数不能为零的情况,而且取模运算要将两个操作数转化为整型,当然,作为真正的计算器,只实现这些功能是不够的,还需要更多的功能,不过有一个好的开始也不错。
下面我们就运行一下这个程序吧。25*13的值和8%5的值。可以看到是我们期望的值。
1、既然是简单计算器,只需要实现加减乘除,同时每次支持两个操作数和一个操作符。
同时约定,操作数为整型,对于加减乘输出为整型,除法输入为浮点型即可。
2、例程:
#include <stdio.h>
int main()
{
int a,b,r;
float r_div;
char op;
scanf("%d",&a);//读入操作数a
op = getchar();//读入运算符号
scanf("%d",&b);//读入操作数b
switch(op)//根据运算符号,进行对应的加减乘除运算。
{
case '+':
r = a+b;//加法
break;
case '-':
r = a-b;//减法
break;
case '*':
r = a*b;//乘法
break;
case '/':
r_div = a/(float)b;//除法
break;
default:
printf("unknow operator\n");//未知操作符,属于输入错误。退出程序。
return -1;
}
//根据操作符号,输入对应的运行结果。
if(op == '/')printf("%d%c%d=%f\n", a,op,b,r_div);
else printf("%d%c%d=%d\n", a,op,b,r);
return 0;
}
以上代码就实现了最简单的计算器,可以根据需要,在其上增加其它功能,比如连续计算,或者括号支持等。
#include <stdlib.h>
int main(void)
{
int num1;
int num2;
int resule=0;
char sign;
setbuf(stdout,NULL);
printf("请输入两个要进行运算的数字,以逗号隔开:\n");
scanf("%d,%d",&num1,&num2);
sign=getchar();/*scanf从缓冲区中读取数,此句读取两个数之后的
回车符。否则回车符被下面的scanf语句读去赋给
sign */
printf("请输入运符号(+、-、*、/):\n");
scanf("%c",&sign);
if(sign!='+' && sign!='-' && sign!='*' && sign!='/'){
printf("您输入的运算符有问题!\n");
system("PAUSE");
return 0;
}
switch(sign){
case '+':resule=num1+num2;break;
case '-':resule=num1-num2;break;
case '*':resule=num1*num2;break;
case '/':
if(0==num2){
printf("当您使用除法时,您输入的第二个数不能用0!\n");
system("PAUSE");
return 0;
}
else
resule=num1/num2;
}
printf("%d",resule);
system("PAUSE");
return 0;
}