-性疲劳
题目
:
200
个学生不按身高任意排成
10
行﹑
20
列的长方形队列。在每 一列中选出一个
最矮者
(如这样人有几个,
可任选其中一个)
。
然后 在所选的
20
个矮人中挑出最
高者一人,叫做“矮人中的高个子”
。然后,令 这
20
个矮人各回原位。再在每一
行中选出一个最高者,又从这
10
个高人中挑出最矮者一人,叫“高个子中的矮
子”
。请问“矮人中的高个子”和“高个子中的矮 子”这二人中哪个高?
1
、
问
题分析与设计。
1
、
输入问题。
200
个学生不按身高任意排成
10
行﹑
20
列的长方形队列,
所以定
义了二维数组
a[10][20 ],
通过两重循环录入数据。但是由于
200
个数据手动录
入会比较繁琐,< br>所以本程序提供电脑自动随机生成数据的模式。
所以用户可以根
据需要选择手动输入或者 随机生成模式。
另外考虑到时身高数据,
所以以厘米为
单位把数据限定在
10 0
到
200
之间
(因为群体是学生,
但不知道是小学生还是中
学生,
排除特别高的和特别矮的,
折中选择把数据限定在
[100,200),同时因为数
据都是三位数,
便于显示效果的整齐性)
。
输入时防止输入为 不符合要求的数据,
同样定义了
input
()函数。
2
、
由于
200
个数据的手动输入太慢,
不利于功能演示,
所以定义了 宏指令
#define
M 10 #define N 20
定义数组为
a[M][N].
为了显示方便可以随时修改
MN
的
值。
3
、由于手动输入大量数据,很可能会出错,所以本程序在当输入的数据不符合
要求时 会提醒用户重新输入,
此外还提供修改功能,
对指定的某行某列的身高进
行修改,并且 可以重复修改,值到满意为止。
4
、录入结束和修改之后,将数据按照
10
行
20
列的格式全部显示出来,以便于
查看
5
、
矮个中的高个和高个中的矮个,
采用数组的两重循环,
不停地进行比对。
ma x[i]
中存储每一行的最高的人,
min[j]
存放每一列的最矮的人。再对
max[i]
求最小
值
minmax
,对
min[j]
求 最大值,
maxmin
流程图:
随
机
生
成
数
据
开始
1.
手动输入
2.
随
机生成
0.
退出
结束
录入数据
显示数据
修改数据
显示数据
是否继续
修改
找出
maxmin
minmax
并比较
输出
2
、编程实现。
1
、
/******
菜单
******/
int menu()//
考虑到手动输入的真实性和随机输入的便捷性
提供
2
种模式
{
printf(
手动录入
2.
随机生成
0:
退出
n
printf(
请选择
0/1/2:>>
scanf(
while(m!=0&&m!=1&&m!=2)
{
printf(
请选择
0/1/2:>>
fflush(stdin);
scanf(
}
return m;
2
、
/**
显示所录入的数据
**/
void show(int (*p)[N])
{
int i,j;
printf(
所有数据如下
:n
for(i=0;i
{
for(j=0;j
{printf(
printf(
}
3
、
/***rectify** ***///
考虑到录入发生错误的情况,本程序提供修改
void rectify(int (*p)[N])
{
int x1,x2,k;
char c;
printf(
对录入结果是否需要修改?
y/n >>
re2:
fflush(stdin);
scanf(
if(c=='y')
{
re3:
printf(
请按以下格式输入需要修改的参数(行,列,身高)
:
n>>
fflush(stdin);
scanf(
while(x1<=0||x1>M||x2<=0||x2>N||k<100||k>=200)
{
printf(
请按照格式和要求输入!
n
goto re3;
}
p[x1-1][x2-1]=k;//
考虑到实 际人眼看到的行列数与数组的关系相差
1
,
以
人为本
show(p);
printf(
是否继续修改?
y/n >>
goto re2;
}
if(c!='y'&&c!='n')
{
printf(
输入有误,请输入
y
或
n >>
goto re2;
}
}
}
}
4
、随机生成数据:在100到200之间
srand((unsigned)time(NULL));
for(i=0;i
{
a[i][j]=rand()%100+100;
}
5
、
//
遍历并比较
maxmin
和
minmax
for(j=0;j
在每一列中选出一个最矮者(如这样人有几 个,可任选其
中一个)
。然后在所选的
20
个矮人中挑出最高者一人
{ min[j]=a[0][j];//min[j]
存放每一列的最矮的人
for(i=0;i
if(a[i][j]
}
}
maxmin=min[0]; //maxmin
存放
min[j]
中的最
max
的
for(j=0;j
}
printf(
矮个中的高个身高 为
:%dn
for(i=0;i
在每一行中选出一个最 高者(如这样人有几个,可任选其
中一个)
。然后在所选的
10
高人中挑出最 矮者一人
{ max[i]=a[i][0]; //max[i]
中存储每一行的最高的人
for(j=0;j
if(a[i][j]>max[i])
max[i]=a[i][j];
}
}
minmax=max[0];
for(i=0;i
minmax=max[i];
}
printf(
高个中的矮个身高 为
:%dn
3
、测试数据、测试结果、结果分析。
测试
1
:随机生成模式
测试结果:
结果分析:输入
2
选择随机生成模式,可以看出,所输入的数据都是在
100
测试
2
:手动录入
测试数据:见截图
测试结果:
结果分析:
-性疲劳
-性疲劳
-性疲劳
-性疲劳
-性疲劳
-性疲劳
-性疲劳
-性疲劳
本文更新与2021-02-24 09:54,由作者提供,不代表本网站立场,转载请注明出处:http://www.xapfxb.com/yuer/457690.html
-
上一篇:这几种疾病会影响孩子的身高
下一篇:第九章 习题及答案