湖北理工学院14本科C语言实验报告实验四数组

上传人:工**** 文档编号:506322632 上传时间:2023-05-12 格式:DOC 页数:17 大小:91.50KB
返回 下载 相关 举报
湖北理工学院14本科C语言实验报告实验四数组_第1页
第1页 / 共17页
湖北理工学院14本科C语言实验报告实验四数组_第2页
第2页 / 共17页
湖北理工学院14本科C语言实验报告实验四数组_第3页
第3页 / 共17页
湖北理工学院14本科C语言实验报告实验四数组_第4页
第4页 / 共17页
湖北理工学院14本科C语言实验报告实验四数组_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《湖北理工学院14本科C语言实验报告实验四数组》由会员分享,可在线阅读,更多相关《湖北理工学院14本科C语言实验报告实验四数组(17页珍藏版)》请在金锄头文库上搜索。

1、实验四 数 组实验课程名:C语言程序设计专业班级: 14电气工程2班 学号: 201440210237 姓名: 熊帆 实验时间: 5.12-5.26 实验地点: K4-208 指导教师: 祁文青 一、实验目的和要求1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法;2. 掌握字符数组和字符串函数的使用;3. 掌握与数组有关的算法(特别是排序算法)。二、实验内容1. 调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。写出调试过程。#include #define N 10void main( ) int i,aN,av;for(i=0;i

2、N;i+) scanf(%d,ai);for(i=0;iN;i+) printf(%d,ai); if(i%3=0) printf(n);for(i=0;i!=N;i+)av+=ai;printf(av=%fn,av);解答:(1) 源代码: #include#define N 10void main()int i,aN;float av=0;for(i=0;iN;i+)scanf(%d,&ai); printf(n);for(i=0;iN;i+)printf(%3d,ai);if(i+1)%3=0)printf(n);for(i=0;i!=N;i+)av+=ai;printf(n);av=a

3、v/N;printf(n);printf(av=%fn,av);(2)运行结果: (3) 运行结果分析:原程序中有若干处错误,分别为av这个变量应该定义为float型,scanf语句中输入数组的时候,在它前面应该加上地址符&。第一个if语句if(i%3=0),应该改成if(i+1)%3=0),因为要实现一行三个地输出,实际i=0对应的才是数组中的第一个元素。再者,在程序的适当位置加上输出换行语句可使得程序1执行页面更美观。 调试的过程大体可分为三大块,第一块为从第7行到第9行,功能为输入10个值。第二 块为从第10到第15行,功能为一行三个地输出那10个值。第三块为最后一个for语句, 功能为

4、将那10个值进行累加。 2. 下面程序是输入5个数据,然后求它们的和并输出结果。#include void main( )int i, a5, sum = 0; scanf(%d,%d,%d,%d,%d, a ); for (i = 0; i = 4; i +) sum += ai; printf(sum = %d n, sum);该程序中有哪些错误?如何修改?写出正确运行后的结果。解答:(1) 源代码:#includevoid main()int i,a5,sum=0;for(i=0;i=4;i+)scanf(%d,&ai);for(i=0;i=4;i+)sum+=ai;printf(sum

5、=%dn,sum);(2) 运行结果: (3) 运行结果分析:原程序中的scanf语句是错的,应该采用for语句循环输入,还要把a换成ai,并在前面加上地址符&。验证程序的时候输入了这样五个值:54 24 33 12 8。然后运行程序,发现输出结果和预期一致。3. 有一个3行4列的距阵,现要求编程求出其中最大的那个元素的值,以及它所在的行号与列号。下面程序的初始说明和输出语句如下所示,请补充完成该程序。#include void main( )int i, j, row, colum, max;static int a34 = 1,2,3,4, 9,8,7,6, -10,10,-5,2; pr

6、intf( Max = %d, Row = %d, Colum = %d n, max, row, colum);解答:(1) 源代码:#includevoid main()int i,j,row,colum,max;static int a34 = 1,2,3,4, 9,8,7,6, -10,10,-5,2; max=a00;for(i=0;i3;i+)for(j=0;j4;j+)if(maxaij)max=aij;row=i+1; colum=j+1;printf(Max=%d,Row=%d,Colum=%dn,max,row,colum);(2) 运行结果: (3) 运行结果分析:应该对

7、原本不完整的程序作这样的补充,加上两个for循环语句,以实现找出数组中最大的元素。并用row和column分别储存行标和列标,但要注意+1。4. 数组中已存互不相同的10个整数,从键盘输入一个整数,输出与该值相同的数组元素下标。解答:(1) 源代码: #includevoid main() int i,x,a10=1,2,3,4,5,6,7,8,9,10; scanf(%d,&x); for(i=0;i10;i+) printf(%4d,ai); printf(n); for(i=0;i10;i+) if(x=ai) break; if(i10) printf(该元素的下标为%dn,i); e

8、lse printf(该数组中没有 %dn,x);(2) 运行结果: (3) 运行结果分析:数组中已存互不相同的10个整数:1,2,3,4,5,6,7,8,9,10。验证程序的时候分别输入了7和19,并且正确地输出了下标或输出结果。如上面两张图所示。5. 编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。解答:(1) 源代码:#includevoid main()int a11,i,j,x,temp;printf(请输入10个整数:n);for(i=0;i10;i+)scanf(%d,&ai);for(j=0;j9;

9、j+)for(i=0;i9-j;i+)if(aiai+1)/排序,交换temp=ai+1;ai+1=ai;ai=temp;for(i=0;i10;i+)printf(%d ,ai);printf(n);printf(请再输入一个整数:);scanf(%d,&x);for(i=0,j=0;i=x&x=ai+1)j=i;break;elsecontinue;for(i=0;ij+1;i+)printf(%d ,ai);/输出插入点前的数字temp=aj+1; aj+1=x;printf(%d ,aj+1);/输出插入点的数字aj+1=temp;for(i=0;i9-j;i+)/移位交换a10-i=

10、a9-i;for(i=0;i9-j;i+)printf(%d ,ai+j+2);/输出插入点后的数字printf(n);(2)运行结果: (3)运行结果分析:运行程序时输入了这样10个整数:6 11 9 15 68 23 2 32 50 28。经过程序中排序部分的作用,将10个整数按从大到小的顺序排序为:68 50 32 28 23 15 11 9 6 2。和预期是一致的,再输入一个数,以26为例,26位于28和23之间,于是按照程序变插入到28和23之间,最后输出68 50 32 28 26 23 15 11 9 6 26. 输入十个互不相同的整数并存在数组中,找出最大元素,并删除。解答:(

11、1) 源代码:#includevoid main()int a10,i,m,t,n;printf(输入十个互不相同的整数:n);for(i=0;i10;i+)scanf(%d,&ai);n=a0;printf(删除其中最大的数之后:n);for(i=1;i10;i+)if(nai)n=ai;m=i;t=m;for(i=m;i9;i+)ai=ai+1;a9=t;for(i=0;i9;i+)printf(%d ,ai);printf(n);(2)运行结果: (3) 运行结果分析:在运行程序的时候,输入了如图所示的十个不同的整数,经过程序的执行,删除其中最大的数97,再将剩下的9个数输出来。7. 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空:#include void main( ) float x1000, sum=0.0, ave, a; int n=0, i;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号