试验项目一:数组
《《C C 语言程序设计》实验报告语言程序设计》实验报告 实验项目一:数组实验项目一:数组 学号 实验时间 一、实验目的及要求 1605120308 2017.02.28 姓名 实验地点 何峰 机房 6 专业、班级 指导教师 计算机 03 班 孙爱蓉 (1)正确理解数组的概念,熟练掌握一维数组和二维数组的定义和初始化方法。 (2)熟练掌握字符数组和字符串的区别和使用、字符串函数的使用。 (3)熟练掌握一维数组、二维数组以及字符串的输入和输出方法。 (4)掌握冒泡排序、选择排序及查找算法。 (5)掌握字符窜的结束标志,正确使用字符串的结束标志对字符串进行处理。 通过编程和调试程序,加深对数组、字符数组和字符串函数应用的理解二、实验设备(环境)及要求 使用 Visual C++ 6.0;windows 系列操作系统的环境。 三、实验内容与步骤(要求以“学号要求以“学号_ _姓名姓名_ _题号”为名建立项目;题号”为名建立项目; 例项目名为:例项目名为:2013050201_***_012013050201_***_01) 1.运行下面的 c 程序。 运行结果: 分析: Num 数组里面有五个数,而循环式循环六次,对于第六个数,数组里面没有定义,所以输出时出现错误。 2. 运行下面的 c 程序: 1)从键盘输入字符串:how are you,观察结果。 运行结果: 1 2)将上述程序的第四行改成 scanf( “%s” , char str[11]={ h , o , w , , a , r , e , , y , o , u }; for(i=0;i0) zheng=zheng+1; if(a[i]max) {max=a[i];{max=a[i]; t1=i+1;}t1=i+1;} { min=a[i];{ min=a[i]; t2=i+1;}t2=i+1;} } } printf(“printf(“最小的数为最小的数为%d,%d,为第为第%d%d 个数个数\n“,min,t2);\n“,min,t2); printf(“printf(“最大的数为最大的数为%d,%d,为第为第%d%d 个数个数\n“,max,t1);\n“,max,t1); return 0;return 0; if(a[i]min)if(a[i]min) 10.编写一个程序,从键盘读入数据,对一个 3*4 矩阵进行赋值,求其转置矩阵,然后输出原矩阵和转置矩阵。 #include#include int main()int main() {int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};{int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; { { int b[4][3],i,j;int b[4][3],i,j; for(j=0;j=3;j++)for(j=0;j=3;j++) {printf(“%5d“,a[i][j]);{printf(“%5d“,a[i][j]); b[j][i]=a[i][j];}b[j][i]=a[i][j];} for(i=0;i=2;i++)for(i=0;i=2;i++) printf(“\n“);}printf(“\n“);} printf(“\n“);printf(“\n“); for(i=0;i=3;i++)for(i=0;i=3;i++) { for(j=0;j=2;j++){ for(j=0;j=2;j++) printf(“%5d“,b[i][j]);printf(“%5d“,b[i][j]); printf(“\n“);}printf(“\n“);} return 0;return 0; } } 6 11.编程实现“折半查找”的过程。折半查找的处理过程是:在一个数据已排好序的数组中,首先比较关键字与数组中间 的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的 前半部中继续折半查找;如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只需在数组的后半部 继续进行折半查找。 要求: (1)设定一个数组存放 20 个数据,用赋初值的方法在程序中给出(假设这些数据已排序) 。 (2)用 scanf 函数输入一个要找的数。 (3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素。如果该数不在数组中,则输 出“无此数”信息。 (4)任意输入一些数据,检查程序的正确性。 (5)修改程序,设定输入的数据是无序的,采用 scanf 函数的形式输入,首先要对这些无序的数据进行排序,然后再 采用“折半查找” 。最后通过测试几组差别较大的数据检查程序的正确性。 (6)修改程序,改为函数调用的形式。编写一个选择法排序函数,对无序数据进行排序;编写一个查找函数对已排 好序的数据进行查找。在主函数中输入数据(无序) ,调用上述函数,输出结果。 #include int main() {int a[20]={1,2,5,6,12,13,15,16,18,19,20,24,25,26,28,29,31,34,54,56}; int x,low,found,high,mid; low=0,high=19,found=0; scanf(“%d“, while(lowa[mid]) low=mid+1; else if(xa[mid]) high=mid-1; else found=1;} if(found) printf(“这个数是第%d 个数\n“,mid+1); else printf(“未找到\n“); return 0; } 、 #include int main () { int a[20],x,t,i; for(i=0;i=19;i++) scanf(“%d“, int paixu(int[],int); 7 paixu(a,20); printf(“排好序列的数为:“); for(i=0;i=19;i++) printf(“%4d“,a[i]); printf(“\n“); scanf(“%d“, int low,found,high,mid; low=0,high=19,found=0; while(lowa[mid]) low=mid+1; else if(xa[mid]) high=mid-1; else {found=1;t=mid+1;}} if(found) printf(“这个数是第%d 个数\n“,t); else printf(“未找到\n“); return 0; } int paixu(int b[],int n) { } 四、分析与讨论 对上机实践结果进行分析,上机的心得体会。 1.多分析例题,从中找出自己不太懂的地方多分析,多琢磨 2.上课认真听讲 3.课下多做练习 int i,j,k; for(i=0;i=n-2;i++) for(j=i+1;jb[j]) {k=b[i]; b[i]=b[j]; b[j]=k;} return 0; 五、教师评语 签名: 日期: 成绩 8