C语言while循环后,while循环之后的FOR 循环为什么运行不了?? 50
#include<stdio.h>#include<string.h>intmain(void){intarr[100];inti=0;while(scanf("%d",...
#include<stdio.h>
#include<string.h>
int main(void)
{
int arr[100];
int i=0;
while(scanf("%d",&arr[i++])!=EOF)
printf("%d ",arr[i-1]);
for(int j=0;j<=i;j++)
printf("%d",arr[j]);
return 0;
}
while循环执行完成后,后面的for循环不执行了 ,为什么,如何让while循环执行后,继续for循环, 比如 输入1 2 3 4; 输出 while循环1 2 3 4,再输出for循环 1 2 3 4 展开
#include<string.h>
int main(void)
{
int arr[100];
int i=0;
while(scanf("%d",&arr[i++])!=EOF)
printf("%d ",arr[i-1]);
for(int j=0;j<=i;j++)
printf("%d",arr[j]);
return 0;
}
while循环执行完成后,后面的for循环不执行了 ,为什么,如何让while循环执行后,继续for循环, 比如 输入1 2 3 4; 输出 while循环1 2 3 4,再输出for循环 1 2 3 4 展开
3个回答
展开全部
你可以把while循环那部分代码改一下:
int i=0, z = 0;
while((z = scanf("%d",&arr[i++]))!=EOF)
printf("[%d ][z:%d]",arr[i-1], z);
看一下scanf的返回值z到底是啥,然后你就知道为啥在里面死循环了。
scanf我用的不多,但判断scanf的返回值只能让你判断scanf这个函数是否执行成功并不能让你计数执行了多少次。
更多追问追答
追问
Z返回值一直是1;我就想知道如何while 循环完了 到后面运行for循环
追答
关键按照你的代码while循环结束不了吧....
你运行时难道不是一直让你不停的输入scanf吗?这不就是死循环吗?
如果z的值一直是1而EOF这个宏又不等于1,那while的执行条件不是每次都能成立,不就是死循环了么,怎么跳出循环去执行下一条for语句呢
展开全部
你需要在行首输入EOF字符来结束循环。Windows下的做法是:
在第一行输入数据1 2 3 4,按回车;
在第二行按Ctrl+Z输入一个^Z字符,按回车。
在第一行输入数据1 2 3 4,按回车;
在第二行按Ctrl+Z输入一个^Z字符,按回车。
追问
可以不要输入^z满足要求吗
追答
不可以,因为在命令行中,行数的^Z代表EOF字符,而while循环只以EOF作为结束标记。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
追问
为什么第二行要加个^Z才可以继续for循环,如何不需要继续输入^z,直接输入数组一次就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询