c - 函数中的scanf重复输入请求两次

标签 c function scanf

//Main Function of Calculator Project
int main (void)
{
        int input, result, result1, result2, result3, result4;

        printf ("===================================\n");
        printf ( "WELCOME TO THE CALCULATOR PROJECT\n");
        printf ("===================================\n\n");

        printf ("Option 1. ADDITION\n");
        printf ("Option 2. SUBTRACTION\n");
        printf ("Option 3. MULTIPLICATION\n");
        printf ("Option 4. DIVISION\n\n");

        printf ("Enter Option:>> ");
        scanf  ("%d", &input);

        switch (input)
        {
                case 1:
                        addition(result1);
                        printf ("Result: %d\n", addition(result1));
                        break;
                case 2:
                        subtraction(result2);
                        printf ("Result: %d\n", subtraction(result2));
                        break;
                case 3:
                        multiplication(result3);
                        printf ("Result: %d\n", multiplication(result3));
                        break;
                case 4:
                        division(result4);
                        printf ("Result: %d\n", division(result1));
                        break;
                default:
                        printf ("Invalid Input\n");
 }
           return 0;

}

当程序运行时,它会返回正确的计算结果,但无论运行什么用户函数,总是要求输入两次。

最佳答案

您正在调用要求输入并执行计算两次的函数:

case 1:
    addition(result1); // You first call it here
    printf ("Result: %d\n", addition(result1)); // You call it again here
    break;

您还传递了一个未初始化的变量作为参数。该变量应该用于保存返回值,而不是作为参数。

因此,您调用它一次,将结果分配给一个变量,然后打印该变量。

int result = -1;
case 1:
    result = addition();
    break;
case 2:
    result = subtraction();
    break;
case 3:
    result = multiplication();
    break;
case 4:
    result = division();
    break;
default:
    printf("Invalid input\n");
}
printf("Result: %d\n", result);

关于c - 函数中的scanf重复输入请求两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47323722/

相关文章:

php - 如何在 Windows 上为 php-src 生成 .sln

c++ - 在 Eclipse 中包含项目目录之外的 C++ 文件

c - C语言移动文件的方法

c - 请用 C 语言编写简单的随机字符串生成函数。给我看看你的艺术!

c - fgets() 没有打印第一行

c - 如何设置 NetBeans IDE pkg-config --cflags --libs gtk+-2.0?

javascript - 从对象调用函数

javascript - 如何在将来创建的元素上传递jquery函数事件

c - 读取字符数组

c++ - 是否为get_time定义了重复赋值?