位置:首頁(yè) > 軟件操作教程 > 編程開發(fā) > C語(yǔ)言 > 問題詳情

C語(yǔ)言 結(jié)構(gòu)體類型程序舉例

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-02

    由于結(jié)構(gòu)體可以將存在內(nèi)在聯(lián)系的不同數(shù)據(jù)類型結(jié)合為一個(gè)整體,所以結(jié)構(gòu)體用處非常廣泛,靈活使用結(jié)構(gòu)體對(duì)于提高程序的結(jié)構(gòu)體清晰性非常有好處。下面舉幾個(gè)例子來(lái)介紹結(jié)構(gòu)體的用法。

【例題】統(tǒng)計(jì)選票

    設(shè)計(jì)一個(gè)統(tǒng)計(jì)選票的程序:某次選舉有3個(gè)候選人,參加投票人員有15人,設(shè)計(jì)一個(gè)程序?qū)崿F(xiàn)將這15個(gè)人的選票中選中的候選人編號(hào)輸入,統(tǒng)計(jì)出這3個(gè)人的票數(shù)。

算法分析:

將候選人的信息定義為一個(gè)結(jié)構(gòu)體,該結(jié)構(gòu)體中包括候選人編號(hào)、候選人票數(shù)等信息:

struct vote

{

    char no[5]; 

    int number;

};

定義一個(gè)vote型數(shù)組,數(shù)組個(gè)數(shù)為3,代表3個(gè)候選人的信息。

定義一個(gè)函數(shù)stat()進(jìn)行票數(shù)統(tǒng)計(jì),函數(shù)形參為vote型數(shù)組,結(jié)束main()函數(shù)傳遞的實(shí)參數(shù)組名。函數(shù)中使用一個(gè)循環(huán)輸入15個(gè)投票人所選擇的候選人編號(hào):

如果輸入的候選人編號(hào)為“1001”,第一個(gè)候選人加1票。

如果輸入的候選人編號(hào)為“1002”,第二個(gè)候選人加1票。

如果輸入的候選人編號(hào)為“1003”,第三個(gè)候選人加1票。

程序如下:

#include < stdio.h >

#include <string.h>

void stat(struct vote v[]);

struct vote       /*定義選票結(jié)構(gòu)體類型*/

{

    char no[5]; 

    int number;

};


main()

{

    int i;

    struct vote v[3]={{"1001",0},{"1002",0},{"1003",0}}; 

    stat(v);

    for(i=0;i<3; i++)            /*輸出三個(gè)人的選票數(shù)*/

        printf("%s %d\n",v[i].no,v[i].number);

}

void stat (struct vote v[])    /* 統(tǒng)計(jì)選票 */

{

    int i,other=0;

    char cno [5];            /*候選人編號(hào)*/

    for (i=l; i<=15;i++)

    {

        printf("please input the no of candidate :\n");

        scanf("%s",cno); 

        if(strcmp(cno,"1001")==0) 

            v[0].number++;

        else if(strcmp(cno,"1002")==0) 

            v[1].number++; 

        else if(strcmp(cno,"1003")==0)

            v[2].number++;

        else

            other++;

    }

}

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部