C语言程序设计-笔记8-结构
C语言程序设计-笔记8-结构
例9-1 输出平均分最高的学生信息。根据学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩。输入n个学生的成绩信息,计算并输出平均分最高的学生信息。
#include<stdio.h>
struct student{
int num;
char name[10];
int computer,english,math;
double average;
};
int main(void)
{
int i,n;
struct student max,stu;
printf("Input n:");
scanf("%d",&n);
printf("Input the student's number,name and course scores\n");
for(i=1;i<=n;i++)
{
printf("No.%d:",i);
scanf("%d%s%d%d%d",&stu.num,stu.name,&stu.math,&stu.english,
&stu.computer);
stu.average=(stu.math+stu.english+stu.computer)/3.0;
if(i==1)
{
max=stu;
}
else if(max.average<stu.average)
{
max=stu;
}
}
printf("num:%d,name:%s,average:%.2f\n",max.num,max.name,max.average);
return 0;
}
例9-2 学生成绩排序。输入n(n〈50)个学生的成绩信息,按照学生的个人平均成绩从高到低输出他们的信息。
#include<stdio.h>
struct student{
int num;
char name[10];
int computer,english,math;
double average;
};
int main(void)
{
int i,index,j,n;
struct student students[50],temp;
printf("Input n:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Input the info of No.%d:\n",i+1);
printf("number:");
scanf("%d",&students[i].num);
printf("name:");
scanf("%s",students[i].name);
printf("math score:");
scanf("%d",&students[i].math);
printf("english score:");
scanf("%d",&students[i].english);
printf("computer score:");
scanf("%d",&students[i].computer);
students[i].average=(students[i].math+students[i].english+
students[i].computer)/3.0;
}
for(i=0;i<n-1;i++)
{
index=i;
for(j=i+1;j<n;j++)
{
if(students[j].average>students[index].average)
{
index=j;
}
}
temp=students[index];
students[index]=students[i];
students[i]=temp;
}
printf("num\t name\t average\n");
for(i=0;i<n;i++)
{
printf("%d \t%s \t%.2f\n",students[i].num,students[i].name,
students[i].average);
}
return 0;
}
例9-3 修改学生成绩。输入n(n<50)个学生的成绩信息,再输入一个学生的学号、课程以及成绩,在自定义函数中修改该学生指定课程的成绩。
#include<stdio.h>
struct student{
int num;
char name[10];
int computer,english,math;
double average;
};
int update_score(struct student *p,int n,int num,int course,int score);
int main(void)
{
int course,i,n,num,pos,score;
struct student students[50];
printf("Input n:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Input the info of No.%d:\n",i+1);
printf("number:");
scanf("%d",&students[i].num);
printf("name:");
scanf("%s",students[i].name);
printf("math score:");
scanf("%d",&students[i].math);
printf("english score:");
scanf("%d",&students[i].english);
printf("computer score:");
scanf("%d",&students[i].computer);
}
printf("Input the number of the students to be updated:");
scanf("%d",&num);
printf("Choice the course:1.math 2.english 3.computer:");
scanf("%d",&course);
printf("Input the new score:");
scanf("%d",&score);
pos=update_score(students,n,num,course,score);
if(pos==-1)
{
printf("Not found!\n");
}
else
{
printf("After update:\n");
printf("num\t math\t english\t computer\n");
printf("%d\t %d\t %d\t %d\n",students[pos].num,students[pos].math,
students[pos].english,students[pos].computer);
}
return 0;
}
int update_score(struct student *p,int n,int num,int course,int score)
{
int i,pos;
for(i=0;i<n;i++,p++)
{
if(p->num==num)
{
break;
}
}
if(i<n)
{
switch(course)
{
case 1:p->math=score;break;
case 2:p->english=score;break;
case 3:p->computer;break;
}
pos=i;
}
else
{
pos=-1;
}
return pos;
}
参考资料
C语言程序设计/何钦铭,颜晖主编.---4版.---北京:高等教育出版社,2020.9
C语言程序设计-笔记8-结构的更多相关文章
- JAVA语言程序设计-笔记摘录
JAVA 程序语言设计(基础篇) 笔记摘录 为避免输入错误, 不要在nextByte().nextShort().nextInt()等等后面使用nextLine() nextXXXXX()都称为令牌读 ...
- [C语言入门笔记]分支结构与数组
分支结构与数组 什么是分支结构? 分支结构是用户或者程序可以选择下一步执行哪个语句 分支结构有哪些? If If Else If Else If Switch 在初学者的学习过程中第一种和第二种比较普 ...
- C语言学习笔记--枚举&结构体
枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...
- c语言学习笔记之结构体存储
今天讲讲结构体存储问题 首先,结构体简单说是对不同类型的封装,一开始我们可能会想结构体在内存中的存储的大小是直接元素的和 例如 我们可能会觉得是 结构体大小=int(4个字节)+ short(2个字节 ...
- Python语言程序设计(笔记)
1.平方根的格式化 知识点:平方根计算 pow(a,0.5)[可以计算负数,结果为复数] a**b 例题: 获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出. ...
- 160809209_李梦鑫_C语言程序设计实验3 循环结构程序设计
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 ...
- 160809209_李梦鑫_C语言程序设计实验2+选择结构程序设计_进阶
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C05 机 ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- C语言程序设计第六次作业——循环结构(2)
C语言程序设计第六次作业--循环结构(2) 之前的博客园图片没处理好,对大家说一声抱歉.希望大家能够多多指出我的错误,我来认真修改 ^ - ^ !. (1)改错题 序列求和:输入一个正实数eps,计算 ...
- C语言程序设计第二次作业--顺序结构
C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...
随机推荐
- 使用 Kotlin DSL 编写网络爬虫
本博文将会通过一个网络爬虫的例子,向你介绍 Kotlin 的基本用法和其简洁有力的 DSL. 关于DSL 按照维基百科的说法,DSL(domain-specific language) 是一种专注于某 ...
- petalinux创建及工程配置
2023-03-19 21:56:47 下载petalinux安装包 petalinux_2022 下载download用于离线编译 downloads_2022 sstate下载 这个部分不容易在线 ...
- KingbaseES 表中隐藏字段说明
在KingbaseES中,当我们创建一个数据表时,数据库会隐式增加几个系统字段.这些字段由系统进行维护,用户一般不会感知它们的存在. 例如,以下语句创建了一个简单的表: create table te ...
- Java实现软件设计模式---抽象工厂模式(性别产品等级结构肤色产品族)
一.题目要求 二.画出对应的类图 三.文件目录结构 四.具体实现代码 Black.java 1 package com.a004; 2 3 public class Black implements ...
- 2023 LGR 非专业级别软件能力认证第一轮(初赛)S组
计算器.背包.代码都不能带进考场 禁赛三年并全国通报 B选项符合while语句 弱类型编程语言指的是可以进行类型转换,可以参与各种类型变量的运算 \[3\times 60(秒)\times 44.1\ ...
- #树形dp,二次扫描换根法#JZOJ 3501 消息传递 with others
目录 JZOJ 3501 消息传递 题目 分析 代码 简单写就能跳过之题目 JZOJ 3500 物语 题目 分析 代码 JZOJ 3757 洛谷 2354 [NOI 2014] 随机数产生器 题目 分 ...
- #Tarjan#洛谷 5676 [GZOI2017]小z玩游戏
题目 分析 可能玩两次也就是形成环即是Tarjan缩点后在同一个强连通分量 如果按照游戏连边数量将达到\(O(n^2)\),当中其实有很多边可以共用, 考虑\(i\)连向\(i\)的倍数,以及有趣程度 ...
- C++ 编程必备:对象生命周期管理的最佳实践
在C++中,对象的生命周期是指对象存在的时间段,从对象创建到对象销毁的整个过程.正确地管理对象的生命周期是编写高效.可靠C++代码的关键之一 对象的创建 在C++中,对象可以通过三种方式创建:静态分配 ...
- 震撼!这个Python模块竟然能自动修复代码!
说到Python的强大的地方,那真的是太多了,优雅.简洁.丰富且强大的第三方库.开发速度快,社区活跃度高等,所以才使得Python才会如此的受欢迎. 今天给大家介绍一个特别暴力的Python库: Fu ...
- 开始学习web-sql注入
web内容多且杂,不知道怎么下手开始学,那就先从sql注入开始学吧 目前只在b站上找了一些课程,还有ctfwiki作为参考 链接贴在下面: ctfwiki https://www.bilibili.c ...