c - 如何在C中使用带有字符的if语句

标签 c if-statement char calculator

这是我尝试用 C 语言构建的一个简单计算器的代码(我正在学习 C):

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

int main()
{
    char Operation;
    printf("Welcome to Double-Figure Calculator!\n\n");
    Sleep(1000);
    printf("What operation would you like to do? (+, -, *, /,) \n");
    Sleep(1000);
    scanf("%c\n\n", Operation);
    Sleep(1000);

    if (Operation == '+'){

        int FirstNumber;
        int SecondNumber;

            printf("Please enter your first number\n");
            scanf("%s\n\n", &FirstNumber);

            printf("Please enter your second number\n");
            scanf("%s\n\n", &SecondNumber);
            Sleep(1000);

            printf("Calculating");

            Sleep(1000);
            printf(".");

            Sleep(1000);
            printf(".");

            Sleep(1000);
            printf(".\n\n");

            printf("Your calculation is %d\n\n", FirstNumber + SecondNumber);

            system("Pause");

    }

    if (Operation == '-'){

        int OneFirstNumber;
        int OneSecondNumber;


        printf("Please enter your first number\n");
        scanf("%s\n\n", &OneFirstNumber);

        printf("Please enter your second number\n");
        scanf("%s\n\n", &OneSecondNumber);
        Sleep(1000);

        printf("Calculating");

        Sleep(1000);
        printf(".");

        Sleep(1000);
        printf(".");

        Sleep(1000);
        printf(".\n\n");

        printf("Your calculation is %d\n\n", OneFirstNumber - OneSecondNumber);

        system("Pause");

    }

    if (Operation == '*'){

        int TwoFirstNumber;
        int TwoSecondNumber;


        printf("Please enter your first number\n");
        scanf("%s\n\n", &TwoFirstNumber);

        printf("Please enter your second number\n");
        scanf("%s\n\n", &TwoSecondNumber);
        Sleep(1000);

        printf("Calculating");

        Sleep(1000);
        printf(".");

        Sleep(1000);
        printf(".");

        Sleep(1000);
        printf(".\n\n");

        printf("Your calculation is %d\n\n", TwoFirstNumber * TwoSecondNumber);

        system("Pause");

    }

    if (Operation == '/'){

        int ThreeFirstNumber;
        int ThreeSecondNumber;


        printf("Please enter your first number\n");
        scanf("%s\n\n", &ThreeFirstNumber);

        printf("Please enter your second number\n");
        scanf("%s\n\n", &ThreeSecondNumber);
        Sleep(1000);

        printf("Calculating");

        Sleep(1000);
        printf(".");

        Sleep(1000);
        printf(".");

        Sleep(1000);
        printf(".\n\n");

        printf("Your calculation is %d\n\n", ThreeFirstNumber / ThreeSecondNumber);

        system("Pause");

    }

    system("pause");
    return 0;

}

问题是每当我运行代码并输入一个操作(+、-、* 或/),然后按 Enter 键时,什么也没有发生,即使我有 if 语句来执行程序的其余部分。我不明白我在这里做错了什么。有什么帮助吗? (抱歉,我是编程新手,正处于学习 C 的早期阶段)。

最佳答案

您的代码中有一些可以改进的错误。

第一个,使用scanf时,必须传递变量地址来存储数据,例如:

scanf("%c", &Operation);

避免在 scanf 中使用“\n\n”,它告诉您希望从用户输入中返回一个字符和两个返回值。如果用户不这样做,您的代码将无法正常工作。

我注意到在大多数情况下,关于数据类型,您使用的 scanf 都是错误的。如果想用scanf从用户那里获取整数值,则必须使用相应的转换%d来获取整数值,例如:

scanf("%d\n", &secondNumber);

当您使用 %s 时,您表示您希望从用户输入中获得一个字符串,如果您将字符串存储到整数变量中,它可能会使您的代码崩溃。

还有一点与使用if语句切换用户的输入有关,最好使用switch-case语句,例如:

switch(operation) {
case '+':
    // do add operation
    break;
case '-': 
    // do sub operation
    break;
default:
    // return some error message.
}

在 switch-case 语句中,“默认”是在没有任何情况与您期望的情况不匹配时要执行的例程。

我认为这就是让代码正常工作所需要做的全部事情。

关于c - 如何在C中使用带有字符的if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445305/

相关文章:

c - C中递归函数的段错误

c - 如何将包含 32 位 asm 的 C 程序编译成 .o 文件?

mysql - 使用 IF … THEN … ELSE 在两个 SELECT 查询之间进行选择

php - 多个 foreach 与多个 if inside foreach

c - 类型定义问题

c - 使用字符输入执行 while 循环

c++ - 我是否应该在我的头文件中包含 <stdio.h>,这样我就可以声明一个接受 FILE* 的函数?

c - 按值调用传递数组

javascript - ELSE 语句中的函数也会与 IF 语句一起执行,如何防止这种情况发生?

C# Char.IsLetter() 无法正常工作