日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

C語言的數(shù)組的構(gòu)建與打印

 

在許多程序中,數(shù)組很重要。數(shù)組可以作為一種存儲(chǔ)多個(gè)相關(guān)項(xiàng)的便利方式。

數(shù)組(array)是按順序存儲(chǔ)的一系列類型相同的值,如10個(gè)char類型的字符或15個(gè)int類型的值。整個(gè)數(shù)組有一個(gè)數(shù)組名,通過整數(shù)下標(biāo)訪問數(shù)組中單獨(dú)的項(xiàng)或元素(element)。例如,以下聲明:

float debs[20];

聲明debts是一個(gè)內(nèi)含20個(gè)元素的數(shù)組,每個(gè)元素都可以存儲(chǔ)float類型的值。數(shù)組的第1個(gè)元素是debts[0],第2個(gè)元素是debts[1],以此類推,直到debts[19]。注意,數(shù)組元素的編號(hào)從0開始,不是從1開始。可以給每個(gè)元素賦float類型的值。例如,可以這樣寫:

debts[5] = 32.54;
debts[6] = 1.2e+21

實(shí)際上,使用數(shù)組元素和使用同類型的變量一樣。例如,可以這樣把值讀入指定的元素中:

scanf("%f", &debts[4]); //

這里要注意一個(gè)潛在的陷阱:考慮到影響執(zhí)行的速度,C編譯器不會(huì)檢查數(shù)組的下標(biāo)是否正確。下面的代碼,都不正確:

debts[20] = 88.32;   // no such array element
debts[33] = 828.12;  // no such array element

編譯器不會(huì)查找這樣的錯(cuò)誤。當(dāng)運(yùn)行程序時(shí),這會(huì)導(dǎo)致數(shù)據(jù)被放置在已被其他數(shù)據(jù)占用的地方,可能會(huì)破壞程序的結(jié)果甚至導(dǎo)致程序異常中斷。

數(shù)組的類型可以是任意數(shù)據(jù)類型。

int nannies[22];   /* an array to hold 22 integers        */
char actors[26];   /* an array to hold 26 characters      */
long big[500];     /* an array to hold 500 long integers  */

字符串

字符串,可以把字符串存儲(chǔ)在char類型的數(shù)組中(一般而言,char類型數(shù)組的所有元素都存儲(chǔ)char類型的值)。如果char類型的數(shù)組末尾包含一個(gè)表示字符串末尾的空字符,則該數(shù)組中的內(nèi)容就構(gòu)成了一個(gè)字符串。

C語言的數(shù)組的構(gòu)建與打印

Character arrays and strings.

用于識(shí)別數(shù)組元素的數(shù)字被稱為下標(biāo)(subscript)、索引(indice)或偏移量(offset)。下標(biāo)必須是整數(shù),而且要從0開始計(jì)數(shù)。數(shù)組的元素被依次存儲(chǔ)在內(nèi)存中相鄰的位置,如圖6.7所示。

C語言的數(shù)組的構(gòu)建與打印

The char and int arrays in memory

在for循環(huán)中使用數(shù)組

程序中有許多地方要用到數(shù)組,程序清單6.19是一個(gè)較為簡(jiǎn)單的例子。該程序讀取10個(gè)高爾夫分?jǐn)?shù),稍后進(jìn)行處理。使用數(shù)組,就不用創(chuàng)建10個(gè)不同的變量來存儲(chǔ)10個(gè)高爾夫分?jǐn)?shù)。而且,還可以用for循環(huán)來讀取數(shù)據(jù)。程序打印總分、平均分、差點(diǎn)(handicap,它是平均分與標(biāo)準(zhǔn)分的差值)。

// scores_in.c -- uses loops for array processing
#include <stdio.h>
#define SIZE 10
#define PAR 72
int main(void)
{
    int index, score[SIZE];
    int sum = 0;
    float average;

    printf("Enter %d golf scores:n", SIZE);
    for (index = 0; index < SIZE; index++)
        scanf("%d", &score[index]);  // read in the ten scores
    printf("The scores read in are as follows:n");
    for (index = 0; index < SIZE; index++)
        printf("%5d", score[index]); // verify input
    printf("n");
    for (index = 0; index < SIZE; index++)
        sum += score[index];         // add them up
    average = (float) sum / SIZE;    // time-honored method
    printf("Sum of scores = %d, average = %.2fn", sum, average);
    printf("That's a handicap of %.0f.n", average - PAR);

    return 0;
}

先看看程序清單6.19是否能正常工作,接下來再做一些解釋。下面是程序的輸出:

Enter 10 golf scores:

99 95 109 105 100

96 98 93 99 97 98

The scores read in are as follows:

99 95 109 105 100 96 98 93 99 97

Sum of scores = 991, average = 99.10

That's a handicap of 27.

程序運(yùn)行沒問題,我們來仔細(xì)分析一下。首先,注意程序示例雖然輸入了11個(gè)數(shù)字,但是只讀入了10個(gè)數(shù)字,因?yàn)檠h(huán)只讀了10個(gè)值。由于scanf()會(huì)跳過空白字符,所以可以在一行輸入10個(gè)數(shù)字,也可以每行只輸入一個(gè)數(shù)字,或者像本例這樣混合使用空格和換行符隔開每個(gè)數(shù)字(因?yàn)檩斎胧蔷彌_的,只有當(dāng)用戶鍵入Enter鍵后數(shù)字才會(huì)被發(fā)送給程序)。

然后,程序使用數(shù)組和循環(huán)處理數(shù)據(jù),這比使用10個(gè)單獨(dú)的scanf()語句和10個(gè)單獨(dú)的printf()語句讀取10個(gè)分?jǐn)?shù)方便得多。for循環(huán)提供了一個(gè)簡(jiǎn)單直接的方法來使用數(shù)組下標(biāo)。注意,int類型數(shù)組元素的用法與int類型變量的用法類似。要讀取int類型變量fue,應(yīng)這樣寫:scanf("%d", &fue)。要讀取int類型的元素score[index],所以這樣寫scanf("%d", &score[index])。

編程風(fēng)格

該程序示例演示了一些較好的編程風(fēng)格。

第一,用#define指令創(chuàng)建的明示常量(SIZE)來指定數(shù)組的大小。這樣就可以在定義數(shù)組和設(shè)置循環(huán)邊界時(shí)使用該明示常量。如果以后要擴(kuò)展程序處理20個(gè)分?jǐn)?shù),只需簡(jiǎn)單地把SIZE重新定義為20即可,不用逐一修改程序中使用了數(shù)組大小的每一處。

第二,下面的代碼可以很方便地處理一個(gè)大小為SIZE的數(shù)組:

for (index = 0; index < SIZE; index++)

第三,程序能重復(fù)顯示剛讀入的數(shù)據(jù)。這是很好的編程習(xí)慣,有助于確保程序處理的數(shù)據(jù)與期望相符。

最后,注意該程序使用了3個(gè)獨(dú)立的for循環(huán)。這是否必要?是否可以將其合并成一個(gè)循環(huán)?當(dāng)然可以,讀者可以動(dòng)手試試,合并后的程序顯得更加緊湊。但是,調(diào)整時(shí)要注意遵循模塊化(modularity)的原則。

模塊化隱含的思想是:應(yīng)該把程序劃分為一些獨(dú)立的單元,每個(gè)單元執(zhí)行一個(gè)任務(wù)。這樣做提高了程序的可讀性。也許更重要的是,模塊化使程序的不同部分彼此獨(dú)立,方便后續(xù)更新或修改程序。在掌握如何使用函數(shù)后,可以把每個(gè)執(zhí)行任務(wù)的單元放進(jìn)函數(shù)中,提高程序的模塊化。

分享到:
標(biāo)簽:數(shù)組 語言
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定