C61-结构体数组

一 结构体数组

结构体数组是指数组的每个元素都是同一个结构体类型

定义与初始化、访问与操作
  • 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:

相关推荐
Felicity_Gao1 小时前
uni-app VOD 与 COS 选型、开发笔记
前端·笔记·uni-app
m0_748240251 小时前
Windows编程+使用C++编写EXE加壳程序
开发语言·c++·windows
兮兮能吃能睡2 小时前
R语言模型分析(一)(1)
开发语言·r语言
wuk9984 小时前
基于有限差分法的二维平面热传导模型MATLAB实现
开发语言·matlab·平面
崎岖Qiu4 小时前
【设计模式笔记06】:单一职责原则
java·笔记·设计模式·单一职责原则
前端炒粉5 小时前
18.矩阵置零(原地算法)
javascript·线性代数·算法·矩阵
im_AMBER5 小时前
数据结构 09 二叉树作业
数据结构·笔记·学习
初见无风6 小时前
2.5 Lua代码中string类型常用API
开发语言·lua·lua5.4
做运维的阿瑞6 小时前
用 Python 构建稳健的数据分析流水线
开发语言·python·数据分析