您好,欢迎访问三七文档
习题参考答案一、找出下面程序或程序段中的错误,并改正。1.#includeiostreamusingnamespacestd;intmain(){intm,a[m];a[0]=1;couta[0];return0;}正确程序:#includeiostreamusingnamespacestd;intmain(){constintm=10;inta[m];a[0]=1;couta[0];return0;}2.#includeiostreamusingnamespacestd;intmain(){inta[5];cina;couta[5];return0;}正确程序:#includeiostreamusingnamespacestd;intmain(){inta[5];cina[4];couta[4];return0;}3.#includeiostreamusingnamespacestd;intmain(){charc[10]=Iamastudent;coutc;return0;}正确程序:#includeiostreamusingnamespacestd;intmain(){charc[]=Iamastudent;coutc;return0;}4.在下面程序中输入China,要求输出China#includeiostreamusingnamespacestd;intmain(){chara[5],*p;inti;*p=a;for(i=0;i5;i++)cin*(p+i);coutp;return0;}正确程序:#includeiostreamusingnamespacestd;intmain(){chara[6],*p;inti;p=a;for(i=0;i5;i++)cin*(p+i);a[5]='\0';coutp;return0;}二、读程序,写运行结果。1.#includeiostreamusingnamespacestd;intmain(){inti,k,a[10],p[3];k=5;for(i=0;i10;i++)a[i]=i;for(i=0;i3;i++)p[i]=a[i*(i+1)];for(i=0;i3;i++)k+=p[i]*2;coutk;return0;}运行结果:212.写出程序的运行结果,并说明该程序的功能。#includeiostreamusingnamespacestd;intmain(){inty=25,i=0,j,a[8];do{a[i]=y%2;i++;y=y/2;}while(y=1);for(j=i-1;j=0;j--)couta[j];coutendl;return0;}运行结果:11001程序的功能:将十进制数转换为对应的二进制数。3.#includeiostream#includeiomanipusingnamespacestd;intmain(){intt[3][4]={{1,2,3,4},{5,6,7,8},{9}},i,j;for(i=0;i3;i++)for(j=0;j4;j++)coutsetw(4)t[i][j];coutendl;for(i=0;i3;i++){coutendl;for(j=0;j4;j++)coutsetw(4)t[i][j];}for(i=0;i4;i++){coutendl;for(j=0;j3;j++)coutsetw(4)t[j][i];}return0;}运行结果:1234567890001234567890001592603704804.#includeiostreamusingnamespacestd;intmain(){chart[3][20]={Watermelon,Strawberry,grape};inti;for(i=0;i3;i++)coutt[i]endl;return0;}运行结果:WatermelonStrawberrygrape5.#includeiostreamusingnamespacestd;#includeiomanipvoidsort(inta[],intn){inti,j,t;for(i=0;in-1;i++)for(j=i+1;jn;j++)if(a[i]a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidmain(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[4],4);for(i=0;i10;i++)coutsetw(2)aa[i];}运行结果:12348765910三、编写程序。1.编写一个程序,从任意n个数中找出最大的数和最小的数,并将它们相互交换。程序为:#includeiostreamusingnamespacestd;#includeiomanipvoidmain(){inta[20],i,w_max,w_min,n;cout请输入数据个数:;cinn;for(i=0;in;i++)cina[i];w_max=0;w_min=0;for(i=1;in;i++)if(a[w_max]a[i])w_max=i;elseif(a[w_min]a[i])w_min=i;i=a[w_min];a[w_min]=a[w_max];a[w_max]=i;cout处理后的数据为:;for(i=0;in;i++)coutsetw(2)a[i];}2.编写一个程序,将任意n个数按从大到小的顺序排序。程序为:#includeiostreamusingnamespacestd;#defineM100intmain(){inta[M],i,j,w,t,n;cout请输入数据个数(小于等于100):;cinn;cout请任意输入n个数据:endl;for(i=0;in;i++)cina[i];for(i=0;i=n-2;i++){w=i;for(j=i+1;j=n-1;j++)if(a[w]a[j])w=j;if(w!=i){t=a[w];a[w]=a[i];a[i]=t;}}cout排序结果:endl;for(i=0;in;i++)couta[i];return0;}3.利用折半查找法从一个升序排列的数列中查找某数是否存在。程序为:#includeiostreamusingnamespacestd;intmain(){inta[10],top,bottom,middle,i,x;boolf;cout请按从小到大的顺序输入10个数'\n';for(i=0;i10;i++)cina[i];cout请输入待查找的数:;cinx;top=0,bottom=9,f=false;while(top=bottom){middle=(top+bottom)/2;if(x==a[middle]){f=true;break;}elseif(xa[middle])bottom=middle-1;elsetop=middle+1;}if(f)cout找到了x,它是数列中的第middle+1个数.;elsecout数列中没有这个数。;coutendl;return0;}4.将一个数组中的数循环左移,例如,数组中原来的数为:12345,移动后变成:23451.程序为:#includeiostreamusingnamespacestd;intmain(){inta[5],i,w;cout请任意输入5个数:endl;for(i=0;i5;i++)cina[i];w=a[0];for(i=1;i=4;i++)a[i-1]=a[i];a[4]=w;cout结果:endl;for(i=0;i5;i++)couta[i];return0;}5.从任意n个数中找出素数。要求:将找出的素数存放在数组中。程序为:#includeiostreamusingnamespacestd;#includecmathintmain(){inta[10],i,j,s,f;cout请任意输入10个数:endl;for(i=0;i10;i++)cina[i];s=0;for(i=0;i10;i++){j=2;f=1;while(j=sqrt(a[i]))if(a[i]%j==0){f=0;break;}elsej++;if(f==1)a[s++]=a[i];}cout结果:endl;for(i=0;is;i++)couta[i];return0;}6.编写程序,找出二维数组所有元素中的最大值。程序为:#includeiostreamusingnamespacestd;intmain(){inti,j,row,col,max,a[4][5];cout请输入数据:'\n';for(i=0;i4;i++)for(j=0;j5;j++)cina[i][j];max=a[0][0],row=0,col=0;for(i=0;i4;i++)for(j=0;j5;j++)if(maxa[i][j]){max=a[i][j];row=i;col=j;}cout最大数=maxendl位置:矩阵中第row+1行第col+1列;return0;}7.编写程序,从矩阵中找鞍点。如果某个元素是鞍点,那么该元素在所处的行中最大,列上最小,也可能没有鞍点。要求:如果有鞍点,输出鞍点的值,以及其所处的行和列;如果矩阵中没有鞍点,就打印出提示信息。程序为:#includeiostreamusingnamespacestd;intmain(){inti,j,col,max,a[4][5],f,f1;cout请输入数据:'\n';for(i=0;i4;i++)for(j=0;j5;j++)cina[i][j];f1=0;for(i=0;i4;i++){max=a[i][0],col=0;for(j=1;j5;j++)if(maxa[i][j]){max=a[i][j];col=j;}f=1;for(j=0;j4;j++)if(maxa[j][col]){f=0;break;}if(f==1){f1=1;cout鞍点:maxendl位置:矩阵中第i+1行第col+1列;}}if(f1==0)cout矩阵中无鞍点;return0;}8.写一个程序,计算二维数组各列之和。程序为:#includeiostreamusingnamespacestd;intmain(){inti,j,a[4][5],sum;cout请输入数据:'\n';for(i=0;i4;i++)for(j=0;j5;j++)cina[i][j];for(j=0;j5;j++){sum=0;for(i=0;i4;i++)sum+=a[i][j];cout第j+1列之和:sumendl;}return0;}9.编写程序比较两个字串的大小,不要用函数strcmp。程序为:#includeiostreamusingnamespacestd;intmain(){charstr1[20],str2[20],k;inti;cout请分别输入两个字符串:;gets(str1);gets(str2);for(i=0;str1[i]==str2[i]&&(str1[i]!='\0'||str2[i]!='\0');i++);k=str1[i]-str2[i];if(k0)cou
本文标题:数组习题参考答案
链接地址:https://www.777doc.com/doc-2430973 .html