




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验5 数组班级:学号:姓名:日期:一、实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出方法;(2)掌握字符数组和字符串函数的使用;(3)掌握与数组有关的算法(特别是排序算法)。二、实验内容1阅读下面程序,写出程序运行结果,并且上机进行验证。(1) #include stdio.hvoid main()int i,n4=0,0,0,0;for(i=1;i=0;i-)printf(%c,bi);printf(n);(3)#include stdio.hvoid main()int a3=9,7,5,3,1,2,4,6,8;int i,j,s1=0,s2=0;for(i=0;i3;i+)for(j=0;j3;j+)if(i=j) s1=s1+aij;if(i+j=2) s2=s2+aij;printf(s1=%d s2=%d,s1,s2);(4)#include stdio.hvoid main()int r5=1,2,3,4,5;int i,j,a55;for(i=0;i=4;i+) for(j=i;j=4;j+)aij=rj-i;for(j=0;ji;j+)aij=ri-j;for(i=0;i5;i+)for(j=0;j5;j+)printf(%2d,aij);printf(n);2程序填空(根据题意在空白处填入适当的内容,使程序变得完整。并上机进行调试验证)(1)程序说明:下列程序完成的是插入排序功能:数组a 中存放一个递增数列,输入一个整数x,将它插入到数组中,使之仍为一个有序数列。#include stdio.h#define N 10void main()int a11=1,10,20,30,40,50,60,70,80,90 ,x,i,p;scanf(%d,&x);for(i=0,p=N;iN;i+)if(x=p; _i-_)ai+1=ai;_ap=x_;printf(%d,x);for(i=0;i=N;i+)printf(%5d,ai);printf(n);(2)程序说明:下面程序完成的是折半查找。A 数组中存放的是n 个由大到小已经排好序的数列,从这n 个数中查找x 的值是否存在。其基本思想是:在查找范围里,将x 与处于中间位置上的数比较,如果相等,则查找成功,如果小于该元素,则在较小的一半元素里再进行折半查找;如果x大于该元素,则在较大的一半元素里再进行折半查找。变量top,bottom,mid 分别指向查找范围的顶部、底部和中间位置。#include stdio.h#define n 10main()int an,find;int x,i,top,bottom,mid;printf(input the sorted numbers:n);for(i=0;in;i+)scanf(%d,_&ai_);printf(input the number to find:n);scanf(%d,&x);find=0;top=0;bottom=n-1;if(x=a0 & top=bottom)while(!find & topamid)bottom=mid-1;elsetop=mid+1;if(find=0) printf(the number %d is not in the table,x);(3)程序说明:下面程序分别输出方阵中主对角线、副对角线上元素的和suml 和sum2(主对角线为从矩阵的左上角至右下角的连线,副对角线为从矩阵的右上角至左下角的连线).#includestdio.h#define SIZE 5void main()int aSIZESIZE,m,n,sum1,sum2;for(m=0;mSIZE;m+)for(n=0;nSIZE;n+)scanf(%d,&amn);sum1=sum2=_0_;for(m=0;mSIZE;m+)sum1=sum1+amm;sum2=sum2+amSIZE-1-m;printf(sum1=%d sum2=%dn,sum1,sum2);(4)程序说明:下面程序打印出如下所示的杨辉三角行(打印10 行)。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1.#includestdio.hvoid main()int i,j,a1010=1,1,1;for(i=2;i10;i+)ai0=1;_ aii=1;for(j=0;ji;j+)aij=ai-1j+ ai-1j-1;for(i=0;i10;i+)for(j=0;j=i;j+)printf(%4d,aij);printf(n);3程序设计(根据题意编写程序并上机进行调试)。(1)编写程序完成如下功能:输入10 个数存入一维数组,然后再按逆序重新存放后输出。#include void main()int a10,i,temp;for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i10;i+)printf(%5d,ai);printf(n);for(i=0;i5;i+)temp=ai;ai=a9-i;a9-i=temp;for(i=0;i10;i+)printf(%5d,ai);printf(n);(2)编写程序完成如下功能:从键盘输入两个字符串ch2、 ch1,然后将字符串ch2 连接到字符串ch1 的后面,并输出连接后的字符串。#include #include void main()char ch120,ch210;int i,j;scanf(%s,ch1);scanf(%s,ch2);j=strlen(ch1);for(i=0;istrlen(ch2);i+,j+)ch1j=ch2i;ch1j=0;printf(%sn,ch1);(3)编写程序完成如下功能:现有两个已按升序排好的数组,将它们合并为一个升序排序的数组(归并排序)。算法:两个数组合并时,可为每个数组各安排一个指针,从第一个元素开始依次比较两数组对应元素,小的取下来顺序放入新的数组,取下所指元素的指针后移,再比较,依此类推,直到其中一个数组的元素已全部放入新数组,再把另一数组余下的元素全部顺序放入新数组,归并完成。编程并上机调试运行。(1)用选择法对10个整数排序。10个整数用scanf函数输入。#include void main() int i,j,min,temp,a11; printf(enter data:n); for(i=1;i=10;i+) printf(a%d=,i); scanf(%d,&ai); printf(The orginal numbers:n); for(i=1;i=10;i+) printf(%5d,ai); printf(n); for(i=1;i=9;i+) min=i; for(j=i+1;jaj) min=j; temp=ai; ai=amin; amin=temp; printf(n The sorted numbers:n); for(i=1;i=10;i+) printf(%5d,ai); printf(n);(2)有15个数存放在一个数组中,输入一个数,要求用对半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输入“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。#include void main() int i,number,top,bott,mid,loca,a15,flag=1,sign; char c; printf(enter data:n); scanf(%d,&a0); i=1; while(i=ai-1) i+; else printf(enter this data again:n); printf(n); for(i=0;i15;i+) printf(%5d,ai); printf(n); while(flag) printf(input number to look for:); scanf(%d,&number); sign=0; top=0; bott=14; if(numbera14) loca=-1; while(!sign)&(top=bott) mid=(bott+top)/2; if(number=amid) loca=mid;printf(Has found %d,its postion is %dn,number,loca+1);sign=1; else if(numberamid)bott=mid-1; elsetop=mid+1; if(!sign | loca=-1) printf(can not found %d.n,number); printf(continue or not(Y/N)?); scanf(%c,&c); if(c!= N | c!= n | c!= Y | c!= y) scanf(%c,&c);if(c=N | c=n) flag=0; (3)将两个字符串连接起来,不要用strcat函数。#include void main() char s180,s240; int i=0,j=0; printf(ninput string1: ); gets(s1); printf(input string2: ); gets(s2); while(s1i!=0) i+; while(s2j!=0) s1i+=s2j+; s1i=0; printf(The new string is: %s,s1);(4)找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。应至少准备两组测试数据:二维数组有鞍点,例如:二维数组没有鞍点,例如:用scanf函数从键盘输入数组各元素的值,检查结果是否正确。题目并未指定二维数组的行数和列数,程序应该能处理任意行数和列数的数组,因此,从理论上说,应当准备许多种不同行数和列数的数组数据,但这样的工作量太大,一般来说不需要这样做,只需要准备典型数据即可。#include void main() int a45,i,j,k,max,maxj,flag; printf(please input matria:n); for(i=0;i4;i+) for(j=0;j5;j+) scanf(%d,&aij); for(i=0;i4;i+) max=ai0; m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财务透明度提高对风险防范的作用
- 单位派遣合同(标准版)
- 绿化项目验收申请报告(3篇)
- 《三十讲》每一讲课件
- 陇南养殖项目申请报告(3篇)
- 学校装修施工合同(标准版)
- 乃捷尔初乳素课件
- 《一园蔬菜成了精》课件
- 《一分钟》课件教学课件
- DiSC3-5-solution-生命科学试剂-MCE
- 2025年中国医院创新转化报告-中国医学创新联盟
- 2025年6月黑吉辽蒙高考地理真题完全解读
- 2023年宪法学习宪法知识竞赛试题及答案
- 汇率预测模型优化-洞察及研究
- 稳评机构各项管理制度
- 建筑安全与人工智能的深度结合
- 2026年高考政治一轮复习:选择性必修1~3共3册知识点背诵提纲汇编
- 广告标识牌采购投标方案
- 北京市2025年第一次普通高中学业水平合格性考试政治试题(原卷版)
- 公墓建设项目合同协议书
- 家政服务行业互联网+平台商业模式创新与盈利模式研究报告
评论
0/150
提交评论