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
展开
 我来答
刀劈华山
2019-02-25 · TA获得超过2273个赞
知道小有建树答主
回答量:1338
采纳率:72%
帮助的人:390万
展开全部

你可以把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语句呢
GTA小鸡
高粉答主

2019-02-25 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
你需要在行首输入EOF字符来结束循环。Windows下的做法是:
在第一行输入数据1 2 3 4,按回车;
在第二行按Ctrl+Z输入一个^Z字符,按回车。
追问
可以不要输入^z满足要求吗
追答
不可以,因为在命令行中,行数的^Z代表EOF字符,而while循环只以EOF作为结束标记。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2019-02-25 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#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-1; j++)
    printf("%d\t",arr[j]);

  return 0;
}
追问
为什么第二行要加个^Z才可以继续for循环,如何不需要继续输入^z,直接输入数组一次就行了
追答

这是你写的:

scanf("%d",&arr[i++])!=EOF

决定的。

要不改成这样:

#include<stdio.h>
int main(void)
{ int i,arr[100];
  char c;
  while(scanf("%d%c",&arr[i++],&c),c==' ')
    printf("%d ",arr[i-1]);
  printf("%d\n",arr[i-1]);
  for(int j=0; j<i; j++)
    printf("%d\t",arr[j]);
  return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式