|
20鱼币
上次提问让大佬们见笑了,发帖少,对于遵循规范问题我这个帖子我也重新发一下。
- #include<stdio.h>
- float add(float, float);
- float sub(float, float);
- float mul(float, float);
- float chu(float, float);//分别是加减乘除计算函数
- float (*sellect(char op))(float, float);//挑选函数返回一个带两个float型整型参数的指针函数
- float calc(float*fp(float,float),float ,float);//实现直接返回对应指针函数的计算
- float add(float num1, float num2)
- {
- return num1 + num2;
- }
- float sub(float num1, float num2)
- {
- return num1 - num2;
- }
- float mul(float num1, float num2)
- {
- return num1 * num2;
- }
- float chu(float num1, float num2)
- {
- return num1 / num2;
- }
- float (*sellect(char op))(float, float)
- {
- switch ('op')
- {
- case'+':return add;
- case'-':return sub;
- case'*':return mul;
- case'/':return chu;
- default:
- return 0;
- }
- }
- float calc(float(* fp)(float, float), float num1, float num2)
- {
- return (*fp)(num1, num2);//
- }
- int main(void)
- {
- float num1, num2;
- char op;
- float(*fp)(float,float);//定义了一个带两个浮点型的函数指针
- printf("请输入+-*/的算法式例如(3+5)\n");
- scanf("%f%c%f",&num1,&op,&num2);//输入
- fp = sellect(op);//如果这里直接fp=add等几个函数都是可以运行的,但是使用这个却会爆出这样一个错误;跳出0x00000000 处(位于 Project1.exe 中)引发的异常: 0xC0000005: 执行位置 0x00000000 时发生访问冲突
- printf("%f%c%f=%f", num1, op, num2,(*fp)(num1,num2));
- return 0;
- }
复制代码
这个地方我有过很多次尝试了,依旧会出现问题,代码出自小甲鱼的带你学c带你飞中的139面的整形改为了浮点型并增加乘除。https://fishc.com.cn/thread-77586-1-4.html这个网页上也有关于小甲鱼的代码
有所错误望指正
- float (*sellect(char op))(float, float)
- {
- switch ('op') // 这里有问题,你仔细看一看,看看能不能看出是什么问题
- {
- case'+':return add;
- case'-':return sub;
- case'*':return mul;
- case'/':return chu;
- default:
- return 0;
- }
- }
复制代码
|
|