c用于计算表达式的程序

问题描述 投票:-4回答:1

我已经使这个程序计算像'2 + 6 - 9'这样的表达式(数字和运算符之间有空格),但最后一个if块不正确。如何在收到\ n时中断循环,如果没有则还存储输入。

#include <stdio.h>
#include<stdlib.h>

void main()
{
    char oper;
    int sum,y;
    scanf("%d %c",&sum,&oper);
    while(1)
    {
                scanf("%d",&y);

                if(oper=='+')
                        sum += y;
                else if(oper=='-')
                        sum -= y;
                else if(oper=='/')
                        sum /= y;
                else if(oper=='*')
                        sum += y;
                if((scanf("%c",&oper))=='\n')
                        break;
        }
        printf("\n =%d",sum);
}
c
1个回答
2
投票

the documentation for scanf

成功时,该函数返回成功填充的参数列表的项数。

替换这部分:

if((scanf("%c",&oper))=='\n')
    break;

有:

if(scanf("%c",&oper) && oper=='\n')
    break;

这个:

  • 检查scanf()是否对oper有任何价值
  • 如果是,则检查该值是否等于\n
© www.soinside.com 2019 - 2024. All rights reserved.