[英]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) {
這將確保i
從0
到ARRAY_LENGTH - 1
並且不會超出數組的范圍。
這些行:
for(i=1; i<=5; i++)
printf("%d\n", ii[i]);
將訪問ii
元素5
,其中最大索引為4。這將導致未定義行為 ,這很可能是您看到隨機數的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.