目录

写在前面

正文

第1关:结构体变量的初始化和引用

第2关:结构体排序

第3关:结构体存储数据

第4关:结构体存储学生信息

写在最后


写在前面

本文代码是我自己所作,本人水平有限,可能部分代码看着不够简练,运行效率不高,但都能运行成功。另外,如果想了解更多,请订阅专栏头歌C语言程序与设计https://blog.csdn.net/m0_73222051/category_12106390.html


正文

第1关:结构体变量的初始化和引用

本关任务:从键盘输入两个学生的学号,姓名和成绩(整数),分别存入结构体中,输出成绩较高的学生的学号,姓名和成绩。

测试输入数据说明

输入包含两行,每行包含学生的学号(11位的整数),姓名(字符串,长度不超过20)和成绩(整数)。

测试输入:
14308100238 xiaowang 99
15408122584 xiaoli 78
预期输出:
14308100238 xiaowang 99
#include<stdio.h>
/*********Begin*********/
struct student{long long int number;char name[20];int score;
};
int main()
{struct student stu[2];int i=0;for(i=0;i<2;i++)scanf("%lld%s%d",&stu[i].number,stu[i].name,&stu[i].score);if(stu[0].score>stu[1].score)printf("%lld %s %d",stu[0].number,stu[0].name,stu[0].score);elseprintf("%lld %s %d",stu[1].number,stu[1].name,stu[1].score);return 0;
}
/*********End*********/

第2关:结构体排序

本关任务:有n个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序输出学生的信息。

测试输入数据说明

第一行为整数n表示有n个学生, 1<=n<=200。接下来包含n行数据,每行数据代表一个学生的信息,按学号(11位的整数),姓名(字符串,长度不超过20)和成绩(整数)。

测试输入:5
10101 Zhang 78
10103 Wang 98
10106 Li 86
10108 Ling 73
10110 Sun 100
预期输出:
10110 Sun 100
10103 Wang 98
10106 Li 86
10101 Zhang 78
10108 Ling 73
#include<stdio.h>
/*********Begin*********/
struct student
{int num;char name[10];int score;
};/*********End**********/
int main(void)
{/*********Begin*********/struct student stu[5],temp;int i,j,n;scanf("%d",&n);for(i=0;i<5;i++)scanf("%d%s%d",&stu[i].num,stu[i].name,&stu[i].score);//选择排序法for(i=0;i<5;i++){for(j=i+1;j<5;j++)if(stu[i].score<stu[j].score){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}        }for(i=0;i<5;i++)printf("%d %s %d\n",stu[i].num,stu[i].name,stu[i].score);/*********End**********/return 0;
}

第3关:结构体存储数据

本关任务:有三个候选人,每个选民只能投一票,写一程序,用结构体存储数据,求出得票结果。

三个候选人为"Li", "Zhang","Sun"。

测试输入数据说明:

输入数据第一行包含一个整数n,表示有n个人投票。接下来的每一行包含某个候选人的名字。

测试输入:
10
Li
LiSun
Zhang
Zhang
Sun
Li
Sun
Zhang
Li预期输出:Li:4
Zhang:2
Sun:3
#include<stdio.h>
#include<string.h>
/*********Begin*********/
struct leader
{char name[10];int num;
}people[3]={"Li",0,"Zhang",0,"Sun",0};/*********End**********/
int main(void)
{/*********Begin*********/int n,i,j;scanf("%d",&n);char str[6];for(i=0;i<n;i++){scanf("%s",str);for(j=0;j<3;j++)if(strcmp(str,people[j].name)==0)people[j].num++;   }for(i=0;i<3;i++)printf("%s:%d\n",people[i].name,people[i].num);/*********End**********/return 0;
}

第4关:结构体存储学生信息

本关任务:使用结构体储存学生信息(包括学号,姓名,3门课程成绩,总分),要求实现对学生信息修改和删除操作,最多50名学生。

测试输入数据说明: 输入一个nq,表示下面n行是n个学生的信息,再下面q行则是对应的操作。

1 name //为根据名字查询操作
2 sno num1 num2 num2 //为修改分数操作,修改学号为sno的3门成绩
3 sno //为删除操作

预期输出数据说明: 每次修改操作则输出全部的学生信息,查询操作则输出查询的学生的信息。

测试输入:
10 3
1 Siyu 90 90 90
2 Amy 60 70 94
3 Jack 60 60 98
4 Jack 77 90 60
5 Banana 60 60 40
6 White 60 60 60
7 Pinkman 60 60 60
8 Fring 60 60 70
9 Ehrmantraut 80 63 61
10 Schrader 99 66 100
1 Jack
2 1 100 100 100
3 10

预期输出:

3 Jack 60 60 98 218
4 Jack 77 90 60 227
1 Siyu 100 100 100 300
2 Amy 60 70 94 224
3 Jack 60 60 98 218
4 Jack 77 90 60 227
5 Banana 60 60 40 160
6 White 60 60 60 180
7 Pinkman 60 60 60 180
8 Fring 60 60 70 190
9 Ehrmantraut 80 63 61 204
10 Schrader 99 66 100 265
1 Siyu 100 100 100 300
2 Amy 60 70 94 224
3 Jack 60 60 98 218
4 Jack 77 90 60 227
5 Banana 60 60 40 160
6 White 60 60 60 180
7 Pinkman 60 60 60 180
8 Fring 60 60 70 190
9 Ehrmantraut 80 63 61 204
#include<stdio.h>
#include<string.h>
int Count;//定义全局变量,让main函数以外的其他函数也使用,一劳永逸struct student   //定义结构体
{char sno[20],name[20];//学号,姓名int math,english,chinese,sum;//三课成绩,加和
}students[50];void print(struct student stu);//下面四个是函数声明
void query_stu(struct student s[],char *name);
void delete_stu(struct student s[],char *sno);
void update_stu(struct student s[],char *sno,int math,int english,int chinese);int main(void)
{int n,q;       //n代表输入n个学生信息,q决定执行几次修改操作scanf("%d%d",&n,&q);Count=n;     //由于下面q要进行自减,会使原始值丢失,所以把原始值记录了下来//输入1~n行的学生信息for(int i=0;i<n;i++) {/*********Begin*********/scanf("%s%s%d%d%d",students[i].sno,students[i].name,&students[i].math,&students[i].english,&students[i].chinese);students[i].sum = students[i].math + students[i].english + students[i].chinese;/*********End**********/}//进行q次操作while(q--){char sno[20],name[20];//结构体外定义学号和姓名数组,删除操作时会用到int op;//拿示例来说,op对应12~14每行中的1,2,3;含义是你要执行操作的种类;scanf("%d",&op);//如果op==1,执行查询操作if(op==1)       {scanf("%s",name);query_stu(students,name);}//如果op==2,执行修改操作else if(op==2)  {int a,b,c;//这里指math,english,chinese三科的新成绩scanf("%s%d%d%d",sno,&a,&b,&c);update_stu(students,sno,a,b,c);for(int i=0;i<Count;i++) //修改结束输出全部学生信息print(students[i]);}//如果op等于其他值,执行删除操作else           {scanf("%s",sno);delete_stu(students,sno);for(int i=0;i<Count-1;i++)//删除结束输出全部学生信息print(students[i]);}}return 0;
}void print(struct student stu)//打印函数
{printf("%s %s %d %d %d %d\n",stu.sno,stu.name,stu.math,stu.english,stu.chinese,stu.sum);
}//查询函数
void query_stu(struct student s[],char *name)
{/*********Begin*********/int i;for(i = 0;i < Count;i++)//这里count==n,用Count可以少传一个参数,一劳永逸就体现在这里if(strcmp(s[i].name, name) == 0){s[i].sum = s[i].math + s[i].english + s[i].chinese;print(s[i]);//只输出查询学生的信息}/*********End**********/
}//修改函数
void update_stu(struct student s[],char *sno,int math,int english,int chinese)
{/*********Begin*********/for(int i = 0;i < Count;i++)if(strcmp(s[i].sno, sno) == 0){s[i].math = math;s[i].english = english;s[i].chinese = chinese;s[i].sum = s[i].math + s[i].english + s[i].chinese;}/*********End**********/
}//删除函数
void delete_stu(struct student s[],char *sno)
{/*********Begin*********/for(int i = 0;i < Count - 1;i++){if(strcmp(s[i].sno, sno) == 0)//用后面的数据覆盖要删除的数据while(i < Count){s[i] = s[i + 1];i++;}  }/*********End**********/
}

写在最后

【头歌C语言程序与设计】结构体相关推荐

  1. 【头歌C语言程序与设计】字符数组

    目录 写在前面 正文 第1关:字符逆序 第2关:字符统计 第3关:字符插入 第4关:字符串处理 第5关:字符串统计 第6关:字符串排序 写在最后 写在前面 本文代码是我自己所作,本人水平有限,可能部分 ...

  2. 头歌c语言实训项目-结构体

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 第1关:结构体变量的初始化和引用: 题目: 代码思路: 代码表示: 第2关:结构体排序 题目: 代码思 ...

  3. c语言课设学生管理程序,c语言程序课程设计学生成绩管理程序.doc

    c语言程序课程设计学生成绩管理程序 武汉科技大学 二〇一〇~二〇一一学年第一学期 信息科学与工程学院 课程设计报告书 课程名称: C语言课程设计 班 级: 自动化2009级2班 学 号: 姓 名: 指 ...

  4. c51语言的设计步骤,第3章节单片机c51语言程序的设计基本.ppt

    第3章节单片机c51语言程序的设计基本 第3章 单片机C51语言程序设计基础 3.1 语句与流程控制 3.2 函数 3.3 本章小结 3.4 实训三 简易十字路口交通信号灯控制 教学提示 教学要求 3 ...

  5. c语言1000内亲密对数,《C语言程序的设计上机指导》项目五函数及其应用.pptx

    <C语言程序的设计上机指导>项目五函数及其应用.pptx 项目五 函数及其应用 本章重点 文本 C语言程序结构. 函数定义与函数声明. 函数的调用. 变量的存储属性. 任务一 关于函数应用 ...

  6. 头歌c语言实训作业题解

    头歌c语言实训作业题解 持续更新 C语言程序设计编辑与调试环境 1.打印输出 Hello World 2.打印输出图形 3.求三个数的最大值 4.熟悉C语言调试环境 C语言中最基本的输入输出 1.看看 ...

  7. c语言课设宿舍管理程序,C语言程序课程设计宿舍管理软件.doc

    C语言程序课程设计宿舍管理软件.doc 课程设计(论文) 题 目 名 称 宿舍管理软件 课 程 名 称 C语言程序课程设计 学 生 姓 名 学 号 系 .专 业 信息工程系.信息大类 指 导 教 师 ...

  8. c语言作业答案第四章,C语言程序的设计课件源程序及习题的答案第4章.ppt

    C语言程序的设计课件源程序及习题的答案第4章 第4章循环结构的流程及应用 学习目标 ? 使用循环处理需要反复执行的操作. ? 循环结构的流程图. ? 循环与条件的综合应用. 学一学 while语句的一 ...

  9. c语言程序基本设计,C语言程序的设计基本6.ppt

    C语言程序的设计基本6 第六章 本章要点 建立循环程序设计的基本概念和逻辑思维 掌握循环程序设计的方法 6.1 if-goto 语句循环 一般形式: goto 标号: 标号:语句 其中:标号用标识符表 ...

最新文章

  1. 在注意力中重新思考Softmax:分解非线性,这个线性transformer变体实现多项SOTA
  2. VC代码的编写和调试---编写易于调试的VC代码
  3. 特征选择和特征生成问题初探
  4. Caddy-基于go的微型serve用来做反向代理和Gateway
  5. 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.2)
  6. python 并集union, 交集intersection, 差集difference, 对称差集symmetric_difference
  7. xftp传输文件错误解决办法
  8. 关于 SAP 电商云 Spartacus UI 访问 b2b site 的权限问题
  9. String类的使用 Part2
  10. Python编程从入门到实践~操作列表~创建数值列表
  11. 无法打开多维数据集(使用Dundas的OLAP显示控件时的一个小的问题)
  12. 那些用起来很爽,但用不好可能会被人打的Python骚操作
  13. 浅谈C++中的资源管理
  14. Linux(CentOS)下安装tesseract-ocr以及配置依赖leptonica
  15. nuxt+echarts-gl 实现3d环饼图
  16. 分享8年开发经验,浅谈程序员职业规划
  17. 基于专利多属性融合的技术主题划分方法研究
  18. OOP思想指的是什么?
  19. Affinity笔记:渐变工具
  20. 去除字符串中的特殊符号及表情

热门文章

  1. springboot 环境配置测试环境和线上环境配置
  2. 常见问题汇总:FLUENT面数据处理
  3. Python中单引号,双引号,3个引号的用法
  4. layui搭建后台管理系统
  5. 培训html源码,前端培训——html源码笔记
  6. 亚马逊英国站小风扇UKCA认证办理流程
  7. 人狗鸡米安全过河matlab程序,人狗鸡米过河
  8. linux cut指令
  9. C++中继承 —— 继承的概念及定义
  10. Word VBA自动排版(1)-新建窗口,并且设置并列分布