实验五

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验五数组1.1实验目的与要求1.掌握一维数组的定义、数组元素引用的方法2.掌握二维数组的定义、数组元素引用的方法3.掌握字符数组和字符串函数的使用方法1.2实验内容1.2.1典型例题分析1.从键盘输入10个整数,求最大值、最小值、均值和总和#includestdio.hmain(){inta[10],i,max,min,sum=0;floatave;for(i=0;i=9;i++)scanf(%d,&a[i]);max=a[0];min=a[0];for(i=0;i=9;i++){sum+=a[i];if(a[i]max)max=a[i];if(a[i]min)min=a[i];}ave=sum/10.0;printf(%d%d%f%d\n,max,min,ave,sum);}2.下面的程序实现的是将2*3的矩阵进行转置。#includestdio.hmain(){inta[2][3]={{7,9,3},{6,2,4}};intb[3][2],i,j;for(i=0;i2;i++){for(j=0;j3;j++){printf(%d,a[i][j]);b[j][i]=a[i][j];}printf(\n);}for(i=0;i3;i++){for(j=0;j2;j++)printf(%d,b[i][j]);printf(\n);}}3.从键盘上输入源串和目标串,判断源串是否包含目标串#includestdio.h#includestring.hmain(){charstrsource[50],straim[50];//定义两个字符型数组intsign,i,j,point;printf(\ninputthesourcestr:\n);//输入原串scanf(%s,strsource);printf(inputtheaimstr:\n);//输入待匹配的串scanf(%s,straim);for(i=0;i=(strlen(strsource)-strlen(straim));i++){point=i;sign=1;for(j=0;jstrlen(straim);j++,point++)//向后匹配{if(strsource[point]!=straim[j])//若匹配失败{sign=0;break;}}if(sign==1)//匹配成功{printf(find!thelocationis%d\n,i+1);break;}}if(!sign)//找不到匹配字符串printf(Nofind!\n);}4.输出两个字符串中相同的字符#includestdio.hmain(){charstr1[10],str2[10];//存放输入的两个字符串charstr3[10];//存放输入的两个字符串的交集intcount1=0,count2=0;//分别记录两个字符数组的长度intcount3=0;//交集数组的长度scanf(%s,str1);scanf(%s,str2);while(str1[count1]!='\0')//逐一考查str1中的每一个字符{count2=0;while(str2[count2]!='\0')//在str2中搜索相同的字符{if(str1[count1]==str2[count2])//若找到相同字符{str3[count3]=str1[count1];//将当前字符存入交集数组中count3++;break;}count2++;}count1++;}str3[count3]='\0';if(str3[0]!='\0')printf(%s\n,str3);}1.2.2程序调试1.请将以下程序的执行结果界面复制到实验报告中。#includestdio.hvoidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i10;i+=2)fun(c[i],c[i+1]);for(i=0;i10;i++)printf(%d,,c[i]);printf(\n);}2.请将以下程序的执行结果界面复制到实验报告中。#includestdio.hf(intb[],intn){inti,r=1;for(i=0;i=n;i++)r=r*b[i];returnr;}main(){intx,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf(%d\n,x);}3.请将以下程序的执行结果界面复制到实验报告中,并指出该程序的功能。#includestdio.hmain(){inti,j,row,column,m;staticintarray[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};m=array[0][0];for(i=0;i3;i++)for(j=0;j3;j++)if(array[i][j]m){m=array[i][j];row=i;column=j;}printf(%d,%d,%d\n,m,row,column);找出2维数组中最小的数,并指出其所在的行和列。4.请将以下程序的执行结果界面复制到实验报告中,并指出该程序的功能。#includestdio.hmain(){inta[6][6],i,j;for(i=1;i6;i++)for(j=1;j6;j++)a[i][j]=(i/j)*(j/i);for(i=1;i6;i++){for(j=1;j6;j++)printf(%2d,a[i][j]);printf(\n);}}输入一个二维数组,当行数和列数相等时为1,不相等时为0.5.请将以下程序的执行结果界面复制到实验报告中。main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;for(i=0;i4;i++){for(j=0;ji;j++)printf(%4c,'');for(j=i;j4;j++)printf(%4d,num[i][j]);printf(\n);}}6.在要求输入数据时输入IamastudentEnter。请在实验报告中写出以下程序的运行结果,并指出该程序的功能。#includestdio.h#includestring.hmain(){chars[80],c1,c2='';inti=0,num=0;gets(s);while(s[i]!='\0'){c1=s[i];if(i==0)c2='';elsec2=s[i-1];if(c1!=''&&c2=='')num++;i++;}printf(Thereare%dwords.\n,num);}功能是说出所输入有多少单词7.请在实验报告中写出以下程序的运行结果,并指出该程序的功能。#includestdio.h#includestring.hvoidf(charp[][10],intn)/*字符串从小到大排序*/{chart[10];inti,j;for(i=0;in-1;i++)for(j=i+l;jn;j++)if(strcmp(p[i],p[j])0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={abc,aabdfg,abbd,dcdbe,cd};f(p,5);printf(%d\n,strlen(p[0]));}1.2.3程序改错1.下面的程序实现的是将数组a中的最后一个数移到最前面,其余数依次往后移一个位置。#includestdio.hmain(){inti,t,a[10]={0,1,2,3,4,5,6,7,8,9};t=a[9];for(i=1;i10;i++)a[i]=a[i-1];a[0]=t;for(i=0;i10;i++)printf(%d,a[i]);printf(\n);}上机运行程序,查看结果是否正确。若不正确,请在实验报告中写出错误原因,并将修改后的程序和程序执行结果界面复制到实验报告中。For循环出错#includestdio.hvoidmain(){inti,t,m,a[10]={0,1,2,3,4,5,6,7,8,9};t=a[9];for(i=9;i=0;i--){a[i+1]=a[i];}a[0]=t;for(i=0;i10;i++)printf(%d,a[i]);printf(\n);}2.下面的程序实现的是将4*4的矩阵转置#includestdio.hmain(){inta[4][4];inti,j;for(i=0;i4;i++)for(j=0;j4;j++)scanf(%d,a[i][j]);for(i=0;i4;i++)for(j=0;j4;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}for(i=0;i4;i++){for(j=0;j4;j++)printf(%d,a[i][j]);printf(\n);}}上机调试程序并改正程序中的错误。查看结果是否正确。若不正确,请在实验报告中写出错误原因,并将修改后的程序和程序执行结果界面复制到实验报告中。For循环出错#includestdio.hvoidmain(){inta[4][4];inti,j,t;for(i=0;i4;i++)for(j=0;j4;j++)scanf(%d,&a[i][j]);for(i=0;i3;i++)for(j=i;j4;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}for(i=0;i4;i++){for(j=0;j4;j++)printf(%d,a[i][j]);printf(\n);}}1.2.4实验题目1.输入十个整数,计算出平均值(aver),找出其中最大者(max)和最小者(min)并将三者输出。#includestdio.hvoidmain(){inti;floata[20],sum=0,aver,max,min;for(i=0;i10;i++){scanf(%f,&a[i]);sum+=a[i];if(i==0){max=a[i];min=a[i];}else{if(maxa[i])max=a[i];if(mina[i])min=a[i];}}aver=sum/10;printf(%.2f%.2f%.2f\n,aver,max,min);}2.编写函数把数组中所有奇数放在另一个数组中返回。#includestdio.h#definen5voidmain(){inta[n],b[n]={0},i,j=0,t;printf(pleaseinputthenumber:\n);for(i=0;in;i++)scanf(%d,&a[i]);for(i=0;in;i++){t=a[i]/2;if(a[i]!=2*t){b[j]=a[i];j++;}}for(i=0;in;i++){if(b[i]!=0)printf(%d\t,b[i]);elsebreak;}}3.输入10个学生的单科成绩,然后按从高到低排序后输出。#includestdio.hvoidmain(){intd[10]={0},i,j,t;for(i=0;i10;i++)scanf(%d,&d[i]);for(i=0;i9;i++)for(j=i+1;j10;j++)if(d[i]d[j]){t=d[i],d[i]=d[j],d[j]=t;}for(i=0;i10;i++)printf(%d,d[i]);}4.将一整数数列按奇数在前,偶数在后的顺序重新排放,并要求奇偶两部分都是升序排列。#includestdio.hvoidmain(int

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功