




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.46.4实验六实验六 数组数组 一、一、 实验目的与要求实验目的与要求 1. 掌握一维数组的定义、赋值和输入输出的方法。 2. 理解一维数组的存储方法及下标的表示方法。 3. 掌握与数组有关的算法(特别是排序算法)。 4. 掌握二维数组的定义、赋值和输入输出的方法。 5. 理解二维数组的存储方法及下标的表示方法。 6. 实验 4 学时。 二、实验内容二、实验内容 1程序验证题与改错题 (1)程序验证题 给定一个整型数组 a,要求求出其中小于 0 的元素的个数。请验证下面的程序是否 符合题目要求。 #define N 10 void main() int aN=11,2,4,-1,5,-3,-66,0,10,-5; int i;/*变量 i 用于 for 循环*/ int count=0;/*变量 count 用于技术,初始化为 0*/ for (i=0;iN;i+) if(ai0) count+;/*如果元素 ai0,count 计数+1*/ printf(%dn,count); 给定一个整型二维数组 a(3,3),要求求出对角线元素的和。请验证下面的程序是否 符合题目要求。 #include #define N 3 void main() int aNN=1,2,3,4,5,6,7,8,9; int i,j;/*变量 i,j 用于 for 循环*/ int sum=0;/*变量 sum 用于求和,初始化为 0*/ for (i=0;iN;i+) for(j=0;jN;j+) if (i=j)sum+=aij;/*如果是对角线元素,sum+aij*/ 这里有改动 printf(%dn,sum); return 0; 注 1:在程序验证题的基础上,修改程序,求出数组 a 中大于 a0的元素之和。 答答; #include #define N 10 void main() int aN=11,2,4,-1,5,-3,-66,0,10,-5; int i,sum=0; int count=0; for (i=0;iN;i+) if(aia0) sum+=ai; printf(小于小于 0 元素的个数为元素的个数为:%dn,count); printf(大于大于 a0的元素之和为的元素之和为:%dn,sum); 注 2:对上述程序进行优化,消除内循环,实现同样的效果。在 的基础上,修改 程序,求出数组 a 中反对角线元素之和。提示:内循环用逆序;i+j=N-1。 答:答: #include#include #define#define N N 3 3 voidvoid main()main() intint aNN=1,2,3,4,5,6,7,8,9;aNN=1,2,3,4,5,6,7,8,9; intint i,j;i,j; intint sum=0;sum=0; forfor (i=0;iN;i+)(i=0;iN;i+) j=i;j=i; sum+=aij;sum+=aij; printf(%dn,sum);printf(%dn,sum); #include#include #define#define N N 3 3 voidvoid main()main() intint aNN=1,2,3,4,5,6,7,8,9;aNN=1,2,3,4,5,6,7,8,9; intint i,j;i,j; intint sum=0;sum=0; forfor (i=0;iN;i+)(i=0;iN;i+) for(j=0;jN;j+)for(j=0;jN;j+) ifif (i+j=N-1)(i+j=N-1) sum+=aij;sum+=aij; printf(%dn,sum);printf(%dn,sum); returnreturn 0;0; (2)程序改错题 2一般编程题 编程题编程题 1:从键盘输入 10 个整型数据,放入数组 a 中,求其最大值、最小值及其所在元素 的下标位置,并输出。 程序提示:定义 10 个元素的数组,用 for 循环语句逐一输入数据;定义最大值变量和最小 值变量,用 for 循环语句遍历所有数组元素,逐一比较查找最大值和最小值。 答:答: #include void main() int a10,max,min,t,p; int i; for(i=0;i10;i+) scanf(%d, max=a0; min=a0; for(i=1;imax) max=ai; t=i; if(aimin) min=ai; p=i; printf(最大值及其下标为最大值及其下标为:%d,%dn,max,t); printf(最小值及其下标为最小值及其下标为:%d,%dn,min,p); 编程题编程题 2:给定一个字符数组 a,要求将数组的内容倒置。如: 执行前数组的内容为1,2,3,4,5,6,7,8 执行后数组的内容为8,7,6,5,4,3,2,1 提示:用 i 表示数组的第一个元素的下标;用 j 表示数组最后一个元素的下标。 交换 ai和 aj,当 i=j 时交换完毕。 交换一个元素后,i+1,j-1。 答:答: #include #include #define N 10000 void main() char aN,t; int len,i,j; gets(a); len=strlen(a); for(i=0,j=len-1;ij;i+,j-) t=ai; ai=aj; aj=t; for(i=0;ilen;i+) printf(%c,ai); printf(nn); 编程题编程题 3: 给定一个二维数组 a,要求将数组的内容逆置。如: 执行前数组的内容为1,2,3,4,5,6,7,8,9, 执行后数组的内容为1,4,7,2,5,8,3,6,9 提示:用 i 表示数组的行下标;用 j 表示数组的列下标。以对角线元素为界,交换 aij 和 aji。 答:答: #include#include #define#define N N 100100 voidvoid main()main() intint i,j,x,y,aNN,t;i,j,x,y,aNN,t; printf(printf(行数行数:);:); scanf(%d,scanf(%d, printf(printf(列数列数:);:); scanf(%d,scanf(%d, printf(printf(输入数列输入数列:n);:n); for(i=0;iy;i+)for(i=0;iy;i+) for(j=0;jx;j+)for(j=0;jx;j+) scanf(%d,scanf(%d, printf(nprintf(n 正常数列为正常数列为:n);:n); for(i=0;iy;i+)for(i=0;iy;i+) for(j=0;jx;j+)for(j=0;jx;j+) printf(%5d,aij);printf(%5d,aij); printf(n);printf(n); for(i=0;ii;j-) t=aij;t=aij; aij=aji;aij=aji; aji=t;aji=t; printf(printf(交换后的数列为交换后的数列为:n);:n); for(i=0;ix;i+)for(i=0;ix;i+) for(j=0;jy;j+)for(j=0;jy;j+) printf(%5d,aij);printf(%5d,aij); printf(n);printf(n); 编程题编程题 4: 一个学习小组有 5 个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总 平均成绩。 张王李赵周 Math8061598576 C7565638777 English9271709085 提示: 可设一个二维数组 a53存放五个人三门课的成绩。 再设一个一维数组 v3存放所 求得各分科平均成绩,设变量 average 为全组各科总平均成绩。 答:答: #include#include voidvoid main()main() intint a35;a35; intint i,j;i,j; doubledouble sum1,sum2=0,v3,average;sum1,sum2=0,v3,average; printf(tprintf(t 张张tt 王王tt 李李tt 赵赵tt 周周n);n); for(i=0;i3;i+)for(i=0;i3;i+) switch(i)switch(i) casecase 0:printf(0:printf(math:);break;math:);break; casecase 1:printf(1:printf(c c:);break;:);break; casecase 2:printf(English:);break;2:printf(English:);break; for(j=0;j5;j+)for(j=0;j5;j+) scanf(%5d,scanf(%5d, for(i=0;i3;i+)for(i=0;i3;i+) sum1=0;sum1=0; for(j=0;j5;j+)for(j=0;j5;j+) sum1+=aij;sum1+=aij; vi=(double)sum1/5;vi=(double)sum1/5; sum2+=vi;sum2+=vi; average=sum2/3;average=sum2/3; for(i=0;i3;i+)for(i=0;i3;i+) switch(i)switch(i) casecase 0:printf(math0:printf(math averageaverage:%.2lfn,vi);break;:%.2lfn,vi);break; casecase 1:printf(chinese1:printf(chinese averageaverage :%.2lfn,vi);break;:%.2lfn,vi);break; casecase 2:printf(English2:printf(English averageaverage :%.2lfn,vi);break;:%.2lfn,vi);break; printf(totleprintf(totle average:%.2lfn,average);average:%.2lfn,average); 3.较难编程题 编程题编程题 1:给定一个整型数组 a,要求将数组 a 中的元素进行从小到大的排序(用冒泡法排 序) 【算法描述】 从第一个数开始依次对相邻两数进行比较, 如次序对则不做任何操作; 如次序不对则使这两 个数交换位置。第一遍的(N-1)次比较后,最大的数已放在最后;第二遍只需考虑(N-1) 个数,即不用考虑最后一个数;以此类推每次少考虑一个数,直到第(N-1)遍比较后就可 以完成排序。 答:答: #include #define N 1000 void main() int aN,n; int i,j,t; printf(请输入数组中元素的个数请输入数组中元素的个数:); scanf(%d, printf(输入数组输入数组:); for(i=0;in;i+) scanf(%d, for(i=0;in-1;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; printf(排序后的数列为排序后的数列为:); for(i=0;ie。若找到相等元素,则返回元素下 标,否则返回-1 表示无此数。 答:答: #include #define N 15 void f(int s,int n); void main() int sN=1,2,3,5,9,10,20,23,45,56,66,70,80,90,100,b=0,e=N,mid,x; printf(input anumber to search:); scanf(%d, while(b=e) mid=(b+e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专项5 标点(解析版)
- 2025年初中教科版八年级上册物理2.3测量物体运动的速度说课稿
- 2.2 声音的特性 说课稿-2025年初中人教版八年级物理上册
- 品牌战略规划作业指导书
- 电信行业网络优化及增值业务拓展方案
- 垃圾焚烧发电厂项目划分
- 房地产开发项目可行性研究论文
- 股份制改革实施路径研究
- 快递行业长期物流合作协议
- 针对提高团队协作效率的解决方案
- 《油气储存企业安全风险评估细则(2025年修订版)》解读与培训
- 2025年安徽职业技术学院单招职业适应性测试题库汇编
- 2025年内蒙古北方职业技术学院单招职业倾向性测试题库完美版
- Deepseek 学习手册分享
- 电网工程设备材料信息参考价(2024年第四季度)
- 《你当像鸟飞往你的山》读书分享读书分享笔记
- 2024年浙江省中考社会试卷真题(含标准答案及评分标准)
- 20以内退位减法口算练习题100题30套(共3000题)
- 4925095728国内外中小学作业研究综述
- 外墙粉刷施工方案(完整版)
- 华为-原理图绘制评审规范-checklist
评论
0/150
提交评论