C语言编写四则运算

C语言编写四则运算时,需要输入两个操作数和运算符,我在写的时候是先输入操作数,后输入运算符,发现结果不对,根本运行不起来,后来改成先输入运算符,再输入操作数,才可以,这是... C语言编写四则运算时,需要输入两个操作数和运算符,我在写的时候是先输入操作数,后输入运算符,发现结果不对,根本运行不起来,后来改成先输入运算符,再输入操作数,才可以,这是为什么 展开
 我来答
刘淘冬
2019-09-05 · TA获得超过623个赞
知道小有建树答主
回答量:193
采纳率:72%
帮助的人:79.2万
展开全部

请先给出明确答复:因为程序规定的是先输入操作符,再输入两个操作数

解释原因:请看下面部分的代码

  1.  第一个scanf("%c",&oper);这一句要求输入一个(注意是一个)字符格式的值,给oper;
  2. 如果你输入一个数字、英文等等,假如你第一个输入的是10,那oper就是1,而不是10,因为%c一次只能读取一个字符;

  3. 接下来,输入第二第三个,程序再往下就会拿oper判断,如果oper等于-号,就会执行减法,如果等于+号就会执行加法;

  4. 所以你输入的操作数是不会匹配任何运算符,就不能进行运算。

有无解决办法:

调换语句顺序:复制第一个printf那一行与第一个scanf那一行,注意这两行printf在scanf的上面,把这两句放到第二个scanf之后,第三个print之前。就能输入 1 空格 + 空格 2 回车,这种的

高数线代编程狂
2019-09-05 · TA获得超过1.8万个赞
知道大有可为答主
回答量:1620
采纳率:86%
帮助的人:309万
展开全部
这个程序运行时首先就会提示你输入运算符,然后再提示你输入操作数。你不按提示来,当然程序报错。
追问
不好意思,我没表述清楚,我的意思是在写程序的时候,先写scanf("操作数"),再写scanf("运算符"),程序运行不起来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仆涵0hId62
2014-11-12 · 超过22用户采纳过TA的回答
知道答主
回答量:98
采纳率:0%
帮助的人:29.9万
展开全部
下面是个完整的程序,我测试通过符合你的要求,你在看看,我写的模块化实现,给你贴的有些乱,
函数声明如果在一个.c 文件把所有的子函数都在前面在声明一下,不是很复杂,

#include <stdio.h>
#include <math.h>
(#include "head.h" ) //自己定义的一定要用双引号括起来
//如果用尖括号就会出错
//这里包含的.h 文件时各个子函数的声明可以去掉
//函数功能:实现了减加乘除运算
void main()
{
void (*p)(float ,float); //定义指向函数的指针变量
float a,b; //上面的语句有些难度,相当于一个函数
char logo;
puts("输入两个数和想要的操作:\n");
scanf("%f%c%f",&a,&logo,&b);
while(1)
{switch(logo)
{
if((logo=='+')&&(logo=='-')&&(logo=='/')&&(logo=='*'))
{case '+': p = sum; (*p)(a,b);break; //这里就把指针给加
case '-': p = subtraction; (*p)(a,b);break; //同上
case '/': p = division; (*p)(a,b);break; //同上 给除
case '*': p = multiplication; (*p)(a,b);break;
default:break;
}
else
printf("输入错误重新输入")
}

}
}
#include <stdio.h>
#include <math.h>

void division(float a,float b)
{
float div;
div=a/b;
printf("%.3f\n",div);
}
#include <stdio.h>
#include <math.h>
void multiplication(float a,float b)
{
float mul;
mul=a*b;
printf("%.3f\n",mul);
}
#include <stdio.h>
#include <math.h>
void subtraction(float a,float b)
{
float ch;
ch=a-b;
printf("%.3f\n",ch);

}
#include <stdio.h>
#include <math.h>

void sum(float a,float b)
{
float he;
he=a+b;
printf("%.3f\n",he);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雅维凉仓27
2014-11-12 · TA获得超过103个赞
知道答主
回答量:126
采纳率:0%
帮助的人:141万
展开全部
是自增一的意思~比如定义一个整型变量并赋值a=3,执行a++后a值为4,要是++a是a当前值先参与运算后a才增一、要是--同理~把自增改为自减就行啦~
打字不易,如满意,望采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式