#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
ä½ å¯ä»¥æwhile循ç¯é£é¨å代ç æ¹ä¸ä¸ï¼
int i=0, z = 0;çä¸ä¸scanfçè¿åå¼zå°åºæ¯å¥ï¼ç¶åä½ å°±ç¥é为å¥å¨éé¢æ»å¾ªç¯äºã
scanfæç¨çä¸å¤ï¼ä½å¤æscanfçè¿åå¼åªè½è®©ä½ å¤æscanfè¿ä¸ªå½æ°æ¯å¦æ§è¡æå并ä¸è½è®©ä½ 计æ°æ§è¡äºå¤å°æ¬¡ã
追é®Zè¿åå¼ä¸ç´æ¯1ï¼æå°±æ³ç¥éå¦ä½while 循ç¯å®äº å°åé¢è¿è¡for循ç¯
追çå
³é®æç
§ä½ ç代ç while循ç¯ç»æä¸äºå§....
ä½ è¿è¡æ¶é¾éä¸æ¯ä¸ç´è®©ä½ ä¸åçè¾å
¥scanfåï¼è¿ä¸å°±æ¯æ»å¾ªç¯åï¼
å¦æzçå¼ä¸ç´æ¯1èEOFè¿ä¸ªå®åä¸çäº1ï¼é£whileçæ§è¡æ¡ä»¶ä¸æ¯æ¯æ¬¡é½è½æç«ï¼ä¸å°±æ¯æ»å¾ªç¯äºä¹ï¼æä¹è·³åºå¾ªç¯å»æ§è¡ä¸ä¸æ¡forè¯å¥å¢
é£å¦ä½å¯ä»¥è®©æéæè¾å ¥ä»»æ个æ°åï¼while循ç¯å®æåï¼åfor循ç¯è¾åºå¢ï¼ï¼
追çé£è¦çä½ æ³ä»ä¹æ¶åç»æwhile循ç¯ï¼æç人æ³è¾å
¥4次å就跳åºå¾ªç¯ç¶åæ§è¡forï¼æäºäººæ³å½è¾å
¥çå符为10çæ¶åè·³åºå¾ªç¯æ§è¡forï¼æç人æ³å½içäº5çæ¶åè·³åºå¾ªç¯æ§è¡forã
whileä¸æ¯ä¸æ¡è¯å¥ï¼èæ¯ä¸ä¸ªå¾ªç¯ï¼ä»éè¦ä¸ä¸ªæ¡ä»¶æ¥åæ¢å¾ªç¯ã
ä½ çè¦æ±å¢ï¼
æçè¦æ±æ¯éæºè¾å ¥100个以å çæ°åå°±è¡ï¼å½ç¨æ·è¾å ¥4个 å°±while循ç¯4æ¬¡è·³åº è¿è¡for循ç¯ï¼å½ç¨æ·è¾å ¥10个ï¼å°±while循ç¯10次跳åºè¿è¡for循ç¯ï¼
追ç#include <stdio.h>ä½ ççè¿æ ·è¡ä¸è¡
ä¸é¢è¿ç§ä¼°è®¡ä¸è¡ï¼æä¼°è®¡ä½ è¿æ¯æ²¡æç½å¥æ¯å¾ªç¯
追é®è¿è¡ä¸å¯¹
追çä½ å¾åè¯ç¨åºä¸ä¸ªåºå®çæ¡ä»¶ï¼ä¸æ¯é ä½ çæ念å»åæ¢è¿ä¸ªwhile循ç¯ã
ä½ èåéæ³çè¾å
¥4个就åæ¢æè
è¾å
¥ç¬¬102个æ°åå°±åæ¢ï¼ä½ æä¹è®©ç¨åºè½çå°ä½ èåéå°åºæ³è¦è¾å
¥å¤å°ä¸ªåæ¢ï¼
å½ä½ å¨ç¨åºéè¾å ¥äº4个æ°åï¼å°±æ¯å¾ªç¯4次跳åºï¼å½ä½ å¨ç¨åºéè¾å ¥äº10个ï¼å°±æ¯å¾ªç¯10次跳åºï¼ä¸æ¯åºå®çï¼
追çè¿ä¸ªæ¯é»è¾æç»´é®é¢ï¼æç帮ä¸äºä½ ï¼æè§ä½ é»æ»è¡åäºã
å½ä½ è¾å
¥äº4个æ°åï¼çµèæä¹ç¥éä½ è¦ä¸è¦è¾å
¥ç¬¬5个æ°åï¼
ä½ è¯´è·³åºå¾ªç¯å°±è·³åºï¼ä½ ç»ä»æ令äºåï¼ä½ åç¨ä½ çèçµæ³¢æ§å¶ç¨åºåï¼
#include
int main(void)
{
int arr[100];
char ch;
int i=0;
do
{
scanf("%d",&arr[i++]);
}
while((ch=getchar())!='\n');
for(int j=0;j<i;j++)
printf("%d ",arr[j]);
return 0;
}
è¿æ ·å¯ä»¥äº ï¼è¿æ¯è°¢è°¢ï¼
è¿ä¹åä¸å®æä¹ä¸ä¹å¯ä»¥ï¼å车å¯ä»¥è®¤ä¸ºæ¯ä½ ç»çµèä¸çæ令ã
ä½æ¯ä½ è¦èèå°scanfä¸ä¸å®æ¯ç©ºæ ¼åºåçï¼ä¹å¯ä»¥æ¯å车åºåçï¼
可以不要输入^z满足要求吗
追答不可以,因为在命令行中,行数的^Z代表EOF字符,而while循环只以EOF作为结束标记。
为什么第二行要加个^Z才可以继续for循环,如何不需要继续输入^z,直接输入数组一次就行了
追答这是你写的:
scanf("%d",&arr[i++])!=EOF
决定的。
要不改成这样: