gpt4 book ai didi

c - printf 在 while 循环中发生两次?

转载 作者:行者123 更新时间:2023-11-30 20:03:53 29 4
gpt4 key购买 nike

所以我是编程的初学者,我想尝试制作一个基本的计算器,给出两个数字的总和或乘积。然而,在 while该程序的循环,第一个 printf似乎在循环的第一次迭代后打印两次。任何纠正此问题的帮助将不胜感激。

#include <stdio.h>
#include <string.h>

int multiply(int a, int b) {
return a * b;
}

void printMultiply(int x, int y) {
int result = multiply(x, y);
printf("\n%d\n", result);
}

int add(int a, int b) {
return a + b;
}

void printAdd(int x, int y) {
int result = add(x, y);
printf("\n%d\n", result);
}

int main() {
int product1 = 0;
int product2 = 0;

int sum1 = 0;
int sum2 = 0;

while (true) {
// this prints twice after first iteration?
printf("Would you like to add or multiply? (press a or m)\n");

char choice = ' ';
scanf("%c", &choice);

if (choice == 'm') {
printf("What two numbers would you like to multiply? (leave a space between numbers\n");
scanf("%d%d", &product1, &product2);
printMultiply(product1, product2);
} else
if (choice == 'a') {
printf("What two numbers would you like to add? (leave a space between numbers\n");

scanf("%d%d", &sum1, &sum2);
printAdd(sum1, sum2);
}
}
}

最佳答案

第一次迭代后,您会在第一次调用 scanf 时看到换行符 (\n)。

您需要做的就是在格式字符串中使用前导空格来消除所有空格:

scanf(" %c", &choice);

关于c - printf 在 while 循环中发生两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46268420/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com