1、C语言 数组有答案一、选择题1. 以下对一维整型数组a的正确说明是 。Aint a(10); Bint n=0, an;Cint n; scanf(“%d”,&n); int an;D#define SIZE 10 int aSIZE2. 若有说明:int a10; ,则对a数组元素的正确引用是 。Aa10 Ba Ca(5) Da10-103. 以下能对一维数组a进行正确初始化的语句形式是 。Aint a10=(0, 0, 0, 0, 0); Bint a10= ;Cdouble a 4; Dint a10=10*1;4. 以下对二维数组a的正确说明是 。Aint a3 ; Bfloat a(
2、3,4); Cdouble a 4; Dfloat a(3)(4);5. 若有说明:int a34; 则对a数组元素的正确引用是 。Aa34 Ba1, 3 Ca1+10 Da(2)(1)6. 以下能对二维数组a进行正确初始化的语句是 。Aint a2 =1, 0, 1, 5, 2, 3;Bint a 3=1,2,3,4,5,6;Cint a24=1,2,3,4,5,6;Dint a 3=1,0,1,0, ,1,1;7. 下面程序段 (每行代码前面的数字表示行号)。1 int a3=3*0;2 int i3 for(i=0; i3; i+) scanf(“%d”,&ai);4 for(i=1;
3、i3; i+) a0=a0+ai;5 printf(“%dn”,a0);A第1行有错误 B第5行有错误 C第3行有错误 D没有错误8. 若有定义float x4=, , ,y=6; 则错误的语句是 。Ay=x3; By=x+1; Cy=x2+1 Dx0=y;9. 定义如下变量和数组:int k;int a33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是 。for(k=0; k3; k+) printf(“%d”,ak2-k);A3 5 7 B3 6 9 C1 5 9 D1 4 710. 下面程序的运行结果是 。#includeint main()int a66,i,j; for
4、(i=1;i6;i+) for(j=1;j6;j+) aij=(i/j)*(j/i); for(i=1;i6;i+) for(j=1;j6;j+) printf(%2d,aij); printf(n); return 0;A1 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1B 0 0 0 0 10 0 0 1 00 0 1 0 00 1 0 0 01 0 0 0 0C1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1D1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0
5、 0 111. 下面是对数组s的初始化,其中错误的语句是 。Achar s5=“abc”; Bchar s5=a, b, c;Cchar s5= “ ”; Dchar s5= “abcde”;12. 下面程序段的运行结果是 。(表示1个空格)char c5=a,b,0,c,0;printf(%s,c);Aab Bab Cabc Dab13. 有两个字符数组a、b,则以下正确的输入格式是 。Agets(a,b); Bscanf(“%s%s”,a,b); Cscanf(“%s%s”,&a,&b); Dgets(“a”),gets(“b”);14. 有字符数组a80和b80,则正确的输出形式是 。A
6、puts(a,b); Bprintf(“%s%s”,a ,b ); Cputchar(a,b); Dputs(a),puts(b);15. 有下面的程序段,则 。char a3,b =China;a=b;printf(%s,a);A运行后将输出China B运行后将输出ChC运行后将输出Chi D编译出错16. 下面程序段的功能是输出两个字符串中对应相等的字符,请选择填空。char x =programming;char y =Fortran;int i=0;while(xi!=0 & yi!=0) if(xi= =yi) printf(%c, ); else i+;Axi+ By+i Cxi
7、 Dyi17. 下面程序的功能是将字符串s中所有的字符c删除。请选择填空。#includeint main()char s80; int i,j; gets(s); for(i=j=0;si!=0; i+) if(si!=c) ; sj=0; puts(s); return 0;Asj+=si Bs+j=si Csj=si;j+ Dsj=si18. 下面程序的运行结果是 。#includeint main()char ch7=12ab56; int i,s=0; for(i=0;chi=0 & chi=9;i+=2) s=10*s+chi-0; printf(%dn,s); return 0;
8、A1 B1256 C12ab56 D1519. 当运行以下程序时,从键盘输入:ab c def,则下面程序的运行结果是 。#include#define N 6int main() char cN; int i=0; for( ; iN; ci=getchar( ), i+); for(i=0;iN;i+) putchar(ci); return 0;AabcdefBa b c d e fCb c dDab c d20. 下面程序的运行结果是 。#includeint main() char a=morning,t; int i,j=0; for(i=1;i7;i+) if(ajai) j=i
9、; t=aj; aj=a7; a7=t; puts(a); return 0;Amogninr Bmo Cmorning Dmornin答案:1. D 2. D 3. B 4. C 5. C 6. B 7. A 8. B 9. A 10. C 11. D12. B 13. B 14. D 15. D 16. A 17. A 18. A 19. D 20. B二、填空题1. 若有定义float a35;则a数组所含数组元素个数是 ,a数组所占的字节数是 。2. 若有定义:double x35; ,则x数组中行下标的下限为 ,列下表的上限为 。3. 假设M为已经声明的符号常量,则定义一个具有MM个
10、元素的双精度型数组a,且所有元素初值为0的形式是 。4. 若有定义:int a34=1,2, 0, 4,6,8,10; 则初始化后,a12得到的初值是 ,a21得到的初值是 。5. 下面程序给a数组输入数据并以每行4个数据的形式输出。请填空。#include#define N 20int main()int aN,i; for(i=0;iN;i+) ; for(i=0;iN;i+) if( ) printf(%3d,ai); printf(n); return 0;6. 下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空。#includeint main() int a23=
11、1,2,3,4,5,6; int b32,i,j; printf(array a:n); for(i=0;i=1;i+) for(j=0; ;j+) printf(%5d,aij); ; printf(n); printf(array b:n); for(i=0; ;i+) for(j=0;j=1;j+) printf(%5d,bij); printf(n); return 0;7. 下面程序段的运行结果是 。 int x5, i; x0=1; x1=2; for(i=2;i5;i+) xi=xi-1+xi-2; for(i=2;i5;i+) printf(%d,xi);8. 下面程序的运行结
12、果是 。#includeint main() int a55,i,j,n=1; for(i=0;i5;i+) for(j=0;j5;j+) aij=n+; printf(The result is:n); for(i=0;i5;i+) for(j=0;j=i;j+) printf(%4d,aij); printf(n); return 0;9. 以下程序的功能是求1000以内的水仙花数。(提示:所谓水仙花数是指一个3位正整数,其各位数字的立方之和等于该正整数。例如:407=444+000+777,故407是一个水仙花数。)请填空。#includeint main()int x,y,z,a8,m
13、,i=0; printf(The special numbers are:n); for( ; m+) x=m/100; y= ; z=m%10; if(m=x*x*x+y*y*y+z*z*z) ; i+; for(x=0;xi;x+) printf(%6d,ax); printf(n); return 0;10. 下面程序的运行结果是 。#includeint main() int a10=7,3,5,2,9,1,0,6,8,4,i=0,j=9,t; while(ij) t=ai; ai=aj; aj=t; i+=2; j-=2; for(i=0;i10;i+=2) printf(%d,ai
14、); return 0;11. 下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个整数。请填空。#includeint main() int a5,max,min,i,j=0,k=0,t; for(i=0;i5;i+) scanf(%d,&ai); min=a0; for(i=1;i5;i+) if(aimin) min=ai; ; max=a0; for(i=1;imax) max=ai; ; printf(nThe position of min is:%3dn,k); printf(The position of max is:%3dn,j);
15、 for(i=0;i5;i+) printf(%5d,ai); printf(n); return 0;12. 下面程序的功能是检查一个二维数组是否对称(即对所有i、j都有aij=aji)。请填空。#includeint main()int a44=1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4; int i,j,found=0; for(j=0;j4;j+) for( ; i4; i+) if(aji!=aij) ; break; if(found=1) printf(Non); else printf(Yesn); return 0;13. 设数组a中的元素均为正整数,以下
16、程序是求a中偶数的个数和偶数的平均值。请填空。#includeint main()int a10=1,2,3,4,5,6,7,8,9,10; int k,s,i; float ave; for(k=s=i=0; i10; i+) if(ai%2!=0) ; s+= ; k+; if(k!=0) ave=s/k; printf(%d,%fn,k,ave); return 0;14. 以下程序是将矩阵a、b的和存入矩阵c中并按矩阵形式输出。请填空。#includeint main()int a34=3,-2,7,5,1,0,4,-3,6,8,0,2; int b34=-2,0,1,4,5,-1,7
17、,6,6,8,0,2; int i,j,c34; for(i=0;i3;i+) for(j=0;j4;j+) cij= ; printf(%3d,cij); ; return 0;15. 以下程序段的功能是求数组num中小于零的数据之和。请填空。int num20=10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90,-45,20; int sum=0,i; for(i=0;i=19;i+) if( ) sum= ; printf(sum=%6d,sum);16. 以下程序段的功能是 ,运行后输出结果是 。int num10=10
18、3,1,-20,-203,-21,2,-2,-2,13,-21; int sum=0,i; for(i=0;i0 & numi%10=3) sum=sum+numi; printf(sum=%dn,sum);17. 下面程序用“快速顺序查找法”判断数组a中是否存在某一数。请填空。#includeint main( )int a9=25,57,48,37,12,92,86,33,i,x; scanf(%d,&x); i=0; ; while(ai!=x) i+; if( ) printf(Found! The index is:%dn,i); else printf(Cant found!n);
19、 return 0;18. 下面程序是用“插入法”对数组a进行降序排序。请填空。#includeint main()int a5=4,7,2,5,1,i,j,m; for(i=1;i=0 & maj) ; j-; =m; for(i=0;i5;i+) printf(%3d,ai); printf(n); return 0;19. 下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。#includeint main()int a3=5,9,10; int b5=12,24,26,37,48; int c10,i=0,j=0,k=0; while(i3 & j5) if(
20、) ck=bj;k+;j+; else ck=ai;k+;i+; while( ) ck=ai;i+;k+; while( ) ck=bj;j+;k+; for(i=0;ik;i+) printf(%3d,ci); putchar(n); return 0;20. 字符串abn012的长度是 。21. 下面程序段将输出computer。请填空。char c =It is a computer; int i,j; for(i=0; ;i+) ; printf(%c,cj);22. 下面程序的功能是从键盘输入一个大写英文字母,要求按字母的顺序打印出3个相邻的字母,指定的字母在中间。若指定的字母为Z
21、,则打印出YZA;若为A,则打印出ZAB。请填空。#includeint main()char a3,c; int i; c=getchar(); a1=c; if(c=Z) a2=A; ; else if(c=A) a0=Z; ; else a0=c-1; a2=c+1; for(i=0;i=2;i+) putchar(ai); return 0;23. 下面程序段的功能是将字符数组a6= a,b,c,d,e,f变为a6= f,a,b,c,d,e。请填空。#includeint main()char t,a6=a,b,c,d,e,f; int i; ; for(i=4;i=0;i-) ; a
22、0=t; for(i=0;i=5;i+) putchar(ai); return 0;24. 下面程序的功能是在任意的字符串a中,将与字符c相等的所有元素的下标值分别存放在整型数组b中。请填空。#includeint main()char a80; int i,b80,k=0; gets(a); for(i=0;ai!=0;i+) if( ) bk=i; ; for(i=0;ik;i+) printf(%3d,bi); return 0; 25. 有10个字符串。下面程序的功能是在每个字符串中找出最大字符,并按一一对应的顺序放入一维数组a中,即第i个字符串中的最大字符放入ai中,输出每个字符串
23、中的最大字符。请填空。#includeint main()char s1020,a10; int i,j; for(i=0;i10;i+) gets(si); for(i=0;i10;i+) ; for(j=1;sij!=0;j+) if(aisij) ; for(i=0;i10;i+) printf(%d %cn,i,ai); return 0;答案:1. 15 60 2. 0 4 3. double aMM=0; 4. 0 65. scanf(“%d”,&ai) i%4=0 printf(“n”);6. j=2 bji=aij i=27. 3588. 1 6 7 11 12 13 16 1
24、7 18 19 21 22 23 24 259. m=100; m=999 m/10%10 ai=m10. 4610811. k=i j=i aj=min; ak=max;12. i=j+1 found=1;13. continue ai14. aij+bij printf(“n”)15. numi0 sum+numi16. 计算数组num中大于零且个位数为3的数据之和 11617. a8=x i818. i-1 aj+1=aj aj+119. bjai i3 j520. 921. i=7 j=i+822. a0=c-1 a2=c+123. t=a5 ai+1=ai24. ai=c k+25. ai=si0 ai=sij
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1