我编辑的计算器,为什么乘除算不出来?

来源:百度知道 编辑:UC知道 时间:2024/05/28 12:29:59
#include "stdio.h"
void main()
{
int a,b,c,d;
a=1; b=2; c=3; d=4;
int s,w;
s=5,w=6;
int sum,divide,cheng,chu;

printf("1,计算两数和:\n2,计算两数差:\n3,计算两数乘:\n4,计算两数除:\n");
printf("请选择计算的类别:\n");
scanf("%d",&a,&b,&c,&d);
printf("请输入两个数:");
scanf("%d %d",&s,&w);
if (a==1)
{
sum=s+w;
printf("%d\n",sum);
}
else
if
(b==2)
{
divide=s-w;
printf("%d\n",divide);
}
else
if
(c==3)
{cheng=s*w;
printf("%d\n",cheng);
}
else
if ((d==4)&&(w!=0))
{
chu=s/w;
printf("%d\n",chu);
}
else
printf("您输入的有误");
}

一算到乘除就直接算减法了,哪的毛病啊?

问题出在scanf("%d",&a,&b,&c,&d); 所有的输入都被a接收,b,c,d永远接收不到,也就是说总有b=2; c=3; d=4;
当输入"1"时,a=1,算"加"没问题;
当输入"2"时,a=2,"if (a==1)"不成立,但"if (b==2)"成立,算"减"刚好没问题.
当输入"3"时,a=3,"if (a==1)"不成立,但"if (b==2)"成立,本来是算"乘"的结果,算"减". 输入"4"也一样."if (c==3)"和"if (d==4)"被"if (b==2)"屏蔽了.

这个程序应该这样改:
(1)int a,b,c,d; a=1; b=2; c=3; d=4;
改为:int a;
(2)scanf("%d",&a,&b,&c,&d);
改为scanf("%d",&a);
(3)所有的"b==,c==,d =="改为"a==";

结果为int整形变量,只保留除数
可以换成double