首页 > 解决方案 > 加法 (+) 不想在 if/else 中运行

问题描述

#include <stdio.h>

int main(void)
{
    int a;
    scanf("%d", &a);
    for (int i = 0; ; i++)
    {
        char values[2];
        scanf("%c", &values[0]);
        scanf("%d", &values[1]);
        if (values[0] == '*')
        {
            a = a * values[1];
            printf(" = %d\n", a);
        }
        else if (values[0] == '+')
        {
            a = a + values[1];
            printf(" = %d\n", a);
        }
        else if (values[0] == '%')
        {
            a = a % values[1];
            break;
        }
    }
    printf("%d", a);
}

当我输入5 + 3 + 7 + 10 + 2 + 3 + 1 % 11时,它会显示5(因为5%11 = 5)。但是+手术没有成功。你能看出这里有什么问题吗?

标签: cloopsmath

解决方案


我认为values[2]你只需要两个变量,你可以使用两个不同的变量来完成你的工作。使用一个char类型变量和一个int类型变量,因为您需要这两个。您的代码中还有另一个问题,getchar()在循环内部使用 a 然后您的代码将正常工作,因为当您将整数值作为输入然后取一个字符值时,最后您输入转到该字符的新行为什么你的代码给出错误。

#include <stdio.h>

int main(void){

    int a;
    scanf("%d", &a);
    
    for (int i = 0; ; i++)
    {
        getchar();
        char ch;
        int value;
        scanf("%c", &ch);
        scanf("%d", &value);

        if (ch == '*')
        {
            a = a * value;
            printf(" = %d\n", a);
        }
        else if (ch == '+')
        {
            a = a + value;
            printf(" = %d\n", a);
        }
        else if (ch == '%')
        {
            a = a % value;
            break;
        }
        
    }
    printf("%d", a);   
}

推荐阅读