大二下 数据结构(一)

适用于电商专业大二年级下学期,数据结构专业选修课,不是物联网同学大二上的数据结构哦。
年代久远,仅供参考。

目标:复习C语言的相关知识:

(1)数组(顺序存储方法)
(2)结构(构造多数据项的数据元素类型)

内容:

(1)定义student[n]数组,数组元素为(学号、姓名、成绩),n取值10。
(2)向数组中读入原始数据,其中有重复学号的数据,输出原始的数组数据。
(3)删除有重复学号的数据(保留第一个),输出处理后的数组数据。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#include<string.h>

void timeclock();
int main()
{
int n = 10;
struct stu
{
int num;
char name[20];
float score;
}student[n];//创建结构体数组

timeclock(); //加载系统时间
for(int i=0;i<n;i++)
{
printf("请输入第%d名同学的个人信息:\n",i+1);
printf("学号:NO.");
scanf("%d",&student[i].num);
printf("姓名:");
scanf("%s",student[i].name);
printf("成绩:");
scanf("%f",&student[i].score);
printf("\n");
}//录入个人信息
printf("成绩录入完毕。\n\n序号 学号 姓名 成绩\n");
for(int i=0;i<n;i++)
{
printf(" %2d %d %-s %-.1f\n",i+1,student[i].num,student[i].name,student[i].score);
}//输出原始的数组数据

for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
while(student[i].num == student[j].num)
{
for(int k=j;k<n;k++){
student[k].num = student[k+1].num;
strcpy(student[k].name,student[k+1].name);
student[k].score = student[k+1].score;
}
n--;
}
}
} //删除有重复学号的数据(保留第一个)

printf("处理后的数据如下:\n\n序号 学号 姓名 成绩\n");
for(int i=0;i<n;i++)
{
printf(" %2d %d %-s %-.1f\n",i+1,student[i].num,student[i].name,student[i].score);
}//输出处理后的数组数据
system("pause");
}

void timeclock(){
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "\n欢迎登陆学生信息管理系统,系统时间为: %s\n", asctime (timeinfo) );

}

日常帮写了第二份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
int n = 10;
struct stu
{
int num;
char name[20];
float score;
}student[n];

for(int i=0;i<n;i++)
{
printf("请输入第%d名同学的学号,姓名,成绩:",i+1);
scanf("%d%s%f",&student[i].num,student[i].name,&student[i].score);
}
printf("成绩录入完毕。\n\n序号 学号 姓名 成绩\n");
for(int i=0;i<n;i++)
{
printf(" %2d %d %s %.1f\n",i+1,student[i].num,student[i].name,student[i].score);
}//按顺序输出

for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
while(student[i].num == student[j].num)
{
for(int k=j;k<n;k++){
student[k].num = student[k+1].num;
strcpy(student[k].name,student[k+1].name);
student[k].score = student[k+1].score;
}
n--;
}
}
} //删除重复学号的信息

printf("处理后的数据如下:\n\n序号 学号 姓名 成绩\n");
for(int i=0;i<n;i++)
{
printf(" %2d %d %s %.1f\n",i+1,student[i].num,student[i].name,student[i].score);
}//输出处理后的数据
system("pause");
}