C语言编写四则运算
C语言编写四则运算时,需要输入两个操作数和运算符,我在写的时候是先输入操作数,后输入运算符,发现结果不对,根本运行不起来,后来改成先输入运算符,再输入操作数,才可以,这是...
C语言编写四则运算时,需要输入两个操作数和运算符,我在写的时候是先输入操作数,后输入运算符,发现结果不对,根本运行不起来,后来改成先输入运算符,再输入操作数,才可以,这是为什么
展开
4个回答
展开全部
请先给出明确答复:因为程序规定的是先输入操作符,再输入两个操作数
解释原因:请看下面部分的代码
- 第一个scanf("%c",&oper);这一句要求输入一个(注意是一个)字符格式的值,给oper;
如果你输入一个数字、英文等等,假如你第一个输入的是10,那oper就是1,而不是10,因为%c一次只能读取一个字符;
接下来,输入第二第三个,程序再往下就会拿oper判断,如果oper等于-号,就会执行减法,如果等于+号就会执行加法;
所以你输入的操作数是不会匹配任何运算符,就不能进行运算。
有无解决办法:
调换语句顺序:复制第一个printf那一行与第一个scanf那一行,注意这两行printf在scanf的上面,把这两句放到第二个scanf之后,第三个print之前。就能输入 1 空格 + 空格 2 回车,这种的
展开全部
这个程序运行时首先就会提示你输入运算符,然后再提示你输入操作数。你不按提示来,当然程序报错。
追问
不好意思,我没表述清楚,我的意思是在写程序的时候,先写scanf("操作数"),再写scanf("运算符"),程序运行不起来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下面是个完整的程序,我测试通过符合你的要求,你在看看,我写的模块化实现,给你贴的有些乱,
函数声明如果在一个.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);
}
函数声明如果在一个.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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是自增一的意思~比如定义一个整型变量并赋值a=3,执行a++后a值为4,要是++a是a当前值先参与运算后a才增一、要是--同理~把自增改为自减就行啦~
打字不易,如满意,望采纳。
打字不易,如满意,望采纳。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询