实验八 结构体 && 第九章 作业

This commit is contained in:
xtaodada 2022-01-12 17:07:30 +08:00
parent e5c72f39c7
commit 29df2845c3
No known key found for this signature in database
GPG Key ID: EE4DC37B55E24736
13 changed files with 529 additions and 0 deletions

26
08/1/1.c Normal file
View File

@ -0,0 +1,26 @@
#include<stdio.h>
typedef struct Time{
int h;
int m;
int s;
}time;
int main(){
int s;
time data;
scanf("%d:%d:%d",&data.h,&data.m,&data.s);
scanf("%d",&s);
data.s+=s;
if(data.s/60>=1){
data.m += data.s / 60;
data.s = data.s % 60;
if(data.m/60>=1){
data.h += data.m / 60;
data.m = data.m % 60;
}
}
printf("\n新时间是%d小时%d分%d秒",data.h,data.m,data.s);
return 0;
}

48
08/1/README.md Normal file
View File

@ -0,0 +1,48 @@
【问题描述】
编程题时间换算。用结构体表示时间输入一个时间数值再输入一个秒数nn<60以时秒的格式输出该时间再过n秒后的时间
输入输出示例:
```
输入时间115940
输入秒30
新时间12小时0分10秒
```
【输入形式】
【输出形式】
【样例输入】
```
1:20:30
40
```
【样例输出】
```
新时间是1小时21分10秒
```
【样例说明】
【评分标准】
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:2
平均占用内存:1.945K
平均CPU时间:0.00636S
平均墙钟时间:0.00636S
测试数据 评判结果
测试数据1 完全正确
测试数据2 完全正确

35
08/2/2.c Normal file
View File

@ -0,0 +1,35 @@
#include<stdio.h>
typedef struct Stu{
char name[20];
int score;
int age;
}stu;
int main(){
stu data[5];
// 输入
for(int i=0;i<5;i++){
scanf("%s%d%d",data[i].name,&data[i].age,&data[i].score);
}
printf("成绩变化之前:\n");
// 输出
for(int i=0;i<5;i++){
printf("%-8s%-6d%d\n",data[i].name,data[i].age,data[i].score);
}
// 改变
for(int i=0;i<5;i++){
if(data[i].age>18){
data[i].score+=10;
}
}
printf("成绩变化之后:\n");
// 输出
for(int i=0;i<5;i++){
printf("%-8s%-6d%d\n",data[i].name,data[i].age,data[i].score);
}
return 0;
}

65
08/2/README.md Normal file
View File

@ -0,0 +1,65 @@
【问题描述】
定义一个含姓名、年龄、英语成绩的结构体类型通过键盘输入5个学生的信息再对年龄大于18岁的学生的英语成绩加上10分然后分别输出成绩变化之前和之后的所有学生的信息。
【输入形式】
```
请输入5名学生信息
姓名 年龄 成绩
wang 19 89
li 23 90
wu 19 87
zhang 21 76
hu 20 78
```
【输出形式】
```
成绩变化之前:
wang 19 89
li 23 90
wu 19 87
zhang 21 76
hu 20 78
成绩变化之后:
wang 19 99
li 23 100
wu 19 97
zhang 21 86
hu 20 88
```
【样例说明】
输出格式 `"%-8s%-6d%d\n"`
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:1
平均占用内存:1.965K
平均CPU时间:0.00635S
平均墙钟时间:0.00636S
测试数据 评判结果
测试数据1 完全正确

29
08/3/3.c Normal file
View File

@ -0,0 +1,29 @@
#include<stdio.h>
#define N 3
typedef struct student{
char num[6];
char name[8];
int score[3];
float avr;
}stu;
int main(){
stu data[N];
float temp;
// 输入
for(int i=0;i<N;i++){
scanf("%s\n%s\n%d\n%d\n%d", data[i].num, data[i].name,&data[i].score[0],&data[i].score[1],&data[i].score[2]);
}
// 求平均
for(int i=0;i<N;i++){
temp = data[i].score[0] + data[i].score[1] + data[i].score[2];
data[i].avr = temp / 3;
}
// 输出
printf("NO. name score1 score2 score3 average\n");
for(int i=0;i<N;i++){
printf("%-7s%-9s%-10d%-9d%-10d%.2lf\n",data[i].num,data[i].name,data[i].score[0],data[i].score[1],data[i].score[2],data[i].avr);
}
return 0;
}

93
08/3/README.md Normal file
View File

@ -0,0 +1,93 @@
【问题描述】
有3个学生每个学生的数据包括学号姓名3门课的成绩从键盘输入3个学生的数据要求打印出3门课的平均成绩.包括学号姓名3门课成绩平均分数
```
# define N 3
struct student
{char num[6];
char name[8];
int score[3];
float avr;
}stu [N];
```
【输出形式】
【样例输入】
```
Input scores of student 1:
NO.: 101
name: Wang
score1: 93
score2: 89
score3: 87
Input scores of student 2:
NO.: 102
name: Li
score1: 85
score2: 80
score3: 78
Input scores of student 3:
NO.: 103
name: Zhao
score1: 65
score2: 70
score3: 59
```
【样例输出】
```
NO. name score1 score2 score3 average
101 Wang 93 89 87 89.67
102 Li 85 80 78 81.00
103 Zhao 65 70 59 64.67
```
【样例说明】
输出格式 `"%-7s%-9s%-10d%-9d%-10d%.2lf\n"`
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:1
平均占用内存:1.996K
平均CPU时间:0.00601S
平均墙钟时间:0.00602S
测试数据 评判结果
测试数据1 完全正确

38
08/README.md Normal file
View File

@ -0,0 +1,38 @@
# 实验八 结构体(2学时)
> 作业时间: 2021-12-20 08:06:00 至 2021-12-27 00:00:00
# 实验目的
1. 掌握结构体类型和结构体类型变量的定义方法。
2. 掌握结构体类型变量成员赋值和引用方法。
3. 学会使用结构体数组。
4. 理解指针和结构的关系。
# 实验器材
计算机硬件环境PIII 667以上计算机软件环境Turbo C, Visual C。
# 实验内容
1. 编程题时间换算。用结构体表示时间输入一个时间数值再输入一个秒数nn<60以时秒的格式输出该时间再过n秒后的时间
输入输出示例:
输入时间115940
输入秒30
新时间12010
2. 定义一个含姓名、年龄、英语成绩的结构体类型通过键盘输入5个学生的信息再对年龄大于18岁的学生的英语成绩加上10分然后分别输出成绩变化之前和之后的所有学生的信息。
3. 有10个学生每个学生的数据包括学号姓名3门课的成绩从键盘输入10个学生的数据要求打印出3门课的总平均成绩以及最高分的学生的数据包括学号姓名3门课成绩平均分数
# 技能要点
1. 结构体类型的定义方法;
2. 结构体变量的定义方法;
3. 结构体变量的赋值,以及结构体成员的访问。
# 思考题
1. 结构体和数组都是构造类型,它们的区别是什么?
# 根据实验过程填写下列内容
1. 写出能够完成实验1要求的程序,及测试数据。

26
09-1/1/1.c Normal file
View File

@ -0,0 +1,26 @@
#include<stdio.h>
typedef struct stu{
char name[20];
int num;
float score;
}stu;
int main(){
stu data[2];
for(int i=0;i<2;i++){
scanf("%d %s %f",&data[i].num,data[i].name,&data[i].score);
}
printf("The higher score is:\n");
if(data[0].score>=data[1].score){
printf("%d %s %.2f\n",data[0].num,data[0].name,data[0].score);
}
if(data[0].score<=data[1].score){
printf("%d %s %.2f\n",data[1].num,data[1].name,data[1].score);
}
return 0;
}

51
09-1/1/README.md Normal file
View File

@ -0,0 +1,51 @@
输入两个学生的学号、姓名和成绩,输出成绩较高学生的学号、姓名和成绩
【问题描述】
【输入形式】
输入两行,每行一个学生信息。
【输出形式】
输出一行提示信息
The higher score is:
再输出较高分学生的信息学号、姓名和成绩,成绩保留两位小数,三个数据用一个空格间隔,成绩后面无空格。
若两个成绩相同,则按输入顺序将两个学生信息都输出,各占一行。
【样例输入】
```
101 wang 98
102 Li 90
```
【样例输出】
```
The higher score is:
101 wang 90.00
```
【样例说明】
【评分标准】
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:3
平均占用内存:2.002K
平均CPU时间:0.00634S
平均墙钟时间:0.00635S
测试数据 评判结果
测试数据1 完全正确
测试数据2 完全正确
测试数据3 完全正确

31
09-1/2/2.c Normal file
View File

@ -0,0 +1,31 @@
#include<stdio.h>
#include<string.h>
union Categ{
int clas;
char position[10];
};
struct{
int num;
char name[10];
char sex;
char job;
union Categ category;
}person[2];
int main(){
for(int i=0;i<2;i++){
scanf("%d\n%s\n%c\n%c",&person[i].num,person[i].name,&person[i].sex,&person[i].job);
if(person[i].job=='s')
scanf("%d",&person[i].category.clas);
else
scanf("%s",person[i].category.position);
printf("%d %s %c %c",person[i].num,person[i].name,person[i].sex,person[i].job);
if(person[i].job=='s')
printf(" %d\n",person[i].category.clas);
else
printf(" %s\n",person[i].category.position);
}
return 0;
}

77
09-1/2/README.md Normal file
View File

@ -0,0 +1,77 @@
【问题描述】
有若干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。要求用同一个表格来处理。
```
union Categ
{ int clas;
char position[10];
};
struct
{ int num;
char name[10];
char sex;
char job;
union Categ category;
}person[2];
```
【样例输入】
```
101
wang
m
s
501
102
sun
f
t
professor
```
【样例输出】
```
101 wang m s 501
102 li s t professor
```
【样例说明】
【评分标准】
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:1
平均占用内存:1.953K
平均CPU时间:0.00671S
平均墙钟时间:0.00671S
测试数据 评判结果
测试数据1 完全正确

3
09-1/README.md Normal file
View File

@ -0,0 +1,3 @@
# 第九章 作业(结构体与共用体)
> 作业时间: 2021-12-20 08:08:00 至 2022-01-08 23:55:00

View File

@ -75,8 +75,15 @@ A repo to record my study life.
- [3. 求两组整数的交集a](https://github.com/xtaodada/C-study/tree/master/07-1/3) - [3. 求两组整数的交集a](https://github.com/xtaodada/C-study/tree/master/07-1/3)
- [4. 超长正整数的加法](https://github.com/xtaodada/C-study/tree/master/07-1/4) - [4. 超长正整数的加法](https://github.com/xtaodada/C-study/tree/master/07-1/4)
- [5. 二维整型数组的“最小点”](https://github.com/xtaodada/C-study/tree/master/07-1/5) - [5. 二维整型数组的“最小点”](https://github.com/xtaodada/C-study/tree/master/07-1/5)
- [实验八 结构体(2学时)](https://github.com/xtaodada/C-study/tree/master/08)
- [1. 时间换算](https://github.com/xtaodada/C-study/tree/master/08/1)
- [2. 定义一个含姓名、年龄、英语成绩的结构体类型](https://github.com/xtaodada/C-study/tree/master/08/2)
- [3. 有3个学生](https://github.com/xtaodada/C-study/tree/master/08/3)
- [第八章 字符串作业](https://github.com/xtaodada/C-study/tree/master/08-1) - [第八章 字符串作业](https://github.com/xtaodada/C-study/tree/master/08-1)
- [1. 回文判断](https://github.com/xtaodada/C-study/tree/master/08-1/1) - [1. 回文判断](https://github.com/xtaodada/C-study/tree/master/08-1/1)
- [2. 颠倒字符串](https://github.com/xtaodada/C-study/tree/master/08-1/2) - [2. 颠倒字符串](https://github.com/xtaodada/C-study/tree/master/08-1/2)
- [3. 统计输入中空格、制表符及回车符的个数](https://github.com/xtaodada/C-study/tree/master/08-1/3) - [3. 统计输入中空格、制表符及回车符的个数](https://github.com/xtaodada/C-study/tree/master/08-1/3)
- [4. 删除重复字符排序字符串](https://github.com/xtaodada/C-study/tree/master/08-1/4) - [4. 删除重复字符排序字符串](https://github.com/xtaodada/C-study/tree/master/08-1/4)
- [第九章 作业(结构体与共用体)](https://github.com/xtaodada/C-study/tree/master/09-1)
- [1. 输入两个学生的学号、姓名和成绩,输出成绩较高学生的学号、姓名和成绩](https://github.com/xtaodada/C-study/tree/master/09-1/1)
- [2. 有若干个人员的数据](https://github.com/xtaodada/C-study/tree/master/09-1/2)