版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验5 数组班级:学号:姓名:日期:一、实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出方法;(2)掌握字符数组和字符串函数的使用;(3)掌握与数组有关的算法(特别是排序算法)。二、实验内容1阅读下面程序,写出程序运行结果,并且上机进行验证。(1) #include "stdio.h"void main()int i,n4=0,0,0,0;for(i=1;i<4;i+)if (i=3) break;ni=ni-1+1;printf("ni-1=%d ni=%dn",ni-1,ni);(2)#include "stdio.h&qu
2、ot;void main()char ch='0','1','2','3','4','5','6','7','8','9'int i=0,m=2,r,x=42; char b80;while(x)r=x%m; x/=m;bi+=chr;for(-i;i>=0;i-)printf("%c",bi);printf("n");(3)#include "stdio.h"void
3、main()int a3=9,7,5,3,1,2,4,6,8;int i,j,s1=0,s2=0;for(i=0;i<3;i+)for(j=0;j<3;j+)if(i=j) s1=s1+aij;if(i+j=2) s2=s2+aij;printf("s1=%d s2=%d",s1,s2);(4)#include "stdio.h"void 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;j<i;j+)ai
4、j=ri-j;for(i=0;i<5;i+)for(j=0;j<5;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(&
5、quot;%d",&x);for(i=0,p=N;i<N;i+)if(x<ai)p=i;_break_;for(i=N-1;i>=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 与处于中间位置上的数比较,如果相等,则查
6、找成功,如果小于该元素,则在较小的一半元素里再进行折半查找;如果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;i<n;i+)scanf("%d",_&ai_);printf("input the numbe
7、r to find:n");scanf("%d",&x);find=0;top=0;bottom=n-1;if(x<=a0 && top<=bottom)while(!find && top<=bottom)mid=mid=(bottom+top)/2;if(x=amid)find=1;printf("x=%d position=%dn",x,mid);else if(x>amid)bottom=mid-1;elsetop=mid+1;if(find=0) printf("
8、;the number %d is not in the table",x);(3)程序说明:下面程序分别输出方阵中主对角线、副对角线上元素的和suml 和sum2(主对角线为从矩阵的左上角至右下角的连线,副对角线为从矩阵的右上角至左下角的连线).#include"stdio.h"#define SIZE 5void main()int aSIZESIZE,m,n,sum1,sum2;for(m=0;m<SIZE;m+)for(n=0;n<SIZE;n+)scanf("%d",&amn);sum1=sum2=_0_;for(
9、m=0;m<SIZE;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.#include"stdio.h"void main()int i,j,a1010=1,1,1;for(i=2;i<10;i+)ai0=1;_ aii=1;for(j=0;j<i;j+)aij=ai-1j+ ai-1j-1;
10、for(i=0;i<10;i+)for(j=0;j<=i;j+)printf("%4d",aij);printf("n");3程序设计(根据题意编写程序并上机进行调试)。(1)编写程序完成如下功能:输入10 个数存入一维数组,然后再按逆序重新存放后输出。#include <stdio.h>void main()int a10,i,temp;for(i=0;i<10;i+)scanf("%d",&ai);for(i=0;i<10;i+)printf("%5d",ai);pr
11、intf("n");for(i=0;i<5;i+)temp=ai;ai=a9-i;a9-i=temp;for(i=0;i<10;i+)printf("%5d",ai);printf("n");(2)编写程序完成如下功能:从键盘输入两个字符串ch2、 ch1,然后将字符串ch2 连接到字符串ch1 的后面,并输出连接后的字符串。#include <stdio.h>#include <string.h>void main()char ch120,ch210;int i,j;scanf("%s&
12、quot;,ch1);scanf("%s",ch2);j=strlen(ch1);for(i=0;i<strlen(ch2);i+,j+)ch1j=ch2i;ch1j='0'printf("%sn",ch1);(3)编写程序完成如下功能:现有两个已按升序排好的数组,将它们合并为一个升序排序的数组(归并排序)。算法:两个数组合并时,可为每个数组各安排一个指针,从第一个元素开始依次比较两数组对应元素,小的取下来顺序放入新的数组,取下所指元素的指针后移,再比较,依此类推,直到其中一个数组的元素已全部放入新数组,再把另一数组余下的元素全部顺
13、序放入新数组,归并完成。编程并上机调试运行。(1)用选择法对10个整数排序。10个整数用scanf函数输入。#include <stdio.h>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(&qu
14、ot;%5d",ai); printf("n"); for(i=1;i<=9;i+) min=i; for(j=i+1;j<=10;j+) if(amin>aj) 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、素的值。如果该数不在数组中,则输入“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。#include <stdio.h>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<15) scanf("%d",&ai); if(ai>=ai-1) i+; else printf(&qu
16、ot;enter this data again:n"); printf("n"); for(i=0;i<15;i+) printf("%5d",ai); printf("n"); while(flag) printf("input number to look for:"); scanf("%d",&number); sign=0; top=0; bott=14; if(number<a0) | (number>a14) loca=-1; while(!si
17、gn)&&(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(number<amid)bott=mid-1; elsetop=mid+1; if(!sign | loca=-1) printf("can not found %d.n",number); printf("continue or not(Y/N)?&quo
18、t;); 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 <stdio.h>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)找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。应至少准备两组测试数据:二维数组有鞍点,例如:二维数组没有鞍点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 虚拟现实办公交互-洞察分析
- 冶金设备智能化制造-洞察分析
- 云计算在企业信息化建设中的优势-洞察分析
- 特征值在机器学习模型优化中的价值分析-洞察分析
- 虚拟仪器设计与应用-洞察分析
- 虚拟化安全性能评估-洞察分析
- 微生物发酵技术在农产品加工中的应用-洞察分析
- 医疗大数据与仿真分析-洞察分析
- 月球潮汐效应研究-洞察分析
- 文化旅游目的地建设-洞察分析
- 海域使用分类体系(全)
- 鲁教版必修一第二单元第二节大气运动——热力环流(共28张PPT)
- 解除限制消费申请书
- 汽车整车厂和动力总成厂房火灾危险性分类
- 7实用卫生统计学总-国家开放大学2022年1月期末考试复习资料-护理本复习资料
- 精品资料(2021-2022年收藏)集团各控股子公司董事会议事规则
- t-桥式起重机设计计算书
- 全口义齿印模及颌位关系记录ppt课件
- 定点洗车协议书(共2页)
- 电除尘器计算
- 杆塔选型(高度、形式、基础)
评论
0/150
提交评论