为了账号安全,请及时绑定邮箱和手机立即绑定

求助,C语言初学者遇到一题不会

求助,C语言初学者遇到一题不会

慕娘9325324 2019-04-08 09:21:38
rt,自学C语言,遇到书上一道习题没有思路。。编写程序对表达式求值:Enteranexpression:1+2.5*3Valueofexpression:10.5表达式中的操作数是浮点数,运算符是+、-、*、/。表达式从左向右求值(所有运算符的优先级都一样)p.s.:目前我还没学到数组啊指针一类的东西。。。一开始的思路:检测四则运算符,四则运算符之间的为操作数,读取操作数并且转换为数字,然后两两运算。譬如检测到+号,然后用getchar函数提取1和2.5两个char值,'1'-48(ASCII码中数字的字符编码比它本身大48,利用这个特性可以将字符转换为数字),但是2.5就不知道怎么转换了而且利用getchar函数,如果操作数不是个位数,譬如12,就没有办法提取,只能先提取1再提取2,然后1*10+2,但是这样又很麻烦不知道怎么解决。谢谢!
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

其实不用那么麻烦,用%d读取就行!(不考虑浮点数除法,都按照整除来)
#include
#include
intmain()
{
printf("请输入表达式:\n");
intx,ans;
scanf("%d",&x);
ans=x;
charc;
while(scanf("%c",&c)&&c!='\n'){
scanf("%d",&x);
if(c=='+'){
ans+=x;
}
if(c=='-'){
ans-=x;
}
if(c=='*'){
ans*=x;
}
if(c=='/'){
ans/=x;
}
}
printf("ans=%d",ans);
return0;
}
                            
查看完整回答
反对 回复 2019-04-08
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

scanf("%f",a);
把键盘输入当作浮点数看待,存储到a中
scanf("%d",b);
把键盘输入的整数整个存储到b中
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 389 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信