




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如有你有帮助,请购买下载,谢谢!一、实验项目名称数组二、实验目的1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。2.掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其特点。掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。3.掌握与数组相关的算法,包括排序算法和查找算法等。三、实验内容进行有关数组的程序设计。具体内容:1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。要求:(1)数组为整型数组(10个元素)。(2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。(3)输出时给出必要的说明,首先输出原始的10个元素,大值在数组中的位置、最小值以及最小值在数组中的位置。(4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序?换行后输出最大值以及最2.编程实现:在给定的字符串中查找满足条件的第一个字符。要求:(1)字符串采用初始化的方式处理。(2)通过scanf函数读入一(3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。如果不存在该字符,则要给出相应的信息。3.编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个任意字符。个由n决定的二维整型数组(nn),形成nn阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组不允许动态定义)。例如:原始数据:n=4123435910811141615276要求:结果数据:811141635910123415276(1)本题中所涉及到的循环都采用for语句。(2)在输入/输出时进行必要的说明。1页
如有你有帮助,请购买下载,谢谢!(3)对输入的2~10之间的整数(例如4)以n=4的格式输出。(4)输入一个nn矩阵(假定最大值与最小值不在同一行上),输出原始矩阵数据(按上述矩阵形式)。(5)查找最大值与最小值,将矩阵中最大元素所在的行和最小元素所在的行对调,输出对调后的矩阵数据。(6)修改程序,对最大值与最小值可能出现在一行上的情况做出说明。(7)对n为3,4,5时,输入数组元素是要注意哪些问题?执行程序,检查程序的正确性。4.编程实现“折半查找”的过程。折半查找的处理过程是:在一个数据已排好序的数组中,首先比较关键字与数组中间的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只在需数组的前半部中继续如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只在需数组的后半部继续进折半查找;行折半查找。要求:(1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据已排序)。(2)用scanf函数输入一个要找的数。(3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素。如果该数不在数组中,则输出“无此数”信息。(4)任意输入一些数据,检查程序的正确性。(5)修改程序,设定输入的数据是无序的,采用scanf函数的形式输入,首先要对这些无序的数据进行排序,然后再采用“折半查找”。最后通过测试几组差别较大的数据检查程序的正确性。(6)修改程序,改为函数调用的形式。编写一个选择法排序函数,对无序数据进行排序;编写一个查找函数对已排好序的数据进行查找。在主函数中输入数据(无序),调用上述函数,输出结果。5.编程实现:三个学生、五门课程的成绩分别存放出每个学生的平均成绩存放在该数组的最后一列的对应行上。计算单科的成绩在4×6矩阵的前3×5列,计算总和存放在最后一行的对应列上,并输出单科成绩的平均分。输入/输出格式举例如下:Input(输入成绩):6587685678<cr>8394678591<cr>7175698489<cr>Output(输出结果):65837187947568676956858478918970.584.077.52页
如有你有帮助,请购买下载,谢谢!219.0256.0204.0258.0232.00average:73.085.368.086.077.3要求:(1)数组类型为实型,输入成绩由scanf函数实现。(2)输出已输入的原始成绩数据(3×5)。(3)计算每个学生的平均成绩以及单科的成绩总和并按要求填入到数组中,输出填入结果后的数组(4×6)。(4)j计算单科平均成绩6.编写函数catStr(charstr1[],charstr2[])用于进行两个字符串的编写函数cmpStr()用于判断两个字符串的后输出。连接,编写函数lenStr()用于统计一个字符串的长度。大小。要求:(1)不允许使用字符处理库函数。(2)在主函数以初始化的方式输入两个字符串str1、str2。调用函数lenStr()计算字符串的长度。(3)调用函数cmpStr()判断两个字符串的大小,如果str1大于等于str2,调用函数catStr()进行两个字符串的连接,将str1连接在str2后,将str2连接在str1后,调用函数lenStr()统计连接后的字符串长度。(4)在主函数中输出两个原始字符串和各自的长度以及处理后字符串及其长度。否则,四、实验步骤在编程软件中写如以下代码:一、#include<stdio.h>voidmain(){inta[10],i,j,k,max,min;printf("请输入10个数:\n");for(i=0;i<10;++i)scanf("%d",&a[i]);printf("原始数据:");for(i=0;i<10;++i)printf("%d",a[i]);printf("\n");max=a[0];/*初始化max和min*/min=a[0];for(i=0;i<10;++i){if(a[i]>=max)3页
如有你有帮助,请购买下载,谢谢!max=a[i];if(a[i]<=min)min=a[i];/*找最大值和最小值*/}printf("最大值为for(i=0;i<10;++i)/*应对有多个最值的情况if(a[i]==max)printf("第%d个",i+1);printf("数,printf("最小值为");*/%d\n",max);");for(i=0;i<10;++i)if(a[i]==min)printf("第%d个",i+1);printf("数,%d",min);}修改为20个元素的方案:将程序中所有的10改为20即可。如果数组元素不断改变,只需将代码中的10改成元素个数即可。二、#include<stdio.h>#include<string.h>voidmain(){intj,n;chari;charc[]={"Iamastudent"};/*初始化字符串*/printf("给定字符串为:%s\n请输入要查找的字符:",c);scanf("%c",&i);n=strlen(c);/*得到函数for(j=0;j<n;++j)if((int)c[j]==(int)i)给定字符串的长度*/{printf("字符串中满足条件的第一个字符为第%d个字符",j+1);break;/*找到符合条件的第一个字符,结束循环*/}if(j>=n)printf("字符串中不存在满足条件的字符!");}三、4页
如有你有帮助,请购买下载,谢谢!#include<stdio.h>voidmain(){intn,j,k,z,x,max,min,a[10][10];printf("请输入一个2到10之间的数:");scanf("%d",&n);printf("请输入一个n*n数组:\n");for(j=0;j<n;++j)for(k=0;k<n;++k)scanf("%d",&a[j][k]);printf("原始数组为:n=%d\n",n);for(j=0;j<n;++j){for(k=0;k<n;++k)printf("%5d",a[j][k]);/*输出原始数组*/printf("\n");/*输出n个数后换行,使数组为n*n的格式*/}max=a[0][0];/*初始化最大值和最小值*/min=a[0][0];z=0;x=0;for(j=0;j<n;++j)for(k=0;k<n;++k)if(a[j][k]>max){max=a[j][k];z=j;/*得到最大值的行数*/}for(j=0;j<n;++j)for(k=0;k<n;++k)if(a[j][k]<min){min=a[j][k];x=j;/*得到最小值的行数*/}for(j=0;j<n;++j){k=a[z][j];a[z][j]=a[x][j];a[x][j]=k;/*交换最大值所在行和最小值所在行*/}printf("结果数据:\n");for(j=0;j<n;++j)/*输出结果*/{for(k=0;k<n;++k)printf("%5d",a[j][k]);5页
如有你有帮助,请购买下载,谢谢!printf("\n");}}修改程序得到最大值和最小值所在行,只需在程序末尾加上语句:printf(“最大值在第%d行,最小值在第%d行”,z,x);在输入数组元素时要注意尽量不要重复出现最大值和最小值,程序会以最值中第一个出现的值作为最值。四、#include<stdio.h>voidmain(){inta[20];intn,j,i,k;printf("给定的数组为:\n");for(n=0;n<20;++n){a[n]=2*n+3;/*给定数组的初始化*/printf("%d",a[n]);}printf("\n");printf("请输入要查找的数:");scanf("%d",&j);intm=20;for(n=0;n<=m;)/*折半查找*/{i=(n+m)/2;if(a[i]<j)n=i+1;elseif(a[i]>j)m=i-1;elseif(a[i]=j){printf("该数在数组的第%d位上if(n>m)printf("无此数",i+1);break;}/*输出找到的数,结束循环*/}");}按要求修改后的程序为:#include<stdio.h>voidarr();/*声明排序intsea(intj);/*声明折半查找函数inta[20];/*定义全局变量函数*/*/*/voidmain(){intn,j,i,h;printf("请输入20个数据:\n");6页
如有你有帮助,请购买下载,谢谢!for(n=0;n<20;++n){scanf("%d",&a[n]);/*输入无序的20个数据*/}arr();/*调用排序函数*/printf("\n请输入要查找的数:");scanf("%d",&j);h=sea(j);/*调用折半查找函数*/if(h==0)printf("无此数");elseprintf("该数在已排序数组的第%d位",h);}voidarr()/*排序函数*/{intz,n;for(intn=0;n<20;++n)for(intk=0;k<19-n;++k)if(a[k]>a[k+1]){z=a[k];a[k]=a[k+1];a[k+1]=z;}printf("将数组排序,得:\n");for(n=0;n<20;++n)printf("%d",a[n]);/*输出已排序的数组*/}intsea(intj){intn,i,h,m=20;for(n=0;n<=m;){i=(n+m)/2;if(a[i]<j)n=i+1;elseif(a[i]>j)m=i-1;elseif(a[i]=j){h=i+1;break;}/*找到该数后停止循环*/}7页
如有你有帮助,请购买下载,谢谢!if(n>m)h=0;returnh;/*返回h值*/}五、#include<stdio.h>voidmain(){intj,k;floata[3][5],d[3]={0},b[6]={0},c[5]={0};printf("Input(输入成绩):\n");for(j=0;j<3;++j)for(k=0;k<5;++k)scanf("%f",&a[j][k]);for(j=0;j<3;++j)for(k=0;k<5;++k)d[j]=d[j]+a[j][k]/5;for(k=0;k<5;++k)for(j=0;j<3;++j)b[k]=b[k]+a[j][k];for(j=0;j<3;++j)b[5]=b[5]+d[j];for(k=0;k<5;++k)c[k]=b[k]/3;printf("\nOutput(输出结果):");for(j=0;j<3;++j){printf("\n");for(k=0;k<5;++k)printf("%-7.0f",a[j][k]);printf("%-7.1f",d[j]);}printf("\n");for(k=0;k<6;++k)printf("%-7.1f",b[k]);printf("\nAverage:\nfor(k=0;k<5;++k)printf("%-7.1f",c[k]);");}六、#include<stdio.h>voidcatStr(charstr1[],charstr2[]);/*声明连接两个字符串的函数*/intlenStr(charstr[]);/*声明统计长度的函数*/intcmpStr(charstr1[],charstr2[]);/*声明比较字符串大小的函数*/charstr3[]={""};voidmain(){intn,j,k,len1,len2,len3;8页
如有你有帮助,请购买下载,谢谢!charc,str1[]={""},str2[]={""};printf("请输入str1:");gets(str1);printf("请输入str2:");gets(str2);printf("str1原长为:%d\nstr2原长为:%d\n",lenStr(str1),lenStr(str2));/*调用统计长度的函数并输出原始长度*/j=cmpStr(str1,str2);/*调用比较大小函数*/if(j==1)/*将小字符串连接在大字符串后面*/{printf("\"%s\"大于\"%s\"\n",str1,str2);catStr(str1,str2);/*调用连接两个字符串的函数*/printf("合成的字符串为:%s\n",str3);}else{printf("\"%s\"小于\"%s\"\n",str1,str2);catStr(str2,str1);printf("合成的字符串为:%s\n",str3);}printf("合成的字符串长度为:%d",lenS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国鸵鸟养殖项目创业计划书
- 中国假牙(义齿)项目创业计划书
- 中国口腔医院设备项目创业计划书
- 中国口腔美容医疗项目创业计划书
- 中国科技档案管理系统项目创业计划书
- 中国酒类电子商务项目创业计划书
- 中国内瘘针项目创业计划书
- 中国高端农产品项目创业计划书
- 中国动物呼吸机项目创业计划书
- 中国电子设计自动化软件(EDA)项目创业计划书
- 《城镇燃气领域重大隐患判定指导手册》专题培训
- 人工智能技术在影视创作中的应用及其伦理审视
- 酒店式公寓长租业务运营管理方案设计
- 唾液腺结石病
- 电磁学知到智慧树章节测试课后答案2024年秋齐鲁师范学院
- 【MOOC】电子线路设计、测试与实验(一)-华中科技大学 中国大学慕课MOOC答案
- 体育行业智慧场馆运营服务方案
- 河南开放大学补修课《刑法学#》终考试题及答案
- 实+用法律基础-形成性考核任务二-国开(ZJ)-参考资料
- 2024年四川省泸州市中考化学试题含答案
- 2024-2025学年八年级化学沪科版(五四学制)全一册上学期期末复习卷①
评论
0/150
提交评论