一 结构体数组
结构体数组是指数组的每个元素都是同一个结构体类型。
定义与初始化、访问与操作
-
Example:
c#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:
c//三个候选者,五个选民每人一张票 #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: