加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在不使用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
总和应该包含30
acb应评估为b,它应包含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语句即可.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读