当前位置:文档之家› c语言数组典型试题设计含答案

c语言数组典型试题设计含答案

一.选择题(2*20)【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是。

A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式【题2】以下对一维整型数组a 的正确说明是。

A)int a(10); B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n); int a[SIZE];int a[n];【题3】若有说明:int a[10];则对a 数组元素的正确引用是。

A)a[10] B)a[3.5] C)a(5) D)a[10-10]【题4】在C 语言中,一维数组的定义方式为:类型说明符数组名; A)[整型常量表达式] B)[整型表达式]C)[整型常量] 或[整型表达式] D)[常量]【题5】以下能对一维数组a 进行正确初始化的语句是。

A)int a[10]=(0,0,0,0,0); B)int a[10]={};C)int a[]={0}; D)int a[10]=”10*1”;【题6】以下对二维数组a 的正确说明是。

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

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

A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4]【题9】以下能对二维数组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}};【题10】以下不能对二维数组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};【题11】若有说明:int a[3][4]={0};则下面正确的叙述是。

A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a 中各元素都可得到初值,但其值不一定为0D)数组a 中每个元素均可得到初值0【题12】若有说明:int a[][4]={0,0};则下面不正确的叙述是。

A)数组a 的每个元素都可得到初值0B)二维数组a 的第一维大小为1C)因为二维数组a 中第二维大小的值除以初值个数的商为1,故数组a 的行数为1D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0【题13】若有说明:int a[3][4];则全局数组a 中各元素。

A)可在程序的运行阶段得到初值0B)可在程序的编译阶段得到初值0C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0【题14】以下各组选项中,均能正确定义二维实型数组a 的选项是。

A)float a[3][4]; B)float a(3,4);float a[][4]; float a[3][4];float a[3][]={{1},{0}}; float a[][]={{0};{0}};C)float a[3][4]; D)float a[3][4];static float a[][4]={{0},{0}}; float a[3][];auto float a[][4]={{0},{0},{0}}; float a[][4];【题15】下面程序如果只有一个错误,那么是(每行程序前面的数字表示行号)。

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

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 行有错误【题17】下面程序中有错误的行是(每行程序前面的数字表示行号)。

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【题18】下面程序(每行程序前面的数字表示行号)。

1 main()2 {3 float a[3]={0};4 int i;5 for(i=0;i<3;i++) scanf(“%f”,&a[i]);6 for(i=1;i<4;i++) a[0]=a[0]+a[i];7 printf(“%f\n”,a[0]);8 }A)没有错误B)第3 行有错误C)第5 行有错误D)第6 行有错误【题19】若二维数组a 有m 列,则计算任一元素a[i][j]在数组中位置的公式为。

(假设a[0][0]位于数组的第一个位置上。

)A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1【题20】对以下说明语句的正确理解是。

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)因为数组长度与初值的个数不相同,所以此语句不正确参考答案:1~5 CDDAC 6~10 CCDBC11~15 DDBCA 16~20 CDDDB二.程序分析(10*2)1. 下面程序的输出结果是________。

struct stu{ int x,*y;}*p;int d[4]={10,20,30,40};struct stu a[4]={50,&d[0],60, &d[1],70, &d[2] ,80,&d[3]}; main(){ p=a;printf("%d,",++p->x);printf("%d,",(++p)->x);printf("%d\n",++(*p->y));}2. 以下程序的运行结果是________。

union un{ int a;int b;};union un s[4];union un *p;main(){ int n=1,i;for(i=0;i<4;i++){s[i].a=n; s[i].b=s[i].a+1; n=n+2;}p=&s[0];printf("%d,",p->a);printf("%d",++p->a);}1. 51,60,212. 2,3四.程序设计(10*4)1、将二维数组(5行5列)的右上半部分置零。

即:#include<stdio.h>main(){int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};for(int i=0;i<5;i++){for(int j=0;j<5;j++){if(i<j){printf("%3d",0);}else{printf("%3d",a[i][j]);}}printf("\n");}}2、求二维数组(3行3列)的对角线元素的和#include<stdio.h>main(){int a[3][3]={{10,12,13},{14,15,16},{17,18,19}},sum=0;for(int i=0;i<3;i++){for(int j=0;j<3;j++){if(i==j){sum=sum+a[i][j];}}printf("%d",sum);}3、求二维数组(5行5列)中最大元素值及其行列号#include<stdio.h>main(){int a[5][5],i,j;for(i=0;i<5;i++){for(j=0;j<5;j++){scanf("%d",&a[i][j]);}}int sum=a[0][0],x,y;for(i=0;i<5;i++){for(j=0;j<5;j++){if(sum<a[i][j]){sum=a[i][j];x=i;y=j;}}}printf("a[%d][%d]=%d",x,y,sum);}4、从键盘上输入9个整数,保存在二维数组中按数组原来位置输出第一行和第一列的所有元素#include<stdio.h>main(){int a[3][3],i,j;for(i=0;i<3;i++){for(j=0;j<3;j++){scanf("%d",&a[i][j]);}for(i=0;i<3;i++){for(j=0;j<3;j++){if(i==0||j==0){printf("%d",a[i][j]);}}printf("\n");}}。

相关主题