私はプログラミングの初心者であり、2つの数字の和または積を与える基本的な電卓を試してみようと考えていました。しかし、このプログラムのwhile
ループでは、最初のprintf
はループの最初の繰り返しの後に2回印刷されているようです。これを是正する助けがあれば幸いです。printfはwhileループで2回発生しますか?
#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); ' – ryyker