gpt4 book ai didi

c - 使用 while 循环进行减法

转载 作者:行者123 更新时间:2023-11-30 20:51:37 25 4
gpt4 key购买 nike

如何使用 while 循环进行减法?我可以做加法,但不能做减法,这是我的代码:

int V, RE=0;
char OP, R;
setlocale(LC_ALL, "Portuguese");
printf("Choose an operation (+Addition -Subtraction): ");
scanf("%c", &OP);

setbuf(stdin, NULL);
if (OP=='+') {
do{
printf("Type a value or -1 to exit: ");
scanf("%d", &V);
if (V!=+1)
RE = RE + V;
}while(V!=+1);
printf("Sum: %d \n", RE);
}
else if (OP=='-') {
do{
printf("Type a value or 0 to exit: ");
scanf("%d", &V);
if (V!=0)
RE = RE - V;
}while(V!=0);
printf("Result: %d \n", RE);
}
else if (OP=='*') {
}
else if (OP=='/') {
}
system("pause");

当我执行值为 20 和 10 的代码时,程序应该回答“10”,但程序却回答我 -30,我该如何解决这个问题?

最佳答案

问题是您将 RE 初始化为 0,这是错误的。 RE 应初始化为第一个值 20。如果您将 RE 初始化为 0,您期望什么?

RE = 0;
RE = RE - V; // V == 20 -> RE = 0 - 20 = -20;
RE = RE - V; // V == 10 -> RE = -20 - 10 = -30

如果你尝试这个,

printf("Type a value or press 0 to exit: ");    
scanf("%d", &RE);
if (RE != 0)
{
do {
printf("Type a value or press 0 to exit: ");
scanf("%d", &V);
if (V != 0)
RE = RE - V;
} while (V != 0);
printf("Result: %d \n", RE);
}

它会给你正确的结果。

此外,由于 0 是一个数字,退出循环的条件不太好,您应该检查 scanf() 的结果。

printf("Type a value or q to exit: ");    
if (scanf("%d", &RE) == 1)
{
int count;
do {
printf("Type a value or q to exit: ");
count = scanf("%d", &V);
if (count == 1)
RE = RE - V;
} while (count == 1);
printf("Result: %d \n", RE);
}

这将在任何非数字输入时退出,但我想你明白了。

同样,对于您的代码,如果输入无效输入,将会发生未定义的行为,因为您尝试读取的值可能不会被初始化。

注意:如果允许,您可以使用开关,例如

switch (OP)
{
case '+':
/* operate here */
break;
case '-':
/* operate here */
break;
case '*':
/* operate here */
break;
case '/':
/* operate here */
break;
}

关于c - 使用 while 循环进行减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28003242/

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