C61-结构体数组
一 结构体数组
结构体数组是指数组的每个元素都是同一个结构体类型。
定义与初始化、访问与操作
-
Example:
#include <stdio.h> #include <string.h>struct Student {char name[32];int StudentNumber;char sex[4];int age;float score;char address[32]; }; int main() {//声明与初始化结构体数组struct Student students[3]={{"Tony",20251911,"男",19,94.7,"云南"},{"Michle",20251931,"男",19,95.8,"湖南"},{"Jane",20251945,"女",18,94.9,"北京"}}; //遍历结构体数组int len;len=sizeof(students)/sizeof(students[0]);for(int i=0;i<len;i++){printf("姓名:%s, 学号:%d, 性别:%s, 年龄:%d, 分数:%f, 籍贯: %s\n\n",students[i].name,students[i].StudentNumber,students[i].sex,students[i].age,students[i].score,students[i].address);}//修改某项信息students[2].score=100;//修改测试printf("姓名:%s, 学号:%d, 性别:%s, 年龄:%d, 分数:%f, 籍贯: %s\n\n",students[2].name,students[2].StudentNumber,students[2].sex,students[2].age,students[2].score,students[2].address);return 0; }
-
Show:
二 mini项目-选票系统
-
Example:
//三个候选者,五个选民每人一张票 #include <stdio.h> #include <string.h>struct Candidate {char name[32];int votes; }; int main() {//声明结构体数组struct Candidate candidates[3]; //candidates:候选者们struct Candidate electee; //electee:当选者//相关数据定义int AbandonedTickets=0; //计数弃票char TempName[32]; //用于临时存放选民的意向人名字//初始化选民信息int i;int j;int mark;int len=sizeof(candidates)/sizeof(candidates[0]);for(i=0;i<len;i++){candidates[i].votes=0;printf("请输入第%d个候选者的名字:\n",i+1);scanf("%s",candidates[i].name);}//唱票环节for(i=0;i<5;i++){ mark=0; memset(TempName,'\0',sizeof(TempName)); //清空临时存放,避免后期比对错误printf("请问你把票投给谁:\n");scanf("%s",TempName);for (j= 0; j<len;j++){if (strcmp(TempName,candidates[j].name)==0){candidates[j].votes++;mark=1;// 找到匹配后可提前退出内层循环,优化效率break;}}// 修复:将弃票判断移至内层循环外,确保检查所有候选人后再判断if (mark==0){printf("不存在此候选人,意味着你弃票!\n");AbandonedTickets++;} }//结果公示for(i=0;i<len;i++){printf("名字:%s,票数:%d\n",candidates[i].name,candidates[i].votes);}printf("\n");electee=candidates[0];for (i=0; i<len;i++){if (electee.votes < candidates[i].votes){electee = candidates[i];}}printf("%s以%d票当选,弃票为%d",electee.name,electee.votes,AbandonedTickets);return 0; }
-
Show:
-
Error reporting&Summary:

