由于结构体可以将存在内在联系的不同数据类型结合为一个整体,所以结构体用处非常广泛,灵活使用结构体对于提高程序的结构体清晰性非常有好处。下面举几个例子来介绍结构体的用法。
【例题】统计选票
设计一个统计选票的程序:某次选举有3个候选人,参加投票人员有15人,设计一个程序实现将这15个人的选票中选中的候选人编号输入,统计出这3个人的票数。
算法分析:
将候选人的信息定义为一个结构体,该结构体中包括候选人编号、候选人票数等信息:
struct vote
{
char no[5];
int number;
};
定义一个vote型数组,数组个数为3,代表3个候选人的信息。
定义一个函数stat()进行票数统计,函数形参为vote型数组,结束main()函数传递的实参数组名。函数中使用一个循环输入15个投票人所选择的候选人编号:
如果输入的候选人编号为“1001”,第一个候选人加1票。
如果输入的候选人编号为“1002”,第二个候选人加1票。
如果输入的候选人编号为“1003”,第三个候选人加1票。
程序如下:
#include < stdio.h >
#include <string.h>
void stat(struct vote v[]);
struct vote /*定义选票结构体类型*/
{
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++) /*输出三个人的选票数*/
printf("%s %d\n",v[i].no,v[i].number);
}
void stat (struct vote v[]) /* 统计选票 */
{
int i,other=0;
char cno [5]; /*候选人编号*/
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++;
}
}
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>