c语言题目求解!

用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1运算符op操作数2计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、... 用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:
操作数1 运算符op 操作数2
计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)、模(%)。
假设操作数都是整数
在本问题的基础上,如果要求程序能进行浮点数的算术运算,程序应该如何修改?
(提示,除了数据类型,还要注意运算符%对浮点数无效)
展开
 我来答
红领巾飘过
推荐于2016-12-02 · TA获得超过345个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:240万
展开全部
#include<stdio.h>
void main()
{
int num1,num2;
char ch;
printf("请输入一个表达式:");
scanf("%d%c%d",&num1,&ch,&num2);
int result;
switch(ch)
{
case '+':
result=num1+num2; break;
case '-':
result=num1-num2;break;
case '*':
result=num1*num2;break;
case '/':
result=num1/num2;break;
case '%':
result=num1%num2;break;
}
printf("运算结构为:%d\n",result);

}
2

#include<stdio.h>
void main()
{
float num1,num2;
char ch;
printf("请输入一个表达式:");
scanf("%f%c%f",&num1,&ch,&num2);
float result;
switch(ch)
{
case '+':
result=num1+num2; break;
case '-':
result=num1-num2;break;
case '*':
result=num1*num2;break;
case '/':
result=num1/num2;break;

}
printf("运算结构为:%f\n",result);

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-11-14
展开全部
可以用一个程序
#include<stdio.h>
void main()
{
float a=0,b=0,c=0;
char d;
printf("输入四则运算表达式:\n");
scanf("%f%c%f",&a,&d,&b);
switch(d)
{
case'+': c=a+b;break;
case'-': c=a-b;break;
case'x':
case'*': c=a*b;break;
case'/': if(b>0) c=a/b;break;
case'%':
if(a==int(a) && b==int(b))
c=int(a)%int(b);
else {
printf("%g%c%g无效。\n",a,d,b);
return;
}
break;
default:break;
}
printf("%g%c%g=%g\n",a,d,b,c);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
恭奥功昊磊
2020-06-17 · TA获得超过3854个赞
知道大有可为答主
回答量:3184
采纳率:32%
帮助的人:193万
展开全部
我就说要点了。。
1)
double
x,y;
x=1;
y=x+3/2;
y的值为什么是2.0?
3/2两个整型相除得整型1。
2)main()
{
int
x=0.5;char
z='a';
printf("%d\n",(x&1)&&(z<'z'))}
x&1
值为0那么输出的应该为0
为什么答案是1?
单个&是取地址运算符。。x&1非0
3)以下合法的赋值语句是?我选的x=y=100
答案是d--;
x=y=100少了;不是语句是表达式。而且c支持连等????
4)以下各选项企图说明一种新的类型名,正确的是:
A)typedef
v1
int;
B)
typedef
v2=int;
C)
typedefv1
int
v3;
D)
typedef
v4;
int;
答案是C
为什么…
顺便解释一下typedef吧…
意思就是下面编程时你可以在类型那里写v3,和int作用一样。前面写要替换的,后面写换后的。比如v3
a=0;定义一个整型变量a赋值0
5)为什么x==0||x==1与!x等价?
扯淡!当x==1,左真,右假。题出错了。
6)main()
{
unsigned
short
a=65536;
int
b;
printf("%d\n",b=a);}
结果为什么是0?
你这是TC编译器吧。。
无符号范围0-65536
有符号-32768-32767
把65536付给b是超范围了,到了32767后从-326768开始,就到0了。这不是正规解释,正规要从二进制解释。。。。但我这么说也没错,你可以这么理解着记
7)有定义:int
a=10,b=9,c=8;
然后执行
c=(a-=(b-5));
c=(a%11)+(b=3);
问变量b中的值是?
这个怎么算…
第一句:b-5得4,b不变,a-=4得6付给a,c=6;
第二句:a%11得6,a不变,(b=3),把b得值改为三,次表达式整个值也是3,所以c=6+3=9;
最后a6b3c9
8)程序输出结果是16.00
main()
{
int
a=9,
b=2;
float
x=___,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
我觉得应该填6.05
可是答案是6.6

z=a/2+b*x/y+1/2;这句:
先看前后两部分,a/2显然是两整型相除得整型4,1/2同上得0。
中间b*x/y部分是float和整型运算也是float而且第2个变量就是x所以可以不考虑整型运算后的数据丢失。
最后输出结果是16也就是说中间部分16.0-4-0得12.0。
接下来好办了,几除y(1.1)得12?13.2。几乘b(2)得13.2?6.6
9)x,y均为int型变量,x=1,y=2,则1.0+x/y的值为?为什么不是1.5…
同上,整型相除得整型,1/2得0.5取整舍掉。5得0,此时+运算还没进行。。。+运算开始后右边的0隐形转换成0.0所以结果是1.0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式