簡體   English   中英

在循環中使用scanf的程序打印不正確的輸出

[英]Program using scanf in a loop prints incorrect output

我不知道這段代碼是怎么回事。

#include<stdio.h>
int main()
   {
   int ii[5], i;
   for (i=1; i<=5; i++)
   {
      scanf("%d", &ii[i]);
   }
   printf("----------------------\n");  
   for(i=1; i<=5; i++)
   printf("%d\n", ii[i]);
   return 0;
   }

編譯后,當我提供輸入為

1 2 3 4 5

然后按原樣打印,但是當我以相反的順序提供輸入時:

5 4 3 2 1

它會繼續詢問最多一些數字,然后再從給定的輸入集中打印出一些隨機數字。

我怎樣才能解決這個問題?

c使用0 indexing ,這意味着數組索引從0開始而不是1。數組的for循環應如下所示:

int array[ARRAY_LENGTH], i;
for (i = 0; i < ARRAY_LENGTH; ++i) {

這將確保i0ARRAY_LENGTH - 1並且不會超出數組的范圍。

這些行:

for(i=1; i<=5; i++)
printf("%d\n", ii[i]);

將訪問ii元素5 ,其中最大索引為4。這將導致未定義行為 ,這很可能是您看到隨機數的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM