在程序裡如何存儲10個學生的數學、語文、英語成績?定義30個整型變量嗎?這也太麻煩了,而學習了數組後就變的簡單多了,這裡我們先從最簡單的數組學起。
定義一個整型變量可以這樣寫 int a;
定義一個整型數組可以這樣寫 int a[3]; 中括號就是數組的標識,這裡定義了一個長度為3的數組其實就相當於定義了3個變量。
那每個變量在程序裡怎麼表示呢?c語言裡用編號的形式來表示數組裡的每一個變量,注意編號是從0開始的,這個a數組裡就有編號為0,1,2的變量,再比如char b[5]那b數組裡就有編號為0,1,2,3,4的變量,記住永遠沒有編號為數組長度的變量,例如 float c[10]數組的長度為10,那在c數組裡就沒有編號為10的變量,編號從0到9正好10個數。
雖然我們能一次定義一組變量,給我們帶來了方便,但你在編程中卻還需要一個一個地操作每個變量,這就需要我們可以利用編號來操作數組裡的變量,請看下面的代碼。
int a[3];
a[1]=20;//把整數20存放到數組內編號為1的變量裡
scanf("%d",&a[0]);//從鍵盤輸入一個整數存放到數組內編號為0的變量裡
printf("%d ",a[2]);//把數組內編號為2的變量裡的值輸出
你懂了嗎,其實我們原來操作的是一個變量,現在操作的還是一個變量,只不過數組裡的變量沒有自己的變量名,而是通過用數組名加上編號的形式來表示。
下面的代碼用來描述從鍵盤輸入10個學生的數學成績並保存到數組裡
float a[10];//用來存儲10個學生的數學成績
scanf("%d",&a[0]);
scanf("%d",&a[1]);
scanf("%d",&a[2]);
......
scanf("%d",&a[9]);
現在我告訴你數組編號的位置可以是變量,例如 int i=2;a[i]當然就代表a數組裡編號為2的變量,怎麼樣你可以用循環來簡化上面的代碼嗎?
數組練習:某雜誌社組織了一次讀者短信活動,選出了10個手機號碼作為中獎讀者,用戶從鍵盤輸入自己的手機號碼查詢是否中獎。
第一步:我們得把這10個手機號碼存儲到我們的程序中,整數數組正好能夠滿足我們的要求。
int a[10]={15112345678,13012345678,13112345678,13012345678,13011111111,13822222222,18000000000,13522222222,15122222222,18922222222};
這樣a數組中存儲了本次中獎的10個手機號碼
第二步:就是要求用戶從鍵盤輸入自己的手機號碼
int no;//存儲用戶從鍵盤輸入的手機號碼
printf("感謝廣大讀者對本次活動的參與,請輸入您的手機號查詢是否中獎:\n");
scanf("%d",&no);
第三步:我們就是用no與數組中的手機號碼挨個比較找到了就是中獎,沒找到就是沒中獎。
if(no==a[0] no==a[1] no==a[2] no==a[3] no==a[4] no==a[5] no==a[6] no==a[7] no==a[8] no==a[9])
{
printf("恭喜你中獎了,請到指定地點領取獎品!\n");
}
else
{
printf("謝謝參與\n");
}
完整代碼如下:
main()
{
//a數組中存儲了本次中獎的10個手機號碼
int a[10]={15112345678,13012345678,13112345678,13012345678,13011111111,13822222222,18000000000,13522222222,15122222222,18922222222};
int no;//存儲用戶從鍵盤輸入的手機號碼
printf("感謝廣大讀者對本次活動的參與,請輸入您的手機號查詢是否中獎:\n");
scanf("%d",&no);
if(no==a[0] no==a[1] no==a[2] no==a[3] no==a[4] no==a[5] no==a[6] no==a[7] no==a[8] no==a[9])
{
printf("恭喜你中獎了,請到指定地點領取獎品!\n");
}
else
{
printf("謝謝參與\n");
}
}
這個程序沒問題,但是第三步上對於10個手機號碼還能寫的過來,如果是100個手機號碼呢,所以我們可以用循環改進一下
main()
{
//a數組中存儲了本次中獎的10個手機號碼
int a[10]={15112345678,13012345678,13112345678,13012345678,13011111111,13822222222,18000000000,13522222222,15122222222,18922222222};
int i;//用來控制循環,同時表示數組下標
int no;//存儲用戶從鍵盤輸入的手機號碼
printf("感謝廣大讀者對本次活動的參與,請輸入您的手機號查詢是否中獎:\n");
scanf("%d",&no);
//利用循環挨個訪問數組裡的元素,如果數組裡的第i個元素與用戶輸入的手機號碼相同說明此手機號碼中獎
for(i=0;i<10;i++)
{
if(no==a[i])
{
printf("恭喜你中獎了,請到指定地點領取獎品!\n");
break;//既然找到了就不用再繼續找了,直接退出循環。
}
}
}
以上的代碼只能夠輸出中獎的情況,如果輸入沒中獎的手機號程序就沒有輸出,給你們留個練習看看需要加什麼代碼才能判斷未中獎並輸出謝謝參與,現在是輸入未中獎的手機號碼程序沒有輸出直接結束了,如下圖。
c語言入門 (共30篇) 上一篇:退出循環break 下一篇:字符串初探