1. 编写程序,对n个数从小到大排序。

实验步骤与要求:

(1) 任选一种排序方法进行编程。

(2) 用sort()函数进行排序。

(3) 在主函数中输入数据,调用sort()函数,分别打印出排序前和排序后的结果。

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
#include <stdio.h>

//功能:对a[10]赋值
void input(int a[])
{
int i;
for (i = 0;i < 10;i++)
{
printf("请输入第%d个数据:", i + 1);
scanf_s("%d", &a[i]);
}

}
//功能:对a[10]进行输出
void output(int c[])
{
int i;
for (i = 9;i >0;i--)
printf("%d \t", c[i]);
}
//功能:将数组的数从大到小排列
void bidaxiao(int a[])
{
int i, t, n = 9;
do {
for (i = 0;i < 10;i++)
{
if (a[i] > a[i + 1])continue;
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
n--;
} while (n >= 0);
}

int main()
{
int a[10];
input(a);
printf("排序前\n");
output(a);
bidaxiao(a);
printf("\n排序后\n");
output(a);
return 0;
}

2. 找出一个二维数组中的鞍点,即该位置上的元素在所在行为最大,在所在列为最小。如果没有这样的元素,请打印出相应的信息。

实验步骤与要求:

(1) 画出此题的流程图。

(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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <stdio.h>
//找行最大列最小的数
void fuzhi(int b[][4]);
void zhaohangzuidazhi(int d[][4]);
void shuchu(int c[][4]);
int main()
{
int a[3][4];
fuzhi(a);
shuchu(a);
zhaohangzuidazhi(a);
return 0;
}

//给二维数组赋值
void fuzhi(int b[][4])
{
int i, j;
printf("请输入你的数组\n");
for (i = 0;i < 3;i++)
{
for (j = 0;j < 4;j++)
{
printf("请输入第%d行,第%d列的值:", i+1, j+1);
scanf_s("%d", &b[i][j]);
}
}
}

//找出每一行中的最大值
void zhaohangzuidazhi(int d[][4])
{
int i, j;
int e[4],f=0;
for (i = 0;i < 3;i++)
{
for (j = 0;j < 3;j++)
{
//利用擂台法找出最大值
if (d[i][j] < d[i][j + 1])
{
e[f] = d[i][j + 1];
}
}
f++;
}
//找坐标
f = 0;
int h,n;
for (i = 0;i < 3;i++)
{

n = i;
for (j = 0;j < 4;j++)
{
if (e[f] != d[i][j]) continue;
//进行列比较,看是否是列最小
for (i = 0;i < 3;i++)
{
if (d[i][j] < e[f])
{
h = d[i][j];
}
}
if (e[f] == h)
{
printf("\n第%d行的鞍点为:%d", f+1, e[f]);
}
else
{
printf("\n第%d行没有鞍点", f+1);
}
}
f++;
i = n;
}
}
//给数组输出
void shuchu(int c[][4])
{
int i, j;
printf("你输入的数组为:\n");
for (i = 0;i < 3;i++)
{
for (j = 0;j < 4;j++)
{
printf("%d\t", c[i][j]);
}
printf("\n");
}
}

3.统计一个班的学生成绩。要求程序具有如下功能:

(1) 每个学生的学号和四门功课的成绩从键盘读入。

(2) 计算每个学生的总分和平均分。

(3) 按平均成绩进行排序,输出排序后的成绩单(包括学号、四门功课的成绩和平均分),给出名次。如果分数相同,则名次并列,其他学生名次不变。

实验步骤与要求:

(1) 每个功能为一个独立的函数。

(2) 调试程序时,可先输入少量学生的成绩作为实验数据

如可输入3名学生4门课成绩:

学号 成绩

9701 67,72,65,80

9702 75,82,94,95

9703 70,74,80,76

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "stdio.h"
#define N 35
struct student
{
int num; //学号
char name[8]; //姓名
int nannv; //性别
int chines; //语文成绩
int math; //数学成绩
int English; //英语成绩
int physics; //物理成绩
int sum; //总分
double avr; //平均分
}stu[N];
void input(int n)
{
int i;
for(i=0;i<n;i++)
{
int sum=0;
double avr=0.0;
printf("请输入第%d个学生信息\n",i+1);
printf("请输入学号:");
scanf("%d",&stu[i].num);
printf("请输入姓名:");
scanf("%s",stu[i].name);
printf("请输入性别:");
scanf("%d",&stu[i].nannv);
printf("请输入语文成绩:");
scanf("%d",&stu[i].chines);
printf("请输入数学成绩:");
scanf("%d",&stu[i].math);
printf("请输入英语成绩:");
scanf("%d",&stu[i].English);
printf("请输入物理成绩:");
scanf("%d",&stu[i].physics);
//计算总分和平均分
stu[i].sum = stu[i].chines+stu[i].math+stu[i].English+stu[i].physics;
stu[i].avr = (double)(stu[i].sum*1.0/4);
}
}
void output(int n)
{
int i;
for(i=0;i<n;i++)
{
printf("------------------------------------------------------------------\n");
printf("第%d名:\n",i+1);
printf("学号:%d\t\t姓名:%s\t\t性别:%d\n",stu[i].num,stu[i].name,stu[i].nannv);
printf("语文成绩:%d\t数学成绩:%d\t英语成绩:%d\t物理成绩:%d\n",
stu[i].chines,stu[i].math,stu[i].English,stu[i].physics);
printf("总分:%d\t\t\t平均分:%.2f\n",stu[i].sum,stu[i].avr);
printf("------------------------------------------------------------------\n");
}
}
void sort(int n)
{
int i,j;
struct student st;
//冒泡排序
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(stu[j].sum<stu[j+1].sum)
{
st = stu[j];
stu[j] = stu[j+1];
stu[j+1] = st;
}
}
}
}
void main()
{
int n;
printf("请输入学生人数:");
scanf("%d",&n);
input(n); //输入学生信息
sort(n); //按总成绩排序
printf("排名信息如下:\n");
output(n); //输出学生信息
}