基本C编程\u while\u运行时错误
作为一名初学者,我目前在OSX上学习使用Sublime文本编程。 所附的代码是通过升华文本编译的。 运行时错误是,当我输入任何非整数数据(如“a”或“9.3”)时,while循环不会中断 以下是工作说明:基本C编程\u while\u运行时错误,c,C,作为一名初学者,我目前在OSX上学习使用Sublime文本编程。 所附的代码是通过升华文本编译的。 运行时错误是,当我输入任何非整数数据(如“a”或“9.3”)时,while循环不会中断 以下是工作说明:仅使用main()函数测试一个程序,该函数重复执行:1。请求用户输入一个整数,2。读取一个整数,3。按如下方式处理整数:返回以终止0的程序,打印1的“1”,打印2的“2”,打印任何其他整数的“我不知道”例如,在用户输入整数的终端上可能出现以下序列:请输入一个整数22请输入一个整数33我不知道请输
仅使用main()函数测试一个程序,该函数重复执行:
1。请求用户输入一个整数,
2。读取一个整数,
3。按如下方式处理整数:返回以终止0的程序,打印1的“1”,打印2的“2”,打印任何其他整数的“我不知道”
例如,在用户输入整数的终端上可能出现以下序列:
请输入一个整数
2
2
请输入一个整数
33
我不知道
请输入一个整数
1
一个请输入一个整数
0
下面是我的代码。 谢谢你的帮助。
#包括
int main(){
int n;
INTA=1;
while(a!=0){
printf(“请输入一个整数\n”);
scanf(“%d”和“&n”);
如果(n==1)printf(“一\n”);
如果(n==2)printf(“两个\n”);
如果(n==0),则返回0;
否则,如果(n2)printf(“我不知道”\n);
}
}
我建议使用开关
语句,而不是使用if
else
如果您只需要使用If
else
,请包含另一个else
语句
else
exit(0);
您的程序在这种情况下终止。您的循环从未终止,因为您从未告诉它终止。只要
a!=0
。您将a
初始化为1,并且从不更改它,因此自然会有一个无限循环
您也没有检查scanf
是否成功。如果您输入了一些垃圾值,它将保留以前的值n
,并返回一个结果,表明无法读取新值,但您的程序无法区分成功与失败
scanf
返回一个int
结果,指示它能够读取多少项(或者EOF
,如果有错误,则为负值)。您至少应该将该值与1
进行比较,以查看它是否成功
似乎您打算使用a
来确定循环是否应继续执行。你应该给它起个更有意义的名字,比如继续
。您可以将其设置为bool
(如果您有#include
,如果您的编译器支持它),但是使用int
和0
表示false,使用1
表示true也可以
int keep_going = 1;
while (keep_going) {
/* ... */
if (...) {
keep_going = 0;
}
}
或者,您可以编写一个无限循环,并使用break
终止它:
while (1) {
/* ... */
if (...) {
break;
}
}
#包括
int main(int argc,字符**argv)
{
int-looper=1;
while(活套){
printf(“请输入一个整数:\n”);
int i;
scanf(“%d”、&i);
如果(i==0){
活套=0;
}
else如果(i==1){
printf(“一个\n”);
}
else如果(i==2){
printf(“两个”);
}
否则{
printf(“我不知道”\n);
}
}
返回0;
}
您是否可以添加否则中断代码>?Hello World确实有效。前几天我参考了这个链接。在我的机器上运行良好(GNU GCC编译器)。@green_claws Thenelse a=0
也应该这样做。@ElliottFrisch这确实是一个解决方案。谢谢这是一个解决方案。请不要使用像“u”和“ur”这样愚蠢的缩写。拼写“你”和“你的”这两个词会使你的答案更容易阅读。谢谢。在C语言中,如何使scanf告诉数据输入的类型,整数、浮点或字符?您需要阅读scanf
的文档,如果您的系统有手册页,可以通过运行man scanf
)或scanf
格式字符串与printf
格式字符串相似(但不完全相同);它们实际上是一种小型专用语言中的小型程序。terminator
对于告诉循环不要终止的变量来说是个糟糕的名字<代码>终止符=0代码>将比终止符-=1更清晰代码>。很公平!竖起大拇指,我修改了这件作品。
while (1) {
/* ... */
if (...) {
break;
}
}
#include <stdio.h>
int main(int argc, char **argv)
{
int looper = 1;
while(looper){
printf("Please enter an integer:\n");
int i;
scanf("%d", &i);
if(i==0){
looper = 0;
}
else if(i==1){
printf("one\n");
}
else if(i==2){
printf("two\n");
}
else{
printf("I don't know that\n");
}
}
return 0;
}