数组和结构题库.docx
- 文档编号:6064223
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:29
- 大小:54.51KB
数组和结构题库.docx
《数组和结构题库.docx》由会员分享,可在线阅读,更多相关《数组和结构题库.docx(29页珍藏版)》请在冰豆网上搜索。
数组和结构题库
第四章数组和结构
一、选择题
1.有结构型定义如下:
structperson
{
charname[20];
intage;
intsex;
}w[5],*p=w;
那么下面scanf语句中对结构变量成员不正确的引用是( )。
A.scanf(“%s”,w[0].name);B.scanf(“%d”,&w[0].age);
C.scanf(“%d”,&(p->sex));D.scanf(“%d”,p->age);
答:
D
2.处理字符串必须调用
(1),且首先要声明预编译命令
(2)。
不能用赋值运算符“=”对字符串赋值,应调用(3)函数;也不能用关系运算符“==”、“>”、“<”对字符串进行比较,应调用(4)函数。
答案:
(1)字符串库函数
(2)#include
3.有如下程序段:
charstr[14]={"Iam"};
strcat(str,"sad!
");
scanf("%s",str);
printf("%s",str);
当输入为happy!
(A)Iamsad!
(B)happy!
(C)Iamhappy!
(D)happy!
ad!
答案:
(B)
4.以下对二维数组a进行不正确初始化的是。
A.inta[][3]={3,2,1,1,2,3};
B.inta[][3]={{3,2,1},{1,2,3};
C.inta[2][3]={{3,2,1},{1,2,3}};
D.inta[][]={{3,2,1},{1,2,3}};
答案:
D
5.以下函数的功能是:
通过键盘输入数据,为数组中的所有元素赋值。
#defineN10
voidarrin(intx[N])
{
inti=0;
while(i scanf("%d",); } 在下划线处应填入的是。 (2003年4月) A)x+iB)&x[i+1]C)x+(i++)D)&x[++i] 答案: C 6.下列描述中不正确的是。 A)字符型数组中可以存放字符串 B)可以对字符型数组进行整体输入、输出 C)可以对整型数组进行整体输入、输出 D)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 答案: C 7.以下程序的输出结果是。 #include #include voidmain() { charb[30]; strcpy(&b[0],"CH"); strcpy(&b[1],"DEF"); strcpy(&b[2],"ABC"); printf("%s\n",b); } A)CHDEFB)DEFABCC)CDABCD)CHABC 答案: C 8.下面能正确定义一维数组的选项是。 A)intnum[]B)#defineN100C)intnum[0..100]D)intN=100 intnum[N]intnum[N] 答案: B 9.下面正确的数组定义语句是。 A)inty[1][4]={1,2,3,4,5}; B)floatx[3][]={{1},{2},{3}}; C)longs[2][3]={{1},{1,2},{1,2,3}}; D)doublet[][3]={0}; 答案: D 10.执行下列程序时,输入123<空格>456<空格>789<回车>,输出结果是。 #include voidmain() { chars[100]; intc,i; scanf("%c",&c);scanf("%d",&i);scanf("%s",s); printf("%c,%d,%s\n",c,i,s); } A)123,456,789B)1,456,789C)1,23,456,789D)1,23,456 答案: D 11.下面程序的输出结果为()。 #include voidmain() { inta[3],i,j,k=2; for(i=0;i<3;i++) a[i]=0; for(i=0;i for(j=0;j a[j]=i*j; printf("%d\n",a[2]); } A)0B)1C)2D)3 答案: A 12.下面程序的输出结果是()。 #include voidmain() { inti,j,k; charstr[5]; for(i=0;i<5;i++)str[i]='A'; k=4; for(i=0;i for(j=0;j str[j]=str[i]+32; printf("%c\n",str[k]); } A)aB)AC)BD)不确定的值 答案: B 13.下面程序的输出结果是()。 #include voidmain() { chars[4][20]; inti; scanf("%s%s",s[0],s[1]); gets(s[2]);gets(s[3]); for(i=0;i<4;i++) puts(s[i]); } 输入数据如下: (此处 aabb ccdd A)aaB)aaC)aaD)aabb bbbbbbcc ccccdddd ccdddd 答案: A 14.假定int类型变量占用两个字节,其有定义: intx[10]={0,2,4};,则数组x在内存中所占字节数是。 (A)3(B)6(C)10(D)20 答案: D 15.以下程序的输出结果是。 #include #include voidmain() { charst[20]="hello\0\t\\"; printf("%d%d\n",strlen(st),sizeof(st)); } (A)99(B)520(C)1320(D)2020 答案: B 16.以下对结构体类型变量td的定义中,错误的是。 (A)typedefstructaa(B)structaa {intn;{intn; floatm;floatm; }AA;}td; AAtd;structaatd; (C)struct(D)struct {intn;{intn; floatm;floatm; }aa;}td; structaatd; 答案: C 17.下列程序的输出结果为。 #include voidmain() { intk=0,i,s[]={1,-9,7,2,-10,3}; for(i=0;i<6;i++) if(s[i]>s[k]) k=i; printf("\n%d\n",k); } (A)4(B)2(C)3(D)1 答案: B 18.有如下定义: structdate{intyear,month,day;}; structworklist{charname[20];charsex;structdatebirthday;}personone; 对结构体变量personone的出生年份进行赋值时,下面正确的赋值语句是。 (A)year=1968(B)birthday.year=1968 (C)personone.birthday.year=1968(D)personone.year=1968 答案: C 19.若程序中有如下的说明和定义: structexep {intx,y;} structexepx,y; … 则会发生的情况是。 (A)编译时出错 (B)能通过编译、连接、执行 (C)能通过编译但连接出错 (D)能通过编译、连接,但不能执行 答案: A 20.设有以下语句 typedefstructS {intg;charh;}T; 则下面叙述中正确的是。 A)可用S定义结构体变量B)可以用T定义结构体变量 C)S是struct类型的变量D)T是structS类型的变量 答案: B 21.有结构定义如下: struct { intk: 2; int: 0; unsignedintm: 5; }st; 那么变量st所占用的字节数是()。 A.3B.2C.1D.4 答: B 22.以下对结构类型变量的定义中,不正确的是。 A)typedefstructaaB)#defineAAstructaa {intn;AAAA{intn; floatm;floatm; }AA;}tdl; AAtdl; C)structD)struct {intn;{intn; floatm;floatm; }aa;}tdl; structaatd1; 答案: C 23.当执行下面的程序时,如果输入ABC,则输出结果是。 (2001年4月) #include #include voidmain() { charss[10]="12345"; gets(ss); strcat(ss,"6789"); printf("%s\n",ss); } A)ABC6789B)ABC67C)12345ABC6D)ABC456789 答案: A 24.给出以下定义 charx[]="abcdefg"; chary[]={'a','b','c','d','e','f','g'}; 则正确的叙述为。 A)数组x和数组y等价 B)数组x和数组y的长度相同 C)数组x的长度大于数组y的长度 D)数组x的长度小于数组y的长度 答案: C 25.下面程序的输出是 A)0B)1C)3D)6 #include voidmain() { structcmplx{ intx;inty; }cnum[2]={1,3,2,7}; printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x); } 答案: D 26.下列程序的输出结果是 A)5B)6C)7D)8 #include structabc { inta,b,c; }; voidmain() { structabcs[2]={{1,2,3},{4,5,6}}; intt; t=s[0].a+s[1].b; printf("%d\n",t); } 答案: B 27.设有以下说明语句 structex { intx;floaty;charz; }example; 则下面的叙述中不正确的是 A)struct是结构体类型的关键字B)example是结构体类型名 C)x,y,z都是结构体成员名D)structex是结构体类型名 答案: B 28.设有如下说明 typedefstruct { intn;charc;doublex; }STD; 则以下选项中,能正确定义结构体数组并赋初值的语句是 A)STDtt[2]={{1,'A',62},{2,'B',75}}; B)STDtt[2]={1,"A",62},2,"B",75}; C)structtt[2]={{1,'A'},{2,'B'}}; D)structtt[2]={{1,"A",62.5},{2,"B",75.0}}; 答案: A 29.有以下程序 #include voidmain() { inti,test,p[17],head; for(i=0;i<16;i++) p[i]=i+1; p[16]=0; test=0; while(test! =p[test]) { for(i=1;i<3;i++) { head=test; test=p[test]; } p[head]=p[test]; test=p[head]; } printf("\n%5d",test); } 程序执行后的输出结果是_______。 A)1,2,3B)2,3,4 C)10D)4 答案: C 30.有以下程序 #include voidmain() { intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j; for(i=0;i<4;i++) { for(j=0;j<=i;j++)printf("%4c",''); for(j=_____;j<4;j++)printf("%4d",num[i][j]); printf("\n"); } } 若要按以下形式输出数组右上半三角 1234 678 1112 16 则在程序下划线处应填入的是______。 A)i-1B)iC)i+1D)4-i 答案: B 31.有以下程序 #include voidmain() { intp[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)42B)45C)56D)60 答案: B 32.有以下程序 #include voidmain() { charp[]={'a','b','c'},q[]="abc"; printf("%d%d\n",sizeof(p),sizeof(q)); } 程序运行后的输出结果是______。 A)44B)33C)34D)43 答案: C 33.有以下程序 #include #include voidmain() { charp[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q)); } 以下叙述中正确的是______。 A)在给p和q数组置初值时,系统会自动添加字符串结束符,故长度都为3 B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3 C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3 D)由于p和q数组中都没有字符串结束符,故长度都不能确定 答案: B 34.有以下程序 #include #include voidmain() { chara[7]="a0\0a0\0";inti,j; i=sizeof(a);j=strlen(a); printf("%d%d\n",i,j); } 程序运行后的输出结果是______。 A)22B)76C)72D)62 答案: C 35.设有如下说明 typedefstructST {longa;intb;charc[2];}NEW; 则下面叙述中正确的是______。 A)以上的说明形式非法B)ST是一个结构体类型 C)NEW是一个结构体类型D)NEW是一个结构体变量 答案: C 36.以下对结构体类型变量td的定义中,错误的是______。 A)typedefstructaaB)structaa {intn;{intn; floatm;floatm; }AA;}td; AAtd;structaatd; C)structD)struct {intn;{intn; floatm;floatm; }aa;}td; structaatd; 答案: C 37.表达式strcmp("box","bottle")的值是。 A)正整数B)负整数C)0D)不确定的数 答案: A 二、填空题 1.有如下程序段: #include voidmain() { chars[]="SSSWiLTECH1\1\11W\1WALLMP1"; intj; charch; for(j=2;(ch=s[j])! ='\0';j++) { switch(ch) { case'A': putchar('a');continue; case'1': break; case1: while((ch=s[++j])! ='\n'&&ch! ='\0'); case9: putchar('#'); case'E': case'L': continue; default: putchar(ch);continue; } putchar('*'); } printf("\n"); } 此程序段的输出结果是。 答案: SwiTCH*# 2.定义结构类型如下: structa { charc; chars[20]; intm; }; 请使用此类型定义一个结构变量b1,并在定义时给各成员变量赋初值,使c的值为‘n’,s中存放字符串“person”,m的值为3: 。 答案: structab1={'n',"person",3}; 3.以下sum函数的功能是计算下列级数之和。 (2004年4月) s=1+x+x2/2! +x3/3! +……+xn/n! 请给函数中的各变量正确赋初值。 doublesum(doublex,intn) { inti;doublea,b,s; for(i=1;i<=n;i++) { a=a*x;b=b*i;s=s+a/b; } returns; } 答案: a=b=s=1.0 4.以下程序用来输出结构体变量ex所占存储单元的字节数: #include structst { charname[20];doublescore; }; voidmain() { structstex; printf(“exsize: %d\n”,sizeof()); } 答案: ex或structst 5.由25人围坐成圆圈,先从任意一人出发,用1到25顺时针依次编号,然后从1号开始顺时针报数(1、2、3、…),凡报5的倍数者出圈,剩下者继续报数,求出最后出圈者的编号。 #include voidmain() { inta[26],j,n,count; for(=1;j<=25;j++)a[j]=j; j=1;count=0;n=【1】; do { if(a[j]! =0) { n++; if(n%5==0) { 【2】; if(count==24)printf("%d\n,",j); count++; } } j++; if(j>25)j=1; }while(【3】); } 答案: 【1】0【2】a[j]=0【3】count<25 6.有一个已排好序的数组,现输入一个数,要求按原来的顺序规律,将它插入到数组中。 采用的算法是: 假设排序为从小到大,对输入的数,检查它在数组中哪一个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。 请填空。 #include #defineN100 voidmain() { floata[N+1],x; inti,p; printf(“输入已排好序的数列: ”); for(i=0;i scanf("%f",&a[i]); printf(“输入要插入的数: ”); scanf("%f",&x);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 结构 题库