十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#includestdio.h
创新互联公司主营城中网站建设的网络公司,主营网站建设方案,app软件定制开发,城中h5小程序开发搭建,城中网站营销推广欢迎城中等地区企业咨询
void add(float a,float b)
{
printf("%f",a+b);
}
void sub(float a,float b)
{
printf("%f",a-b);
}
void mul(float a,float b)
{
printf("%f",a*b);
}
void div(float a,float b)
{
printf("%f",a/b);
}
int main()
{
int c;
float a,b;
printf("两数相加,选1;\n");
printf("两数相减,选2;\n");
printf("两数相乘,选3;\n");
printf("两数相除,选4.\n");
scanf("%d",c);
if(c!=1c!=2c!=3c!=4)
{
printf("输入不合法!!");
exit(0);
}
printf("请输入操作数a和b:");
scanf("%f%f",a,b);
switch(c)
{
case 1:add(a,b);break;
case 2:sub(a,b);break;
case 3:mul(a,b);break;
case 4:div(a,b);break;
}
return 0;
}
下面是个完整的程序,我测试通过符合你的要求,你在看看,我写的模块化实现,给你贴的有些乱,
函数声明如果在一个.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);
}
请先给出明确答复:因为程序规定的是先输入操作符,再输入两个操作数
解释原因:请看下面部分的代码
第一个scanf("%c",oper);这一句要求输入一个(注意是一个)字符格式的值,给oper;
如果你输入一个数字、英文等等,假如你第一个输入的是10,那oper就是1,而不是10,因为%c一次只能读取一个字符;
接下来,输入第二第三个,程序再往下就会拿oper判断,如果oper等于-号,就会执行减法,如果等于+号就会执行加法;
所以你输入的操作数是不会匹配任何运算符,就不能进行运算。
有无解决办法:
调换语句顺序:复制第一个printf那一行与第一个scanf那一行,注意这两行printf在scanf的上面,把这两句放到第二个scanf之后,第三个print之前。就能输入 1 空格 + 空格 2 回车,这种的