在不使用switch case的情况下将字符转换为算术运算符,即将”转换
发布时间:2020-12-16 10:09:10 所属栏目:百科 来源:网络整理
导读:void main(){ char c; int op; int a=10,b=20,sum; scanf("%c",c); if(c=='+') op=1; else if(c=='-') op=2; else if(c=='*') op=3; switch(op)//here i used switch but i don't want to use it { case 1: sum=a+b; break; case 2: sum=a-b; break; case 3:
void main() { char c; int op; int a=10,b=20,sum; scanf("%c",&c); if(c=='+') op=1; else if(c=='-') op=2; else if(c=='*') op=3; switch(op)//here i used switch but i don't want to use it { case 1: sum=a+b; break; case 2: sum=a-b; break; case 3: sum=a*b; break; } printf("%d",sum); } 当c包含c时,输出应为30 解决方法
我不是说这是一种很好的做事方式,但你可能会有这样的事情:
#include <assert.h> #include <stdio.h> #include <stdlib.h> typedef int (*fn)(int,int); int add(int a,int b) { return a + b; } int subtract(int a,int b) { return a - b; } int main(void) { int a = 10,b = 20,sum; char c; fn f[256] = {NULL}; f['+'] = add; f['-'] = subtract; // etc scanf("%c",&c); fn fn = f[(int)c]; assert(fn != NULL); sum = fn(a,b); printf("%dn",sum); return EXIT_SUCCESS; } 但实际上,只需使用switch语句即可. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |