jin6zheng3 2019-04-22 15:14 采纳率: 0%
浏览 1885

用c语言,实现多个数的四则运算,求大神帮帮忙。

1,如何判断优先级来进行多个数的四则运算。。
列如 2+2+2/2=5
2,使用printf scanf switch 和if语句。想了好久了。

  • 写回答

1条回答 默认 最新

  • _小丑_ 2019-04-22 15:57
    关注

    #include
    #include
    #include
    #include
    int scan()
    {
    char s[100];
    int i,t,z=0;
    do
    {
    z=0;
    gets(s);
    for(i=0;s[i]!='\0';i++)
    if(s[i]<'0' || s[i]>'9') break;
    if(i>=strlen(s))
    for(t=0;s[t]!='\0';t++)
    z=z*10+((int)s[t]-48);
    else
    printf("您的输入有误,请重新输入");
    }
    while(i<strlen(s));
    return(z);
    }
    int x=1,y=1,choice=0,sum=0,right=0,z=0,answer;
    float precent;
    char fuhao;
    void suiji()
    {
    srand(time(NULL));
    x=rand()%100+1;
    y=rand()%100+1;
    }
    void choose()
    {
    int yunsuan(int,int,int);
    if(sum==0) precent=0.0;
    else precent=(float)right/sum;
    printf("\n如需进行加减乘除运算测试,请分别输入1、2、3、4\n");
    printf("如需退出请输入5\n");
    choice=scan();
    switch(choice)
    {
    case 1:printf("加法运算测试系统,如需退出请输入9999\n");fuhao='+';break;
    case 2:printf("减法运算测试系统,如需退出请输入9999\n");fuhao='-';break;
    case 3:printf("乘法运算测试系统,如需退出请输入9999\n");fuhao='*';break;
    case 4:printf("除法运算测试系统,如需退出请输入9999\n");fuhao='/';break;
    case 5:printf("本次测试愉快,欢迎下次再来测试\n");
    printf("本次共做%d道题,其中%d道正确,正确率为%f\n",sum,right,precent);
    break;
    default:printf("您的输入有误,请重新输入\n");choose();
    }
    }
    int ans(int x,int y,int choice)
    {
    switch(choice)
    {
    case 1:z=x+y;break;
    case 2:z=x-y;break;
    case 3:z=x*y;break;
    case 4:z=x/y;break;
    }
    return(z);
    }
    void yunsuan()
    {
    suiji();
    printf("%d%c%d=",x,fuhao,y);
    z=ans(x,y,choice);
    answer=scan();
    if(z==answer)
    {
    printf("正确\n");
    right++;sum++;
    yunsuan();
    }
    else if(answer==9999) choose();
    else
    {
    printf("不正确, 正确答案为%5d\n",z);
    sum++;
    yunsuan();
    }
    }
    void main()
    {
    printf("欢迎来到四则运算测试系统\n");
    choose();
    while(choice!=5)
    yunsuan();
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog