实验八 结构体 && 第九章 作业
This commit is contained in:
parent
e5c72f39c7
commit
29df2845c3
26
08/1/1.c
Normal file
26
08/1/1.c
Normal 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
48
08/1/README.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
【问题描述】
|
||||||
|
|
||||||
|
编程题:时间换算。用结构体表示时间(时:分:秒),输入一个时间数值,再输入一个秒数n(n<60),以时:分:秒的格式输出该时间再过n秒后的时间。
|
||||||
|
|
||||||
|
输入输出示例:
|
||||||
|
|
||||||
|
```
|
||||||
|
输入时间:11:59:40
|
||||||
|
|
||||||
|
输入秒: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
35
08/2/2.c
Normal 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
65
08/2/README.md
Normal 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
29
08/3/3.c
Normal 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
93
08/3/README.md
Normal 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
38
08/README.md
Normal 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. 编程题:时间换算。用结构体表示时间(时:分:秒),输入一个时间数值,再输入一个秒数n(n<60),以时:分:秒的格式输出该时间再过n秒后的时间。
|
||||||
|
输入输出示例:
|
||||||
|
输入时间:11:59:40
|
||||||
|
输入秒:30
|
||||||
|
新时间:12:0:10
|
||||||
|
2. 定义一个含姓名、年龄、英语成绩的结构体类型,通过键盘输入5个学生的信息,再对年龄大于18岁的学生的英语成绩加上10分,然后分别输出成绩变化之前和之后的所有学生的信息。
|
||||||
|
3. 有10个学生,每个学生的数据包括学号,姓名,3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课成绩,平均分数)。
|
||||||
|
|
||||||
|
# 技能要点
|
||||||
|
|
||||||
|
1. 结构体类型的定义方法;
|
||||||
|
2. 结构体变量的定义方法;
|
||||||
|
3. 结构体变量的赋值,以及结构体成员的访问。
|
||||||
|
|
||||||
|
# 思考题
|
||||||
|
|
||||||
|
1. 结构体和数组都是构造类型,它们的区别是什么?
|
||||||
|
|
||||||
|
# 根据实验过程填写下列内容
|
||||||
|
|
||||||
|
1. 写出能够完成实验1要求的程序,及测试数据。
|
26
09-1/1/1.c
Normal file
26
09-1/1/1.c
Normal 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
51
09-1/1/README.md
Normal 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
31
09-1/2/2.c
Normal 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
77
09-1/2/README.md
Normal 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
3
09-1/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# 第九章 作业(结构体与共用体)
|
||||||
|
|
||||||
|
> 作业时间: 2021-12-20 08:08:00 至 2022-01-08 23:55:00
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user