我們新手寫題時總能看到題目中類似這樣的輸入
沒有給固定多少個數據,我們沒有辦法直接設置數組的元素個數,很糾結,下面我來提供一下本人的方法(新手,看到有錯誤或者不好的地方歡迎大佬指出,糾正,謝謝)
#include<stdio.h>
int main()
{int arr[100];int i=0;while(arr[i]!=-1)//當數組元素不為-1{i++;scanf("%d",&arr[i]);}for(int k=1;k<i;k++){printf("arr[%d]=%d ",k,arr[k]);}return 0;
}
可以看到,當我們在-1后面繼續輸入元素,程序不會打印出來,這時候你們可能好奇這不是for循環限制了它輸出個數了嗎,那么我們把for循環改一下,改成i+5,我們再試一次
這是我們改成i+5后的輸出結果,在-1后面的數字都沒有被正常輸出,全是亂碼值,因為在while循環中,我們在結尾輸入arr【i】,假如rr【i】等于-1,那么這個循環就不會繼續進行,數組中也就不會保存你輸入-1之后輸出的值,當然-1還是被保存到數組中,不想在結果中有-1我們只需要讓k在循環中不等于i值就好。
上面用的while循環,同理,你懂用for,或者 do while也一樣可以實現
#include<stdio.h>
int main()
{int arr[100];int i=0;do{i++;scanf("%d",&arr[i]);}while(arr[i]!=-1);for(int k=1;k<i;k++){printf("arr[%d]=%d ",k,arr[k]);}return 0;
}
#include<stdio.h>
int main()
{int arr[10];int i=0;while(1){i++;scanf("%d",&arr[i]);if(arr[i]==-1)break;}for(int k=1;k<i;k++){printf("arr[%d]=%d ",k,arr[k]);}return 0;
}
這幾個代碼都是等效的