南邮c语言程序设计过,南邮c语言程序设计(上机)报告.doc

南邮c语言程序设计(上机)报告

南京邮电大学通达学院

程序设计(上机)软件验收设计报告评 分 等 级

教师签名:

年 月 日备 注注:评分等级分为五种:优秀、良好、中等、及格、不及格

题目一:

1、问题描述:

题目编号内容 要求难度R009M 200个学生不按身高任意排成10行﹑20列的长方形队列。在每一列中选出一个最矮者(如这样人有几个,可任选其中一个)。然后在所选的20个矮人中挑出最高者一人,叫做“矮人中的高个子”。然后,令这20个矮人各回原位。再在每一行中选出一个最高者,又从这10个高人中挑出最矮者一人,叫“高个子中的矮子”。请问“矮人中的高个子”和“高个子中的矮子”这二人中哪个高?Middle2、课题分析:

根据题目要求,可知这题需要运用数组和比较大小。先建立一个10行20列的数组,然后通过置换比较求得每一列的最小值和每一行的最大值,分别存入min[j]和max[i]中。再比较min[j]中的数,求得其中最大数minmax;比较max[i]中数,求得其中的最小数maxmin.最后比较minmax和maxmin,并输出结果。

3、算法描述:

算法流程图如下图1-1所示:

图1.1:算法流程图

4、源代码:

#include

void main() {

int i,j,maxmin,minmax;

int a[10][20];

int min[20],max[10];

printf("输入10行﹑20列学生身高:\n");

for(i=0;i<10;i++)

for(j=0;j<20;j++) {

scanf("%d",&a[i][j]); //输入数组的值

}

for(j=0;j<20;j++) {

min[j]=a[0][j]; //先把第一个值设为最小值,然后与后面的数逐一比较

for(i=0;i<10;i++) {

if(a[i][j]

min[j]=a[i][j]; //从第一行开始比较,若有a[i][j]小于min[j]的值,则置换min[j].就是求每列的最小值min[j]

} //把20列的最小值都找出来,存放在min[20]里面

}

minmax=min[0]; //把min[0]的值赋给maxmin,让maxmin和min数组里的其它数比较,若有比maxmin大的则置换maxmin.就是求maxmin的值

for(j=0;j<20;j++) {

if(minmax

minmax=min[j];

}

printf("矮人中的高个子的身高为:%d\n",minmax); //输出min数组里最大的数minmax

for(i=0;i<10;i++) {

max[i]=a[i][0];

for(j=0;j<20;j++)

{

if(a[i][j]>max[i])

max[i]=a[i][j]; //找到每行中的最大值,存放到max[i]数组里面

}

}

maxmin=max[0];

for(i=0;i<10;i++) {

if(maxmin>max[i])

maxmin=max[i];

}

printf("高个子中的矮子的身高为:%d\n",maxmin); //找到max[i]数组中的最小值,放到maxmin中,输出maxmin的值

if (maxmin>minmax)

printf("高个子中的矮子 比 矮人中的高个子 高!%d\n",maxmin);

if (maxmin

printf("矮人中的高个子 比 高个子中的矮子 高!%d\n",minmax);//比较maxmin和minmax的大小,输出大的值

if (maxmin==minmax)

printf("矮人中的高个子 与 高个子中的矮子 一样高!%d\n",minmax);

}

根据输入的数值,可知数组min[j]中存放的数按顺序为:157、154、158、159、157、157、159、159、158、158、158、159、158、154、157、159、157、158、158、154,minmax为159,即矮人中的高个子身高为159cm.max[i]中存放的数按顺序为:185、190、190、196、186、197、187、191、187、196,maxmin为185,即高个子中的矮子的身高为185cm.最后比较minmax和maxmin,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值