注册 登录
编程论坛 新人交流区

C语言求模运算(新手求助,不要笑我,谢谢!)

小白II 发布于 2007-10-19 17:34, 1075 次点击

我刚刚开始学C几天,遇到个问题,请高手帮个忙,在线等答案:
题目是这样子的:接收一个字符,例如用“+”表示加法,用“-”表示减法。接收num1和num2两个数。如果输入的字符为“+”,则将这两个数相加并显示相应结果。如果输入的字符为“-”,则将这两个数相减并显示相应的值。
下面是我的做法:
#include <stdio.h>
void main()
{ char x;
float num1,num2,num3;
printf("请输入一个运算符(+,-,%,*,/):");
scanf("%c",&x);
if(x=='+'||x=='-'||x=='*'||x=='/'||x=='%')
{printf("请输入两个数字:");
scanf("%f%f",&num1,&num2);
if(x=='+')
{num3=num1+num2;}
if(x=='-')
{num3=num1-num2;}
if(x=='*')
{num3=num1*num2;}
if(x=='/')
{num3=num1/num2;}
if(x=='%')
{(int)num3=(int)(num1)%(int)(num2);}

printf("%.2f%c%.2f=%.2f\n",num1,x,num2,num3);}
else{printf("输入错误!");}
}
在做加减乘除时,都没问题。可是做求模时就做不出来,我知道怎么错的,可我不会改,有人能帮帮我吗?谢谢了!

8 回复
#2
小白II2007-10-19 17:42

来个人帮帮忙啊

#3
orange_fit2007-10-19 18:02
#include <stdio.h>
void main()
{ char x;
float num1,num2,num3;
printf("请输入一个运算符(+,-,%,*,/):");
scanf("%c",&x);
if(x=='+'||x=='-'||x=='*'||x=='/'||x=='%'){
printf("请输入两个数字:");
scanf("%f%f",&num1,&num2);
if(x=='+') {num3=num1+num2;}
if(x=='-') {num3=num1-num2;}
if(x=='*') {num3=num1*num2;}
if(x=='/') {num3=num1/num2;}
if(x=='%'){num3=(int)(num1)%(int)(num2);}
printf("%.2f%c%.2f=%.2f\n",num1,x,num2,num3);
}
else{printf("输入错误!");}
}
这是我的做法...可能只是改了.求模 这一块
#4
小白II2007-10-19 18:10
回复:(小白II)C语言求模运算(新手求助,不要笑我,...

谢谢楼上的哥哥,这样是可以了,不过还有一个问题,我想要这里
printf("请输入一个运算符(+,-,%,*,/):");
打印的时候,能把%也打出来,可以吗,现在是打不出来的,就是两个,,在一起

#5
小白II2007-10-19 18:14
还有能给我解释一下,我为是什么会错吗????
#6
小白II2007-10-19 18:16
我自己写的没错没警告,可是不行
为什么改成有警告的,运行起来,到是对的了呢
#7
小白II2007-10-19 18:39
谁帮帮我啊,谢谢
#8
orange_fit2007-10-19 22:43
{(int)num3=(int)(num1)%(int)(num2);}
因为我觉得..你后面求模..经已是强制变成INT...后面求得的模经已是INT,所以不用在强制转换为INT

还有注意一下大括号...就可以了.
#9
zxc19982007-10-20 00:11
如果你想把num3强制转换为int, 应该是num3 = (int)num3;

直接写成(int)num3,并不能把num3转换成int
1