c语言数组典型试题设计含答案_第1页
c语言数组典型试题设计含答案_第2页
c语言数组典型试题设计含答案_第3页
c语言数组典型试题设计含答案_第4页
c语言数组典型试题设计含答案_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一.选择题(2*20)【题1】在c语言中,引用数组元素时,其数组下标的数据类型允许是A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式【题2】以下对一维整型数组a的正确说明是。A)inta(10);B)intn=10,an;C)intn;D)#defineSIZE10scanf("%d",&n);intaSIZE;intan;【题3】若有说明:inta10;则对a数组元素的正确引用是。A) a10B)a3.5C)a(5)D)a10-10【题4】在C语言中,一维数组的定义方式为:类型说明符数组名A)整型常量表达式B)整型表达式C)整型常量或整型表达

2、式D)常量【题5】以下能对一维数组a进行正确初始化的语句是A)inta10=(0,0,0,0,0);C)inta=0;B)D)inta10=;inta10=”10*1A)inta3;C)doublea14;B)D)【题7】若有说明:A)a24inta34;则对aB) a1,3数组元素的正确引用是C) a1+10D) a(2)(1)【题8】若有说明:A)a02*1inta34;则对aB) a13数组元素的非法引用是C) a4-20D) a04【题6】以下对二维数组a的正确说明是floata(3,4);floata(3)(4);【题9】以下能对二维数组a进行正确初始化的语句是A)inta2=1,0

3、,1,5,2,3;B) inta3=1,2,3,4,5,6;C) inta24=1,2,3,4,5,6;D) inta3=1,0,1,1,1;【题10】以下不能对二维数组a进行正确初始化的语句是A)inta23=0;B) inta3=1,2,0;C) inta23=1,2,3,4,5,6;D) inta3=1,2,3,4,5,6;【题11】若有说明:inta34=0;则下面正确的叙述是A)只有元素a00可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值0【题12】若有说明:inta4=0,0;则下面不正确的叙述是。A)数组a的每个元

4、素都可得到初值0B)二维数组a的第一维大小为1C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D)只有元素a00和a01可得到初值0,其余元素均得不到初值0【题13】若有说明:inta34;则全局数组a中各元素A)可在程序的运行阶段得到初值0B)可在程序的编译阶段得到初值0C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0【题14】以下各组选项中,均能正确定义二维实型数组a的选项是A)floata34;B)floata(3,4);floata4;floata34;floata3=1,0;floata=0;0;C)floata34;D)floata34;sta

5、ticfloata4=0,0;floata3;autofloata4=0,0,0;floata4;【题15下面程序如果只有一个错误,那么是(每行程序前面的数字表示行号)1 main()2 3 floata3=3*0;4 inti;5 for(i=0;i<3;i+)scanf("%d",&ai);6 for(i=1;i<3;i+)a0=a0+ai;7 printf("dn”,a0);8 A)第3行有错误B)第7行有错误C)第5行有错误D)没有错误【题16下面程序(每行程序前面的数字表示行号)。1 main()2 3 floata10=0.0;4

6、inti;5 for(i=0;i<3;i+)scanf("%d",&ai);6 for(i=1;i<10;i+)a0=a0+ai;7 printf("fn”,a0);8 A)没有错误B)第3行有错误C)第5行有错误D)第7行有错误【题17下面程序中有错误的行是(每行程序前面的数字表示行号)。1 main()2 3 floata3=1;4 inti;5 scanf("d",&a);6 for(i=1;i<3;i+)a0=a0+ai;7 printf("a0=%dn",a0);8 A)3B)6C

7、)7D)5【题18下面程序(每行程序前面的数字表示行号)。1 main()2 3 floata3=0;4 inti;5 for(i=0;i<3;i+)scanf("f”,&ai);6 for(i=1;i<4;i+)a0=a0+ai;7 printf("fn”,a0);8 A)没有错误B)第3行有错误C)第5行有错误D)第6行有错误【题19】若二维数组a有m歹U,则计算任一元素aij在数组中位置的公式为(假设a00位于数组的第一个位置上。)A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1【题20】对以下说明语句的正确理解是。inta10=6

8、,7,8,9,10;A) 将5个初值依次赋给a1至a5B) 将5个初值依次赋给a0至a4C) 将5个初值依次赋给a6至a10D)因为数组长度与初值的个数不相同,所以此语句不正确参考答案:15CDDAC610CCDBC1115DDBCA1620CDDDB二.程序分析(10*2)1 .下面程序的输出结果是。structstuintx,*y;)*P;intd4=10,20,30,40;structstua4=50,&d0,60,&d1,70,&d2,80,&d3;main()P=a;printf("%d,",+p->x);printf(&qu

9、ot;%d,",(+p)->x);printf("%dn",+(*p->y);2 .以下程序的运行结果是。unionuninta;intb;unionuns4;unionun*p;main()intn=1,i;for(i=0;i<4;i+)si.a=n;si.b=si.a+1;n=n+2;p=&s0;printf("%d,",p->a);printf("%d",+p->a);3 .51,60,212.2,3四.程序设计(10*4)1、将二维数组(5行5歹U)的右上半部分置零。即:1234

10、5变成1000067891067000111213141511121300161718192016171819021222324252122232425#include<stdio.h>main()(inta55=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(inti=0;i<5;i+)for(intj=0;j<5;j+)if(i<j)printf("%3d",0);elseprintf("%3d",aij);printf(&quo

11、t;n");2、求二维数组(3行3歹U)的对角线元素的和101213141516171819#include<stdio.h>main()inta33=10,12,13,14,15,16,17,18,19,sum=0;for(inti=0;i<3;i+)for(intj=0;j<3;j+)if(i=j)sum=sum+aij;)printf("%d",sum);)3、求二维数组(5行5歹U)中最大元素值及其行列号#include<stdio.h>main()inta55,i,j;for(i=0;i<5;i+)for(j=0

12、;j<5;j+)scanf("%d",&aij);)intsum=a00,x,y;for(i=0;i<5;i+)for(j=0;j<5;j+)if(sum<aij)sum=aij;x=i;y=j;)printf("a%d%d=%d",x,y,sum);)4、从键盘上输入9个整数,保存在二维数组中按数组原来位置输出第一行和第一列的所有元素#include<stdio.h>main()inta33,i,j;for(i=0;i<3;i+)for(j=0;j<3;j+)scanf("%d"

13、;,&aij);)for(i=0;i<3;i+)(for(j=0;j<3;j+)(if(i=0|j=0)(printf("%d",aij);)printf("n");)一、选择题1 .以下对一维整型数组a的正确说明是。A.inta(10);B.intn=0,an;C.intn;D.#defineSIZE10scanf(%d",&n);intaSIZEintan;2 .若有说明:inta10;,则对a数组元素的正确引用是。A.a10B.a3.5C.a(5)D.a10-103 .以下能对一维数组a进行正确初始化的语句形式

14、是。A.inta10=(0,0,0,0,0);B.inta10=;C.doublea4;D.inta10=10*1;4 .以下对二维数组a的正确说明是。A.inta3;B.floata(3,4);C.doublea4;D.floata(3)(4);5 .若有说明:inta34;则对a数组元素的正确引用是。A.a34B.a1,3C.a1+10D.a(2)(1)6 .以下能对二维数组a进行正确初始化的语句是。A. inta2=1,0,1,5,2,3;B. inta3=1,2,3,4,5,6;C. inta24=1,2,3,4,5,6;D. inta3=1,0,1,0,1,1;7.下面程序段(每行代

15、码前面的数字表示行号)。1 inta3=3*0;2 inti3 for(i=0;i<3;i+)scanf(%d”,&ai);4 for(i=1;i<3;i+)a0=a0+ai;5 printf(%dn”,a0);A.第1行有错误B.第5行有错误C.第3行有错误D.没有错误8 .若有定义floatx4=1.3,2.4,5.6,y=6;则错误的语句是。A.y=x3;B.y=x+1;C.y=x2+1D.x0=y;9 .定义如下变量和数组:intk;inta33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是。for(k=0;k<3;k+)printf(%d&qu

16、ot;,ak2-k);A.357B.369C.159D.14710 .下面程序的运行结果是。#include<stdio.h>intmain()inta66,i,j;for(i=1;i<6;i+)for(j=1;j<6;j+)aij=(i/j)*(j/i);for(i=1;i<6;i+)for(j=1;j<6;j+)printf("%2d",aij);printf("n");return0;A.1111111111111111111111111B. 000010001000100010001 0000C. 100000

17、1000001000001000001D. 1000101010001000101010001A.chars5=abc'C.chars5=;11 .下面是对数组s的初始化,其中错误的语句是B.chars5=a',b',d'D.chars5=abcde"12 .下面程序段的运行结果是。(表示1个空格)charc5='a','b','0','c','0'printf("%s",c);A.'a''b'B.abC.abDcD.ab

18、D13 .有两个字符数组a、b,则以下正确的输入格式是。A.gets(a,b);B.scanf(%s%s”,a,b);C.scanf(%s%s”,&a,&b);D.gets(a'"),gets(b");14 .有字符数组a80和b80,则正确的输出形式是。A.puts(a,b);B.printf(%s%s”,a,b);C.putchar(a,b);D.puts(a),puts(b);15 .有下面的程序段,则。chara3,b="China"a=b;printf("%s",a);A.运行后将输出ChinaB.运

19、行后将输出ChC.运行后将输出ChiD.编译出错16 .下面程序段的功能是输出两个字符串中对应相等的字符,请选择填空。charx="programming"chary="Fortran"inti=0;while(xi!='0'&&yi!='0')if(xi=yi)printf("%c",);elsei+;A.xi+B.y+iC.xiD.yi17 .下面程序的功能是将字符串s中所有的字符c删除。请选择填空。#include<stdio.h>intmain()chars80;in

20、ti,j;gets(s);for(i=j=0;si!='0'i+)if(si!='c');sj='0'puts(s);return0;A.sj+=siB.s+j=siC.sj=si;j+D.sj=si18 .下面程序的运行结果是。#include<stdio.h>intmain()charch7="12ab56"inti,s=0;for(i=0;chi>='0'&&chi<='9'i+=2)s=10*s+chi-'0'printf(&quo

21、t;%dn",s);return0;A.1B.1256C.12ab56D.15则下面程19 .当运行以下程序时,从键盘输入:ab<回车>c<回车>def<回车>,序的运行结果是。#include<stdio.h>#defineN6intmain()charcN;inti=0;for(;i<N;ci=getchar(),i+);for(i=0;i<N;i+)putchar(ci);return0;A.abcdefB.aC.bD.abbcccdddef20 .下面程序的运行结果是#include<stdio.h>in

22、tmain()chara="morning",t;inti,j=0;for(i=1;i<7;i+)if(aj<ai)j=i;t=aj;aj=a7;a7=t;puts(a);return0;)A.mogninrB.moC.morningD.mornin答案:1. D2,D3.B4.C5.C6.B7.A8.B9.A10.C11.D12.B13.B14.D15.D16.A17.A18.A19.D20.B二、填空题1,若有定义floata35;则a数组所含数组元素个数是,a数组所占的字节数是。2,若有定义:doublex35;,则x数组中行下标的下限为,列下表的上限为。

23、3 .假设M为已经声明的符号常量,则定义一个具有MXM个元素的双精度型数组a,且所有元素初值为0的形式是。4 .若有定义:inta34=1,2,0,4,6,8,10;则初始化后,a12得到的初值是,a21得到的初值是。5,下面程序给a数组输入数据并以每行4个数据的形式输出。请填空。#include<stdio.h>#defineN20intmain()intaN,i;for(i=0;i<N;i+);for(i=0;i<N;i+)if()printf("%3d",ai);printf("n");return0;6,下面程序将二维数组

24、a的行和列元素互换后存到另一个二维数组b中,请填空。#include<stdio.h>intmain()inta23=1,2,3,4,5,6;intb32,i.j;printf("arraya:n");for(i=0;i<=1;i+)for(j=0;j+)printf("%5d",aij);printf("n");printf("arrayb:n");for(i=0;i+)for(j=0;j<=1;j+)printf("%5d",bij);printf("n&q

25、uot;);return0;7 .下面程序段的运行结果是intx5,i;x0=1;x1=2;for(i=2;i<5;i+)xi=xi-1+xi-2;for(i=2;i<5;i+)printf("%d",xi);8 .下面程序的运行结果是。#include<stdio.h>intmain()inta55,i,j,n=1;for(i=0;i<5;i+)for(j=0;j<5;j+)aij=n+;printf("Theresultis:n");for(i=0;i<5;i+)for(j=0;j<=i;j+)prin

26、tf("%4d",aij);printf("n");return0;)9 .以下程序的功能是求1000以内的水仙花数。(提示:所谓水仙花数是指一个3位正整数,其各位数字的立方之和等于该正整数。例如:407=4X4X4+0X0X0+7X7X7,故407是一个水仙花数。)请填空。#include<stdio.h>intmain()intx,y,z,a8,m,i=0;printf("Thespecialnumbersare:n");for(;m+)x=m/100;y=;z=m%10;if(m=x*x*x+y*y*y+z*z*z)

27、;i+;)for(x=0;x<i;x+)printf("%6d",ax);printf("n");return0;10 .下面程序的运行结果是。#include<stdio.h>intmain()inta10=7,3,5,2,9,1,0,6,8,4,i=0,j=9,t;while(i<j)t=ai;ai=aj;aj=t;i+=2;j-=2;for(i=0;i<10;i+=2)printf("%d",ai);return0;11 .下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然

28、后输出调整后的5个整数。请填空。#include<stdio.h>intmain()inta5,max,min,i,j=0,k=0,t;for(i=0;i<5;i+)scanf("%d",&ai);min=a0;for(i=1;i<5;i+)if(ai<min)min=ai;max=a0;for(i=1;i<5;i+)if(ai>max)max=ai;printf("nThepositionofminis:%3dn”,k);printf("Thepositionofmaxis:%3dn",j);

29、for(i=0;i<5;i+)printf("%5d",ai);printf("n");return0;12 .下面程序的功能是检查一个二维数组是否对称(即对所有i、j都有aij=aji)。请填空。#include<stdio.h>intmain()inta44=1,234,2,2,5,6,3,5,374,674;inti,j,found=0;for(j=0;j<4;j+)for(;i<4;i+)if(aji!=aij);break;if(found=1)printf("Non");elseprintf(

30、"Yesn");return0;13 .设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。#include<stdio.h>intmain()inta10=1,2,3,4,5,6,7,8,9,10;intk,s,i;floatave;for(k=s=i=0;i<10;i+)if(ai%2!=0)k+;if(k!=0)ave=s/k;printf("%d,%fn",k,ave);return0;14 .以下程序是将矩阵a、b的和存入矩阵c中并按矩阵形式输出。请填空。#include<stdio.h>

31、intmain()inta34=3,-2,7,5,1,0,4,-3,6,8,0,2;intb34=-2,0,1.4,5,-1,7.6,6,8,0.2;inti,j,c34;for(i=0;i<3;i+)for(j=0;j<4;j+)cij=;printf("%3d",cij);return0;15 .以下程序段的功能是求数组num中小于零的数据之和。请填空。intnum20=10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90,-45,20;intsum=0,i;for(i=0;i<=19;i

32、+)if()sum=;printf("sum=%6d",sum);16 .以下程序段的功能是,运行后输出结果是。intnum10=103,1,-20,-203,-21,2,-2,-2,13,-21;intsum=0,i;for(i=0;i<10;i+)if(numi>0&&numi%10=3)sum=sum+numi;printf("sum=%dn",sum);17 .下面程序用“快速顺序查找法”判断数组a中是否存在某一数。请填空。#include<stdio.h>intmain()inta9=25,57,48,3

33、7,12,92,86,33,i,x;scanf("%d",&x);i=0;while(ai!=x)i+;if()printf("Found!Theindexis:%dn",i);elseprintf("Can'tfound!n");return0;18 .下面程序是用“插入法”对数组a进行降序排序。请填空。#include<stdio.h>intmain()inta5=4,7,2,5,1,i,j,m;for(i=1;i<5;i+)m=ai;j=;while(j>=0&&m>

34、aj).;j-;=m;for(i=0;i<5;i+)printf("%3d",ai);printf("n");return0;19 .下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。#include<stdio.h>intmain()inta3=5,9,10;intb5=12,24,26,37,48);intc10,i=0,j=0,k=0;while(i<3&&j<5)if()ck=bj;k+;j+;elseck=ai;k+;i+;while()ck=ai;i+;k+;while(

35、)ck=bj;j+;k+;for(i=0;i<k;i+)printf("%3d",ci);putchar('n');return0;20 .字符串"abn012""的长度是。21 .下面程序段将输出computer。请填空。charc="Itisacomputer"inti,j;for(i=0;i+);printf("%c",cj);22 .下面程序的功能是从键盘输入一个大写英文字母,要求按字母的顺序打印出3个相邻的字母,指定的字母在中间。若指定的字母为Z,则打印出YZA;若为A,则打印出ZAB。请填空。#include<stdio.h>intmain()chara3,c;inti;c=getchar();a1=c;if(c='Z')a2='A'elseif(c='A')a0='Z'elsea0=c-1;a2=c+1;for(i=0;i<=2;i+)putchar(ai);return0;)23 .下面程序段的功能是将字符数组a6='a','b','c','d','e','f变为a6=&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论