在C中执行While循环
我知道这可能是一个非常简单的问题,但我问过一些有经验的人,他们不知道为什么。这只是一个简单的do-while循环,实际上直接出自《C语言初学者指南》。当它运行时,您键入在C中执行While循环,c,C,我知道这可能是一个非常简单的问题,但我问过一些有经验的人,他们不知道为什么。这只是一个简单的do-while循环,实际上直接出自《C语言初学者指南》。当它运行时,您键入n以输入更多数字,它将继续运行。如何让它退出循环?我在Mac上使用XCode,它使用C #include <stdio.h> int main() { float num1, num2, result; char choice; do { num1 = num2 = result = 0; print
n
以输入更多数字,它将继续运行。如何让它退出循环?我在Mac上使用XCode,它使用C
#include <stdio.h>
int main() {
float num1, num2, result;
char choice;
do {
num1 = num2 = result = 0;
printf("first number?\n");
scanf(" %f", &num1);
printf("second number?\n");
scanf(" %f", &num2);
result = num1*num2;
printf("ans = %.0f\n", result);
printf("do you want to enter another pair of numbers? (Y/N)\n");
scanf(" %c", &choice);
} while (choice != 'N' && choice != '\n');
return 0;
}
#包括
int main(){
浮点num1,num2,结果;
字符选择;
做{
num1=num2=result=0;
printf(“第一个数字?\n”);
scanf(“%f”和num1);
printf(“第二个数字?\n”);
scanf(“%f”&num2);
结果=num1*num2;
printf(“ans=%.0f\n”,结果);
printf(“是否要输入另一对数字?(Y/N)\N”);
scanf(“%c”,选择(&c));
}while(choice!='N'&&choice!='\N');
返回0;
}
应该是
scanf("%f", &num1);
并检查scanf()的返回值
当您输入N
或\N
时,您应该能够在此之后退出循环如果您输入N('N'
)或输入('\N'
),它将停止运行。如果您不想再输入小写的n('n'
),您应该写:
while (choice != 'N' && choice != 'n' && choice != '\n');
你犯的错误是关于scanf
语句的。程序的运行代码如下所示:
#include <stdio.h>
int main() {
float num1, num2, result;
char choice;
do {
num1 = num2 = result = 0;
printf("first number?\n");
scanf("%f", &num1);
printf("second number?\n");
scanf("%f", &num2);
result = num1*num2;
printf("ans = %.0f\n", result);
printf("do you want to enter another pair of numbers? (Y/N)\n");
scanf("%c", &choice);
} while (choice != 'N' && choice != 'n');
return 0;
}
#包括
int main(){
浮点num1,num2,结果;
字符选择;
做{
num1=num2=result=0;
printf(“第一个数字?\n”);
scanf(“%f”和num1);
printf(“第二个数字?\n”);
scanf(“%f”&num2);
结果=num1*num2;
printf(“ans=%.0f\n”,结果);
printf(“是否要输入另一对数字?(Y/N)\N”);
scanf(“%c”,选择(&c));
}while(choice!=“N”&&choice!=“N”);
返回0;
}
您犯了一个极其严重的错误,没有检查I/O函数的返回值(scanf
,printf
)。如果不检查返回值,您将无法在编程中取得任何进展。抱歉,我不确定您的意思。。。我没有检查什么返回值?我应该如何改进它?请阅读scanf
的手册。看看它返回了什么,以及在给定其返回值的情况下,您可以对其效果做出哪些假设。明白了。它的工作现在要感谢对scanf(“%f”和&num1)的更改代码>不是必需的。无论空间大小,两个scanf
都执行相同的操作。删除choice!='\n'
因为这永远都不会是真的。为什么答案是-1?请访问stackoverflow.com,告诉我你在我的回答上加-1的原因不是我的反对票,但很可能是你说的与其他两个答案没有什么不同,但你在其他两个答案一个半小时后提交了答案。您还没有对所做的更改给出非常详细的解释。压痕也有点不稳定。
while (choice != 'N' && choice != 'n' && choice != '\n');
#include <stdio.h>
int main() {
float num1, num2, result;
char choice;
do {
num1 = num2 = result = 0;
printf("first number?\n");
scanf("%f", &num1);
printf("second number?\n");
scanf("%f", &num2);
result = num1*num2;
printf("ans = %.0f\n", result);
printf("do you want to enter another pair of numbers? (Y/N)\n");
scanf("%c", &choice);
} while (choice != 'N' && choice != 'n');
return 0;
}