用c语言设计一个计算两个整数的和、差、积、商、和余数的程序

# include<stdio.h>
int main(void)
{
int num1,num2,sum,cha,ji,yushu;
double shang;
printf("please input num1\n");
scanf("%d",&num1);
printf("please input num2\n");
scanf("%d",&num2);
sum=num1+num2;
cha=num1-num2;
ji=num1*num2;
shang=num1/num2;
yushu=num1%num2;

printf("sum=%d\n",sum);
printf("cha=%d\n",cha);
printf("ji=%d\n",ji);
printf("shang=%f\n",shang);
printf("yushu=%d\n",yushu);

return 0;
}
我是这样写的,经检验是正确的,但当num2=0是程序就无法运行了
并且当num1>num2时商为0.000000

被除数不能为0,所以当num2=0的时候,程序就报错了。 还有,你两个数都是int型的。商是double型,在处理的时候,加一个强制转换shang=(double)num1/num2;这样就可以了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-10
#include<stdio.h>
int main()
{
int x1,x2,sum,cha,ji,shang,yushu;
printf("Please input Num[1]\n");
scanf("%d",&x1);
printf("Please input Num[2]\n");
scanf("%d",&x2);
sum=x1+x2;
printf("sum = %d\n",sum);
cha=x1-x2;
printf("cha = %d\n",cha);
ji=x1*x2;
printf("ji = %d\n",ji);
// 当x2=0时无法进行除法和取模运算
if (x2 != 0)
{
shang=x1/x2;
printf("shang = %d\n",shang);
yushu=x1%x2;
printf("yushu = %d\n",yushu);
}
else
{
printf("shang not exist!\n");
printf("yushu not exist!\n");
}
return 0;
}

第2个回答  2014-03-10
num2是0对于shang=num1/num2这句话来说,除数为0,系统肯定会报错的
对于第二个问题,是由于你没有设着小数点后保留几位,默认只取整数的