数组练习题及答案(4)

2018-12-05 13:33

for(i=0;i<=n-2;i++) {《2》;

for(j=i《3》;j0) p=j; if(p!=i) {strcpy(t,c[p]); strcpy(c[p],c[i]); strcpy(c[i],t); } }

for(i=0;i

五、综合应用

1、插入法:有n个数,已按由小到大顺序排列好,要求输入一个数据,把它插入到原有数列中,而仍然保持有序。

void f(int a[ ],int n,int x) {int I,j;

while(a[i]<=x && ix)

{for(j=n-1;j>=I;j--) a[j+1]=a[j]; a[i]=x; } else a[i]=x; } 改写:

void f(int a[ ],int n,int x) {int I,j;

while(a[i]<=x && i

for(j=n-1;j>=I;j--)

16

a[j+1]=a[j]; a[i]=x; }

2、插入法:下面程序的运行结果是( )。 main()

{ int I=0,n=3,j,k=3; int a[5]={1,4,5};

while(I<=n&&k>a[I]) I++; for(j=n-1;j>=I;j--) a[j+1]=a[j]; a[i]=k;

for(I=0;I<=n;I++) printf(―=‖,a[i]); }

3、插入法:若有以下程序段: …………..

int a[]={4,0,2,3,1},I,j,t; for(I=1;I<5;I++) {t=a[i];j=I-1;

while(j>=0&&t

for(I=0;I<5;I++) printf(―%d ‖,a[i]); …………

则该程序段的输出结果是( )。

4、下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。

main()

{ int a[3]={5,9,19};

int b[5]={12,24,26,37,48}; int c[10],I=0,j=0,k=0; while(I<3&&j<5)

17

if(__________)

{c[k]=b[j];k++;j++;} else

{c[k]=a[i];k++;I++;} while(________) { c[k]=b[j];k++;j++;} while(________) { c[k]=a[i];k++;I++;} for(I=0;I

5、下面程序用“顺序查找法”查找数组a中是否存在某一关键字。请填空。

main()

{int a[8]={25,57,48,37,12,92,86,33}; int I,x;

scanf(―%d‖,&x); for(I=0;I<8;I++) if(x==a[I])

{printf(―Found! The index is :%d\\n‖,--i);____________;} if(____________) printf(―Can‘t found!‖); }

6、要求写一函数,实现对包含任意个数据的数列实现头尾颠倒。 void f(int a[ ],int n) {int I,t;

for(I=0;I

t=a[i];a[i]=a[n-i];a[n-i]=t; }

}

7、下面程序的运行结果是( )。 main()

{int a[10]={1,2,2,3,4,3,4,5,1,5};

18

int n=0,I,j,c,k; for(I=0;I<10-n;I++) {c=a[i];

for(j=I+1;j<10-n;j++) if(a[j]==c)

{for(k=j;k<10-n;k++) a[k]=a[k+1]; n++;

} }

for(I=0;I<10-n;I++) printf(―%d‖,a[i]); }

8、当从键盘输入18并回车后,下面程序的运行结果是( )。 main() {

int x,y,I,a[8],j,u,v; scanf(―%d‖,&x); y=x;I=0; do { u=y/2; a[i]=y%2; I++;y=u; }while(y>=1); for(j=I-1;j>=0;j--) printf(―%d‖,a[j]); }

9、有17个人围成一圈,编号为0—16,从第0号的人开始从1报数,凡报到3的倍数离开圈子,然后再数下去,直到最后只剩下一个人为止,问此人原来的位置是多少号。

main()

{int a[17],I,t=0,s=0; for(I=0;I<17;I++) a[i]=1;

19

while(t<=16) { for(I=0;I<17;I++) if(a[i]==0) {s=s+1;

if(s%3==0) {a[i]=0;t=t+1;} }

}

for(I=0;I<17;I++)

if(a[i]==1) printf(―%d‖,i); }

10、将一个二维数行、列互换后输出。 Void f(int a[ ],int n,int m ,int b[ ]) {int I,j;

for(I=0;I

for(I=0;I

printf(―M‖,b[j*n+i]); printf(―\\n‖); } }

11、求矩阵对角线元素之和 main()

{int a[3[3]={1,3,6,7,9,11,14,15,17},sum=0,I,j; for(I=0;I<3;I++) for(j=0;j<3;j++)

if((I==j)||(I+j==3)) sum=sum+a[I][j];

}

12、下面程序的功能是检查一个二维数组是否对称(即:都有a[I][j]=a[j][I])。请填空。

main()

{int a[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4}; int I,j,found=0

20

对所有I和j


数组练习题及答案(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新苏教版三上语文补充习题答案201809

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: