题目:有三个候选人,有十个选民,每个只能投票一人,要求编一个统计投票的程序,先后输入被选人的名字,最后输出个人得票结果。
说再多还是代码一步步解释更好:
第一步:首先定义结构体数组:
//定义结构体数组,并初始化三名候选人和票数 struct person { char name[20]; int count; }arry[3]={"李华",0,"小明",0,"小红",0};
第二步:声明:
int i,j; char arry_name[20];//用来接收输入的数据
第三步:输入:
for(i=1;i<=10;i++) { printf("请投票:"); scanf("%s",&arry_name); //输入被投人的名字 }
第四步:计数:
for(j=0;j<3;j++) { //利用拷贝函数strcmp,将arry[j].name分别复制进arry_name中,进行判断 if(strcmp(arry_name,arry[j].name)==0) { //判断为真票数加一 arry[j].count++; } }
第五步:把输入和计数同时进行:
for(i=1;i<=10;i++) { printf("请投票:"); scanf("%s",&arry_name); //输入的同时进行比较计数 for(j=0;j<3;j++) { if(strcmp(arry_name,arry[j].name)==0) { arry[j].count++; } } printf("\n"); }
第六步:最后输出:
printf("结果为:\n"); for(j=0;j<3;j++) { printf("姓名:%s,票数:%d\n",arry[j].name,arry[j].count); }
分步分析是不是简单多了,现在就写出完整的代码:
#include<stdio.h> #include<string.h> struct person { char name[20]; int count; }arry[3]={"李华",0,"小明",0,"小红",0}; int main() { int i,j; char arry_name[20]; for(i=1;i<=10;i++) { printf("请投票:"); scanf("%s",&arry_name); for(j=0;j<3;j++) { if(strcmp(arry_name,arry[j].name)==0) { arry[j].count++; } } printf("\n"); } printf("结果为:\n"); for(j=0;j<3;j++) { printf("姓名:%s,票数:%d\n",arry[j].name,arry[j].count); } printf("\n"); return 0; }
运行结果: