二维数组
在C语言中,定义二维数组时需要指定行和列的大小。在引用中,int a[][3]={1,2,3,4,5,6,7,8}定义了一个二维数组a,其中有两行三列,即a[0]=1, a=2, a=3, a=4, a=5, a=6。而int a[]则是错误的定义方式,因为在定义时必须指定列的大小,只能省略行的大小。结果为10的是a[2],即二维数组中第二行第三列的元素。
在引用中,int a=5,b=-3,c=4;printf("%d %d",(++a,b++,b++),b++);的输出结果为 6 -2。这是因为逗号表达式的求值顺序是从左到右,其中(++a,b++,b++)的值为 6,而b++的值为-2。
对于C语言中的二维数组int d[3]={{1},{2},{3,4}},其中第一行有一个元素 1,第二行有一个元素 2,第三行有两个元素 3和 4。由于第一行只有一个元素,而定义时指定了每行有三个元素,因此编译器会自动将第一行剩余的两个元素初始化为0,即d=0, d=0。因此,正确的定义方式应该是int d={{1,0},{2,0},{3,4}}。
题干 | 以下数组定义并初始化中正确的是( b )。 A.int a[][3]; B.int b[][3]={2*3}; C.int c[][3]={}; D.int d[2][3]={{1}{2}{3,4}}; |
题干 | 以下数组定义并初始化中不正确的是( d )。 |
题干 | 以下程序的输出结果为( c )。 #include "stdio.h" void main() { int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i=0; for(i=0;i<12;i++) c[s[i]]++; for(i=1;i<5;i++) printf("%d",c[i]); } A.1234 B.3344 C.4332 D.1123 |
题干 | 以下程序实现从一维数组中,找值为t的元素,请填空。 #include "stdio.h" void main() { int a[10]={1,2,3,4,5,6,7,8,9,10},i,t; scanf("%d",&t); for(i=0;i<=9;i++) if(a[i]==( b )) ( d ); if(i>=( c )) printf("没找到!\n"); else printf("找到了,下标为%d\n",( a )); } A.i B.t C.10 D.break |
题干 | 有以下两程序段,执行的结果分别为:( c )、( a )。 //程序段一 int a[10]={3,2,1,9,8,7,0,4,5,6},i,m; m=a[0]; for(i=1;i<=9;i++) if(a[i]>m) m=a[i]; printf("%d",m); //程序段二 int a[10]={3,2,1,9,8,7,0,4,5,6},i,m; m=0; for(i=1;i<=9;i++) if(a[i]>a[m]) m=i; printf("%d",m); 注意体会两段代码的区别 A.3 B.4 C.9 D.10 |
题干 | 以下程序实现:输入任意整数插入到有序递增序列后,序列仍有序递增,请填空。 #include "stdio.h" void main() { int a[10]={2,4,6,8,10,12,14,16,18},t,i; scanf("%d",&t); for(i=8;i>=0;i--) if(( a )>t) ( b )=a[i]; else ( c ); ( b )=t; for(i=0;i<=9;i++) printf("%d ",a[i]); } A.a[i] B.a[i+1] C.break D.continue |
题干 | 以下程序实现从键盘输入10个整数,求该10个数的平均值,及各数和平均值之差,请填空。 #include "stdio.h" void main() { int a[10],i; double s=0,pj; for(i=0;i<=9;i++) { scanf("%d",&a[i]); ( d ); } pj=( b ); printf("平均值:%f\n各差值为:\n",pj); for(i=0;i<=9;i++) printf("%d-%f=%f\n",a[i],( a ),( c )); } A.pj B.s/10 C.a[i]-pj D.s=s+a[i] |
题干 | 以下程序实现从键盘输入10个整数,并分别正序逆序输出,请填空。 #include "stdio.h" void main() { int a[10],i; for(i=0;i<=( a );i++) scanf("%d",( d)); printf("\n正序:"); for(i=0;i<=9;i++) printf("%d ",( b )); printf("\n逆序:"); for(i=0;i<=9;i++) printf("%d ",( c )); } A.9 B.a[i] C.a[9-i] D.&a[i] |
题干 | 有以下两程序段,执行的结果分别为:( b )、( d )。 //程序段一 int a[10]={1,2,3,4,5,6,7,8,9,11},i,s=0; for(i=0;i<=9;i++) if(i%2==1) s+=a[i]; printf("%d",s); //程序段二 int a[10]={1,2,3,4,5,6,7,8,9,11},i,s=0; for(i=0;i<=9;i++) if(a[i]%2==1) s+=a[i]; printf("%d",s); A.25 B.31 C.35 D.36 |
题干 | 下列程序段定义了一个数组并循环输入每个元素的值,请填空。 int i,a[10]; for(i=( a );i<=( b );i++) scanf(“%d”,( c )); A.0 B.9 C.&a[i] D.a[10] |
题干 | 以下程序实现一维数组10个元素的逆置存储并显示,请填空。 #include "stdio.h" void main() { int a[10]={1,2,3,4,5,6,7,8,9,12},i,t; for(i=0;i<=( b );i++) { ( a )=a[i]; a[i]=( d ); ( d )=t; } for(i=0;i<=9;i++) printf("%d ",a[i]); } A.t B.4 C.9 D.a[9-i] |
题干 | 以下能正确定义一维数组的选项是( c )。 A.int num[]; B.int num[0...100]; C.#define N 100; int num[N]; D.int N=100; int num[N]; |
题干 | 以下数组定义并初始化中正确的是( d )。 A.int N,a[N][N]; B.int a[1][2]={{1},{3}}; C.int a[2][]={{1,2},{3,4}}; D.int a[3][2]={{1,2},{3,4}}; |
题干 | 以下程序实现求任意输入串的长度,请填空。 void main(){ char a[80]; ( d ); scanf("%s",( a )); while(( c )‘\0’) ( b ); printf("%d\n",i); } A.a B.i++ C.a[i]!= D.int i=0 |
题干 | 以下程序实现显示斐波那数列前20项(每行显示四个数据左对齐),请填空。 #include "stdio.h" void main() { int a[20]={1,1},i; for(i=( d );i<=19;i++) ( c )=a[i-1]+( b ); for(i=0;i<=19;i++) { printf("%-12d",a[i]); if(( a )%4==0) printf("\n"); } } A.(i+1) B.a[i-2] C.a[i] D.2 |
题干 | 以下程序实现求一维数组中,高于平均值元素个数和低于平均值元素个数,请填空。 #include "stdio.h" void main() { int a[10]={1,2,3,4,5,6,7,8,9,10},i,ggs=( a ),dgs=( a ); double s=0,pj; for(i=0;i<=9;i++) ( d ); pj=s/10; for(i=0;i<=9;i++) if(a[i]>pj) ( c ); else if(pj>a[i]) dgs++; printf("ggs:%d,dgs:%d\n",ggs,dgs); } A.0 B.1 C.ggs++ D.s=s+a[i] |
题干 | 以下程序的输出数值结果为( c )。 #include "stdio.h" void main() { int p[8]={11,12,13,14,15,16,17,18},i=0,j=0; while(i++<7) if(p[i]%2) j+=p[i]; printf("%d\n",j); } A.43 B.44 C.45 D.46 |
题干 | 已有定义char a[]="xyz",b[]={‘x’,‘y’,‘z’},以下叙述正确的是( c )。 A.数组a和b的存储空间长度相同 B.数组a的存储空间长度小于数组b的存储空间长度 C.数组a的存储空间长度大于数组b的存储空间长度 D.上述说法均不正确 |
题干 | 以下程序实现将输入的任意串a复制到b,请填空。 void main(){ char a[80],b[80]; int i=0; scanf("%s",a); while(a[i]){ ( b )=( a ); ( c ); } ( b )=‘\0’; printf("%s\n",b); } A.a[i] B.b[i] C.i++ D.b[i+1] |