C語(yǔ)言 結(jié)構(gòu)體類型程序舉例
由于結(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++;
}
}
點(diǎn)擊加載更多評(píng)論>>