【头歌C语言程序与设计】结构体
目录
写在前面
正文
第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
名学生。测试输入数据说明: 输入一个
n
,q
,表示下面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语言程序与设计】结构体相关推荐
- 【头歌C语言程序与设计】字符数组
目录 写在前面 正文 第1关:字符逆序 第2关:字符统计 第3关:字符插入 第4关:字符串处理 第5关:字符串统计 第6关:字符串排序 写在最后 写在前面 本文代码是我自己所作,本人水平有限,可能部分 ...
- 头歌c语言实训项目-结构体
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 第1关:结构体变量的初始化和引用: 题目: 代码思路: 代码表示: 第2关:结构体排序 题目: 代码思 ...
- c语言课设学生管理程序,c语言程序课程设计学生成绩管理程序.doc
c语言程序课程设计学生成绩管理程序 武汉科技大学 二〇一〇~二〇一一学年第一学期 信息科学与工程学院 课程设计报告书 课程名称: C语言课程设计 班 级: 自动化2009级2班 学 号: 姓 名: 指 ...
- c51语言的设计步骤,第3章节单片机c51语言程序的设计基本.ppt
第3章节单片机c51语言程序的设计基本 第3章 单片机C51语言程序设计基础 3.1 语句与流程控制 3.2 函数 3.3 本章小结 3.4 实训三 简易十字路口交通信号灯控制 教学提示 教学要求 3 ...
- c语言1000内亲密对数,《C语言程序的设计上机指导》项目五函数及其应用.pptx
<C语言程序的设计上机指导>项目五函数及其应用.pptx 项目五 函数及其应用 本章重点 文本 C语言程序结构. 函数定义与函数声明. 函数的调用. 变量的存储属性. 任务一 关于函数应用 ...
- 头歌c语言实训作业题解
头歌c语言实训作业题解 持续更新 C语言程序设计编辑与调试环境 1.打印输出 Hello World 2.打印输出图形 3.求三个数的最大值 4.熟悉C语言调试环境 C语言中最基本的输入输出 1.看看 ...
- c语言课设宿舍管理程序,C语言程序课程设计宿舍管理软件.doc
C语言程序课程设计宿舍管理软件.doc 课程设计(论文) 题 目 名 称 宿舍管理软件 课 程 名 称 C语言程序课程设计 学 生 姓 名 学 号 系 .专 业 信息工程系.信息大类 指 导 教 师 ...
- c语言作业答案第四章,C语言程序的设计课件源程序及习题的答案第4章.ppt
C语言程序的设计课件源程序及习题的答案第4章 第4章循环结构的流程及应用 学习目标 ? 使用循环处理需要反复执行的操作. ? 循环结构的流程图. ? 循环与条件的综合应用. 学一学 while语句的一 ...
- c语言程序基本设计,C语言程序的设计基本6.ppt
C语言程序的设计基本6 第六章 本章要点 建立循环程序设计的基本概念和逻辑思维 掌握循环程序设计的方法 6.1 if-goto 语句循环 一般形式: goto 标号: 标号:语句 其中:标号用标识符表 ...
最新文章
- 在注意力中重新思考Softmax:分解非线性,这个线性transformer变体实现多项SOTA
- VC代码的编写和调试---编写易于调试的VC代码
- 特征选择和特征生成问题初探
- Caddy-基于go的微型serve用来做反向代理和Gateway
- 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.2)
- python 并集union, 交集intersection, 差集difference, 对称差集symmetric_difference
- xftp传输文件错误解决办法
- 关于 SAP 电商云 Spartacus UI 访问 b2b site 的权限问题
- String类的使用 Part2
- Python编程从入门到实践~操作列表~创建数值列表
- 无法打开多维数据集(使用Dundas的OLAP显示控件时的一个小的问题)
- 那些用起来很爽,但用不好可能会被人打的Python骚操作
- 浅谈C++中的资源管理
- Linux(CentOS)下安装tesseract-ocr以及配置依赖leptonica
- nuxt+echarts-gl 实现3d环饼图
- 分享8年开发经验,浅谈程序员职业规划
- 基于专利多属性融合的技术主题划分方法研究
- OOP思想指的是什么?
- Affinity笔记:渐变工具
- 去除字符串中的特殊符号及表情
热门文章