二级C语言循环结构数组二.docx

上传人:b****7 文档编号:10184403 上传时间:2023-02-09 格式:DOCX 页数:36 大小:26.77KB
下载 相关 举报
二级C语言循环结构数组二.docx_第1页
第1页 / 共36页
二级C语言循环结构数组二.docx_第2页
第2页 / 共36页
二级C语言循环结构数组二.docx_第3页
第3页 / 共36页
二级C语言循环结构数组二.docx_第4页
第4页 / 共36页
二级C语言循环结构数组二.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

二级C语言循环结构数组二.docx

《二级C语言循环结构数组二.docx》由会员分享,可在线阅读,更多相关《二级C语言循环结构数组二.docx(36页珍藏版)》请在冰豆网上搜索。

二级C语言循环结构数组二.docx

二级C语言循环结构数组二

二级C语言-循环结构、数组

(二)

(总分:

74.00,做题时间:

90分钟)

一、{{B}}选择题{{/B}}(总题数:

34,分数:

34.00)

1.下面程序输出的结果是______。

main()

{inti;

inta[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i

printf("%d",a[2-i][i]);

}

∙A.159

∙B.753

∙C.357

∙D.591

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题用循环的方法考查对数组概念的掌握。

首先,当i=0时,数组中的位置是a[2][0]=7,当然,如果用排除法,就不用考虑后面的循环,因为在4个选项中,第1个数为7的选项只有B。

本题执行第2次循环时,i的值为1,则printf函数中的数组指向为a[1][1]=5,依次循环,可求出答案。

2.以下数组定义错误的是______。

∙A.intx[][3]={0};

∙B.intx[2][3]={{1,2},{3,4},{5,6}};

∙C.intx[][3]={{1,2,3},{4,5,6}};

∙D.intx[][3]={1,2,3,4,5,6};

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]二维数组的初始化有以下几种形式:

①分行进行初始化;②不分行的初始化;③部分数组元素初始化;④省略第一维的定义,不省略第二维的定义。

选项B等号右边分了3行,大于等号左边数组的行数。

3.以下能正确定义数组并正确赋初值的选项是______。

∙A.intN=5,b[N][N];

∙B.inta[1][2]={{1},{3}};

∙C.intc[2][]={{1,2},{3,4}};

∙D.intd[3][2]={{1,2},{3,4}};

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]选项A中,数组的下标应为整型变量;选项B的行下标应为2;选项C的列下标不能省略。

4.以下能对二维数组a进行正确初始化的选项是______。

∙A.inta[2][]={{1,0,1},{5,2,3}};

∙B.inta[][3]={{1,2,3},{4,5,6}};

∙C.inta[2][4]={{1,2,3},{4,5},{6}};

∙D.inta[][3]={{1,0,1},{},{1,1}};

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题考查了对二维数组初始化的基本语法问题,读者需要清楚地了解初始化二维数组的基本格式。

5.已知int类型的变量占4个字节有下面的程序段:

main()

{inta[][3]={{1,2,3},{4,5},{6},(8}};

printf("%d",sizeof(9));

}

则程序段的输出结果是______。

∙A.12

∙B.24

∙C.48

∙D.64

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]程序通过赋初值的方式定义了4行3列的数组,则大小为12,而一个int变量占4个字节,所以程序输出48。

6.有以下程序:

main()

{

intm[][3]={1,4,7,2,5,8,3,6,9};

inti,j,k=2;

for(i=0;i<3;i++)

{printf("%d",m[k][i]);}

}

执行后输出的结果是______。

∙A.456

∙B.258

∙C.369

∙D.789

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题的功能是输出m[2][0],m[2][1]和m[2][2]。

7.已知字母A的ASCII码是65,则有下面的程序段:

#include<stdio.h>

main()

{charc[5]={65,66,67,68,69};

inti;

for(i=0;i<=4;i++)

printf("%c",c[i]);

}

则程序段的输出结果是______。

∙A.1234

∙B.0123

∙C.ABCD

∙D.65666768

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]ASCII码65、66、67、68、69分别对应的字母为A、B、C、D、E,初始化到字符数组C中,所以输出结果为ABCDE。

8.下面程序输出的结果是______。

#include<stdio.h>

main()

{charc[9]={'T','h','a','/0','k','','y','o','u'};

printf("%s",c);

}

∙A.Thankyou

∙B.Thank

∙C.Tha

∙D.无输出

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]C语言规定了一个字符串结束标识,以字符'/0'代表。

字符数组中a后面为'/0',字符串在此处结束,所以输出结果为Tha。

9.以下程序的输出结果是______。

charc[5]={'a','b','/0','c','/0'};

printf("%s",c);

∙A.a

∙B.b

∙C.ab

∙D.abc

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]由于字符数组c的元素c[2]中保存的是字符'/0'(串结束标识),因此将数组c作为字符串处理时,遇到字符'/0'输出就会结束。

10.下面程序输出的结果是______。

#include<stdio.h>

main()

{charw[][10]={"ABCD","EFGH","IJKL","MNOP"};

for(k=1;k<3;k++)printf("%s",&w[k][k]);

}

∙A.ABCDFGHKL

∙B.ABCEFGIJM

∙C.EFGJK0

∙D.FGHKL

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]当k=1时,引用的是w[1][1],值为字符串“FGH”;当k=2时,引用的是w[2][2],即字符串“KL”。

11.以下程序的输出结果是______。

main()

{chara[]="abcdefg",b[10]="abcdefg";

printf("%d%d/n",sizeof(a),sizeof(b));

}

∙A.77

∙B.88

∙C.810

∙D.1010

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]字符数组a共有8个元素,b有10个元素。

12.下面程序输出的结果是______。

#include<stdio.h>

#include<string.h>

main()

{charc[20]={'T','h','a','/0','k','u','y','o','u'};

printf("%d",strlen(c));

}

∙A.20

∙B.9

∙C.3

∙D.4

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]此函数计算出以字符数组为起始地址的字符串的长度,并作为函数值返回,这一长度不包括串尾的结束标识'/0'。

所以输出为字符串“Tha”的长度3。

13.s1和s2已正确定义并分别表示两个字符串。

若要求当s1所指字符串大于s2所指字符串时,执行语句S,则以下选项中正确的是______。

∙A.if(s1>s2)S;

∙B.if(strcmp(s1,s2))S;

∙C.if(strcmp(s2,s1)>0)S;

∙D.if(strcmp(s1,s2)>0)S;

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]比较两个字符串时不能直接将两个字符串名进行比较,而是使用字符串处理函数strcmp(s1,s2),当s1所指字符串大于s2所指字符串时,strcmp(s1,s2)>0,所以选D。

14.调用函数strlen("abcd/0ef/0g")的返回值为______。

∙A.4

∙B.5

∙C.8

∙D.9

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]注意字符串中的字符'/0',它在c的字符串中具有特殊的意义,字符'/0'标志字符串的结束。

计算串长时,只计算字符'/0'之前的字符数量,而不管'/0'之后是什么字符。

15.有以下程序:

#include<stdio.h>

#include<string.h>

main()

{chara[]={'a','b','c','d','e','f','g','h','/0'};

inti,j;

i=sizeof(a);j=strlen(a);

printf("%d,%d/n",i,j);

}

程序运行后的输出结果是______。

∙A.9,9

∙B.8,9

∙C.1,8

∙D.9,8

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

16.以下程序中函数reverse()的功能是将a所指数组中的内容进行逆置存放。

#include<stdio.h>

voidreverse(inta[],intn)

{inti,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

printf("%d/n",s);

}

则程序运行后的输出结果是______。

∙A.22

∙B.10

∙C.34

∙D.30

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

17.有以下程序:

main(intargc,char*argv[])

{intn,i=0;

while(argv[1][i]!

='/0')

{n=fun();i++;}

printf("%d/n",n*argc);

}

intfun()

{staticints=0;

s+=1;

returns;

}

假设程序经编译、连接后生成可执行文件exam.exe,若输入以下命令行exam123<回车>

则运行结果为______。

∙A.6

∙B.8

∙C.3

∙D.4

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

18.以下程序的输出结果是______。

#include<stdio,h>

#include<string,h>

main()

{charstr[12]={'s','t','r','i','n','g'};

printf("%d/n",strlen(str));}

∙A.6

∙B.7

∙C.11

∙D.12

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

19.若有说明:

inta[3][4];,则对数组a元素非法引用的是______。

∙A.a[0][2*1]

∙B.a[1][3]

∙C.a[4-2][0]

∙D.a[0][4]

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

20.若有说明:

inta[][4]={0,0};,则以下选项中,不正确的是______。

∙A.数组a的每个元素都可得到初值。

∙B.二维数组a的第一维大小为1

∙C.因为二维数组a中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加1,故数组a的行数为1

∙D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

21.以下程序中有错误的一行是______。

(1)main()

(2){

(3)inta[3]={1};

(4)inti;

(5)scanf("%d",&a);

(6)for(i=1;i<3;i++)a[0]=a[0]+a[i];

(7)printf("%f/n",a[0]);

(8)}

∙A.3

∙B.6

∙C.7

∙D.5

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

22.若有说明:

inta[][3]={1,2,3,4,5,6,7};,则a数组第一维的大小是______。

∙A.2

∙B.3

∙C.4

∙D.无确定值

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

23.若有数组定义:

chararray[]="China";,则数组array所占的空间为______。

∙A.4个字节

∙B.5个字节

∙C.6个字节

∙D.7个字节

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

24.以下程序的输出结果是______。

#include<stdio.h>

#include<string.h>

main()

{chararr[2][4];

strcpy(arr,"you");strcpy(arr[1],"me");

arr[0][3]='&';

printf("%s/n",arr);

}

∙A.you&me

∙B.you

∙C.me

∙D.err

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

25.有以下程序:

#include<stdio.h>

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i<k;i++)n[i]=n[i]+i;

printf("%d/n",n[k]);

}

该程序的输出结果是______。

∙A.不定值

∙B.2

∙C.1

∙D.0

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

26.以下程序的输出结果是______。

#include<stdio.h>

main()

{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;

for(i=1;i<3;i++)

for(j=0;j<i;j++)s+=a[i][j];

printf("%d/n",s);

}

∙A.14

∙B.19

∙C.20

∙D.21

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

27.当执行以下程序时,如果输入ABC,则输出结果是______。

#include<stdio.h>

#include<string.h>

main()

{charss[10]="1,2,3,4,5";

gets(ss);strcat(ss,"6789");printf("%s/n",ss);

}

∙A.ABC6789

∙B.ABC67

∙C.12345ABC6

∙D.ABCA56789

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

28.以下程序的输出结果是______。

#include<stdio.h>

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

main()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

printf("%d/n",x);

}

∙A.10

∙B.18

∙C.8

∙D.15

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

29.以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。

#include<stdio.h>

voidsort(inta[],intn)

{inti,j,t;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&aa[3],5);

for(i=0;i<10;i++)printf("%d,",aa[i]);

printf("/n");

}

程序运行后的输出结果是______。

∙A.1,2,3,4,5,6,7,8,9,10,

∙B.10,9,8,7,6,5,4,3,2,1,

∙C.1,2,3,8,7,6,5,4,9,10,

∙D.1,2,10,9,8,7,6,5,4,3,

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

30.对两个数组a和b进行以下初始化:

chara[]="ABCDEF";

charb[]={'A','B','C','D','E','F'};

则以下叙述正确的是______。

∙A.数组a与数组b完全相同

∙B.数组a与数组b长度相同

∙C.数组a与数组b中都存放字符串

∙D.数组a比数组b长度长

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

31.有以下程序段:

chara[3],b[]="China";

a=b;

printf("%s",a);

则______。

∙A.运行后将输出China

∙B.运行后将输出Ch

∙C.运行后将输出Chi

∙D.编译出错

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

32.判断字符串s1是否大于字符串s2,应当使用______。

∙A.if(s1>s2)

∙B.if(strcmp(s1,s2))

∙C.if(strcmp(s2,s1)>0)

∙D.if(strcmp(s1,s2)>0)

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

33.以下程序的输出结果是______。

#include<stdio.h>

main()

{charch[7]={"12ab56"};

inti,s=0;

for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)

s=10*s+ch[i]-'0';

printf("%d/n",s);

}

∙A.1

∙B.1256

∙C.12ab56

∙D.1

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

34.当运行以下程序时,从键盘输入:

AhaMA[空格]Aha<回车>,则程序的输出结果是______。

#include<stdio.h>

main()

{chars[80],c='a';

inti=0;

scanf("%s",s);

while(s[i]!

='/0')

{if(s[i]==c)s[i]=s[i]-32;

elseif(s[i]==c-32)s[i]==s[i]+32;

i++;

}

puts(s);

}

∙A.ahAMa

∙B.AbAMa

∙C.AhAMa[空格]ahA

∙D.ahAMa[空格]ahA

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

二、{{B}}操作题{{/B}}(总题数:

15,分数:

40.00)

35.以下程序的功能是:

从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。

试题程序

#include<stdio.h>

main()

{floatx,amax,amin;

scanf("%f",&x);

amax=x;amin=x;

while(______)

{if(x>amax)amax=x;

if(______)amin=x;

scanf("%f",&x);

}

printf("/namax=%f/namin=%f/n",amax,amin);

}

(分数:

5.00)

填空项1:

__________________ (正确答案:

x>=0x<amin)

解析:

[解析]阅读以上程序可知,最高成绩放在变量amax中,最低成绩放在amin中。

while循环用于不断读入数据放入x中,并通过判断把大于amax的数放入amax中,把小于amin的数放入amin中。

因此在第二个横线处应填入x<amin。

while后的表达式用以控制读入的成绩是否为负数,若是负数,读入结束并且退出循环,因此在第一个横线处应填入x>=0,即当读入的值大于等于0时,循环继续,小于0时循环结束。

36.下列给定程序中函数fun的功能是:

计算正整数num各位上的数字之积。

例如,若输入252,则输出应该是20。

若输入202,则输出应该是0。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序

#include<stdio.h>

#include<conio.h>

longfunlongnum)

{/*****found*****/

longk;

do

{k*=num%10;

/*****found*****/

num/=10;

}while(num);

return(k);

}

main()

{longn;

printf("pleaseenteranumber:

");

scanf("%ld",&n);

printf("/n%ld/n",fun(n)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1