第 六 章 数组补充练习

2020-04-14 23:19

第 六 章 数组

一、选择题:

1. 在c语言中,一维数组的定义方式为:类型说明符 数组名( )。

A.常量表达式 B.整型表达式 C.整型常量或整型表达式 D.整型常量 2. 以下对一维整型数组a的正确说明是 。

A. int a(10); B. int n=10,a[n]; C. int n; D. #define SIZE 10 scanf(“%d”,&n); int a[SIZE]; int a[n]; 3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( ). A.整型常量或整型表达式 B.整型常量

C.整型表达式 D.任何类型的表达式 4. 若有说明:int a[10];则对a数组元素的正确引用是 。

A. a[10] B. a[3.5] C. a(5) D. a[10-10] 5. 以下能对一维数组a进行不正确初始化的语句是( )

A.int a[]={0}; B.int a[10]={0,0,0,0}; C.int a[10]={}; D.int a[10]={10*1}; 6. 对以下说明语句的正确理解是 。 int a[10]={6,7,8,9,10};

A. 将5个初值依次赋给a[1]至a[5] B. 将5个初值依次赋给a[0]至a[4] C. 将5个初值依次赋给a[6]至a[10] D. 因为数组长度与初值的个数不相同,所以此语句不正确 7. 下面程序 (每行程序前面的数字表示行号)。 1 main() 2 { 3 float a[10]={0.0}; 4 int i; 5 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 6 for(i=1;i<10;i++) a[0]=a[0]+a[i]; 7 printf(“%f\\n”,a[0]); 8 }

A. 没有错误 B. 第3行有错误 C. 第5行有错误 D. 第7行有错误 8. 下面程序中有错误的行是 (每行程序前面的数字表示行号)。 1 main() 2 { 3 float a[3]={1}; 4 int i; 5 scanf(“%d”,&a) ; 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(“a[0]=%d\\n”,a[0]); 8 }

A. 3 B. 6 C. 7 D. 5 9. 定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是 。 for(k=0;k<3;k++) printf(“%d”,a[k][2-k]);

A. 3 5 7 B. 3 6 9 C. 1 5 9 D. 1 4 7 10. 下面程序的运行结果是 。

1

main() {

int a[6],i;

for(i=1;i<6;i++) {

a[i]=9*(i-2+4*(i>3))%5; printf(“-”,a[i]); } }

A. -4 0 4 0 4 B. -4 0 4 0 3 C. -4 0 4 4 3 D. -4 0 4 4 0 11. 以下对二维数组a的正确说明是( )。

A. double a[1][4]; B.int a[3][]; C.float a(3,4); D.float a(3)(4); 12. 若说明:int a[3][4];则对a数组元素的正确引用是( )

A.a[1+1][0] B.a[2][4] C.a[1,3] D.a(2)(1) 13. 若有说明:int a[3][4];则对a数组元素的非法引用是( )

A.a[0][4] B.a[0][2*1] C.a[1][3] D.a[4-2][0] 14. 若有说明:int a[3][4];则下面正确的叙述是( )。

A.数组a中每个元素均得到处置0 B.只有元素a[0][0]可得到初值0

C.此说明语句不正确 D.数组a中各元素都可得到初值,但其值不一定为0 15.若有说明:int a[3][4];则数组a中的元素( )

A.可在程序的编译阶段得到初值0 B.可在程序的运行阶段得到初值0

C.不能得到确定的初值 D.可在程序的编译或运行阶段得到初值0 16. 若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为( )。(假设a[0][0]位于数组的第一个位置上。)

A.i*m+j+1 B.i*m+j C.j*m+I D.i*m+j-1 17. 以下能对二维数组a进行正确初始化的语句是 。

A. int a[2][]={{1,0,1},{5,2,3}}; B. int a[][3]={{1,2,3},{4,5,6}}; C. int a[2][4]={{1,2,3},{4,5},{6}}; D. int a[][3]={{1,0,1},{},{1,1}}; 18. 以下不能对二维数组a进行不正确初始化的语句是 。

A. int a[2][3]={0}; B. int a[][3]={{1,2},{0}}; C. int a[2][3]={{1,2},{3,4},{5,6}}; D. int a[][3]={1,2,3,4,5,6}; 19. 若有说明:int a[3][4]={0};则下面正确的叙述是 。

A. 只有元素a[0][0]可得到初值0 B. 此说明语句不正确

C. 数组a中各元素都可得到初值,但其值不一定为0 D. 数组a中每个元素均可得到初值0 20.若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是 。

A. 2 B. 3 C. 4 D. 无确定值

二、填空题:

1.在C语言中,二维数组的定义方式为:类型说明符 数组名[【1】][【2】]; 2.在c语言中,二维数组元素在内存中的存放顺序是( )。 3.若有定义:double x[3][5];则x数组中行下标的下限为【1】,列下标的上限为【2】。 4.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:( )。(假设a[0][0]位于数组的第一个位置上。)

5.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是【1】,a[2][1]得到的初值是【2】

三、阅读程序写结果

1. 下面程序的运行结果是 。

main()

2

{ int i=1,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]);

}

2. 下面程序的运行结果是 。

main()

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

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]); printf(“\\n”);

}

3. 当从键盘输入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]);

}

4. 以下程序的功能是 。 main() { int num[10]={10,1,-20,-203,-21,2,-2,-2,11,-21}; int sum=0,i; for(i=0;i<10;i++) { if(num[i]>0) sum=num[i]+sum; } printf(“sum=m”,sum);

3

}

5. 下面程序的运行结果是 。 main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; int k,s,i; float ave; for(k=s=i=0;i<10;i++) { if(a[i]%2==0) continue; s+=a[i]; k++; } if(k!=0) { ave=(float)s/k; printf(“The number is:%d. The average is:%f\\n”,k,ave); } }

6. 下面程序的运行结果是( )。 main( )

{ int i,f[10]; f[0]=f[1]=1;

for(i=2;i<10;i++)

f[i]=f[i-2]+f[i-1]; for(i=0;i<10;i++)

{ if(i%4= =0) printf(“\\n”); printf(“=”,f[i]; ) } }

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

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

while (ia[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]);

}

8. 下面程序的运行结果是 。

main()

{ int a[9]={0,6,12,18,42,44,52,67,94};

int x=52,i,n=9,m; i=n/2+1; m=n/2; while(m!=0) { if(xa[i])

4

{ i=i+m/2+1; m=m/2; } else break; } printf(“The index is:%d”,i); }

9. 下面程序的运行结果是 。 main() { int a[6][6],i,j; for(i=1;i<6;i++) for(j=1;j<6;j++) a[i][j]=(i/j)*(j/i); for(i=1;i<6;i++) { for(j=1;j<6;j++) printf(“-”,a[i][j]); printf(“\\n”); } }

10. 下面程序的运行结果是 。 main() { int a[5][5],i,j,n=1; for(i=0;i<5;i++) for(i=0;i<5;i++) a[i][j]=n++; printf(“The result is:\\n”); for(i=0;i<5;i++) { for(j=0;j<=i;j++) printf(“M”,a[i][j]); printf(“\\n”); } }

11. 下面程序的运行结果是 。

main()

{ int i,j,a[2][3]={{2,4,6},{8,10,12}}; printf(“The original array is:\\n”); for(i=0;i<2;i++) { for(j=0;j<3;j++) printf(“M”,a[i][j]); printf(“\\n”); } printf(“\\nthe result is:\\n”); for(i=0;i<3;i++) { for(j=0;j<2;j++) printf(“M”,a[j][i]); printf(“\\n”); } }

5


第 六 章 数组补充练习.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:计算机安全技术复习题 简答题

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

马上注册会员

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