【发布时间】:2017-09-17 20:11:27
【问题描述】:
所以我是编程的初学者,我想我会尝试制作一个基本的计算器,它可以给出两个数字的总和或乘积。然而,在这个程序的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 中点击了换行符,因为它不属于您循环的已知选择。
-
scanf(...)正在对看不见的返回字符做出反应。尝试在格式字符串前面放置一个空格字符以使用return(newline) 字符:scanf(" %c", &choice);