二级C语言笔试考点相关真题(答案解析版)(8)

2019-01-07 19:32

main()

{ char x[]=\

x[0]=0;x[1]='\\0';x[2]='0';

printf(\%d\\n\,sizeof(x),strlen(x)); }

程序运行后的输出结果是

A)6 1 B)7 0 C)6 3 D)7 1 参考答案:B

【解析】sizeof是返回字符串在内存中所占用的空间,是真正的长度。strlen是返回字符串的长度,strlen遇到'\0'就结束,而且不包括'\0'。

119【2010年9月选择题第31题】下列选项中,能够满足\若字符串s1等于字符串s2,则执行ST\要求的是

A)if(strcmp(s2,s1)==0) ST; B)if(sl==s2)ST; C)if(strcpy(s1,s2)==1) ST; D)if(sl-s2==0)ST; 参考答案:A

【解析】函数strcmp(s2,s1)的作用是比较大小,函数strcpy(s1,s2)的作用是进行字符串复制,所以选择A)选项。B)和D)都是比较的字符串s1与s2的地址是否一致而不是比较字符串内容是否一致。

120【2010年9月选择题第32题】以下不能将s所指字符串正确复制到t所指存储空间的是 A)while(*t=*s){t++;s++;} B)for(i=0;t[i]=s[i];i++); C)do{*t++=*s++;}while(*s); D)for(i=0,j=0;t[i++]=s[j++];); 参考答案:C 【解析】C)选项中,当复制完s所指字符串的最后一个非'\0'字符后,指针s指向了'\0',循环结束,没有将字符串结束符0复制到t中,因此C)选项是错误的。

121【2010年9月选择题第33题】有以下程序(strcat函数用以连接两个字符串) #include #include main()

{ char a[20]=\,b[]=\ strcat(a,b);printf(\,a); }

程序运行后的输出结果是

A)ABCDE\\0FG\\0IJK B)ABCDIJK C)IJK D)EFGIJK 参考答案:B

【解析】char *strcat(char *dest,char *src)的功能是:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。因为'\0'是字符串的结束标志,所以a数组中存放的字符串为\ABCD\,所以将两个字符串拼接后结果为\ABCDIJK\。 122【2010年3月填空题第12题】有以下程序 #include #include void fun(char *str)

36

{ char temp;int n,i; n=strlen(str); temp=str[n-1];

for(i=n-1;i>0;i--)str[i]=str[i-1]; str[0]=temp; }

main()

{ char s[50];

scanf(\程序运行后输入:abcdef<回车>,则输出结果是【12】。 参考答案:fabcde

【解析】在函数fun中,先求出字符串str的长度,并将最后一个字符暂存到temp中,然后使用循环语句将所有字符向右移动一个位置,最后将temp中的字符放到字符串的第1个位置,所以结果为fabcde。

123【2010年3月填空题第14题】以下程序用以删除字符串中所有的空格,请填空。 #include main()

{ char s[100]={\ for(i=j=0;s[i]!='\\0';i++) if(s[i]!=' '){s[j]=s[i];j++;} s[j]=【14】;

printf(\}

参考答案:'\\0'

【解析】程序使用变量i遍历字符数组s中的所有字符,使用变量j存放非空格字符。当将所有的非空格字符重新存放到字符数组s中后,应添加字符串结束标志'\\0'。 124【2009年9月选择题第20题】有以下程序: #include main()

{ char s[]={\;int i,n=0; for(i=0;s[i]!=0;i++)

if (s[i]>='a'&&s[i]<='z') n++; printf(\,n); }

程序运行后的输出结果是________。 A)0 B)2 C)3 D)5 参考答案:B

【解析】 在字符串数组s[i]中,只有当下标i=3和i=4时,才满足if条件,所以n的值从0增加两次,结果为2。

125【2009年9月选择题第30题】有以下程序: #include #include main()

37

{ char a[10]=\;

printf(\,%d\\n\,strlen(a),sizeof(a)); }

程序运行后的输出结果是________。 A)7,4 B)4,10 C)8,8 D)10,10 参考答案:B

【解析】 strlen()用来返回字符串的长度,而sizeof()返回的是一个对象或者类型所占的内存字节数,即数组所占的内存。 126【2009年9月选择题第31题】下面是有关C语言字符数组的描述,其中错误的是________。 A)不可以用赋值语句给字符数组名赋字符串 B)可以用输入语句把字符串整体输入给字符数组 C)字符数组中的内容不一定是字符串 D)字符数组只能存放字符串 参考答案:D

【解析】 字符数组中的内容既可以是字符,也可以是字符串,选项D)说法不正确。 127【2009年9月填空题第13题】有以下程序: #include main()

{ char a[20]=\?\,b[20];

scanf(\,b);printf(\,a,b); }

程序运行时从键盘输入:How are you?<回车> 则输出结果为__【13】__。 参考答案:How are you? How

【解析】用%s格式输入字符串时,空格和回车都作为输入数据的分隔符,不能被读入,因此数组b的输出结果为How。

128【2009年3月选择题第30题】设有定义:char s[81];int i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是________。 A)gets(s);

B)while((s[i++]=getchar())!=‘\\n’);s[i]==‘\\0’ C)scanf(\,s);

D)do{scanf(\,&s[i]);}while(s[i++]!=‘\\n’);s[i]=‘\\0’; 参考答案:C

【解析】 在scanf格式控制字符串中,如果两个相邻的数据格式相同则需要用空格、逗号或其他制表符隔开,因此若输入字符中存在空格,scanf将把这个字符串认为是两个或多个字符串,因此不能够正确读入带有空格的字符串,本题答案为C)。

38

第7章 函数

7.1 函数概述

129【2010年9月选择题第11题】以下关于结构化程序设计的叙述中正确的是 A)一个结构化程序必须同时由顺序、分支、循环三种结构组成 B)结构化程序使用goto语句会很便捷

C)在C语言中,程序的模块化是利用函数实现的

D)由三种基本结构构成的程序只能解决小规模的问题 参考答案:C

【解析】一个结构化程序可以由顺序、分支、循环三种结构组成,但不是必须同时都包括,可以包括其中的一个或多个,所以选项A)错误。goto语句会破坏程序的结构性、可读性,不得以不要用,所以选项B)错误。三种基本结构构成的程序也可以解决大规模的程序,所以选项D)错误。在C语言中,利用函数来实现程序的模块化,C)正确。

130【2010年3月选择题第11题】以下叙述正确的是 A)C语言程序是由过程和函数组成的

B)C语言函数可以嵌套调用,例如:fun(fun(x)) C)C语言函数不可以单独编译

D)C语言中除了main函数,其他函数不可作为单独文件形式存在 参考答案:B

【解析】C语言中只有函数没有过程,故选项A错误;C语言可以嵌套调用,故选项B正确;C语言函数可以单独编译成.dll文件,故选项C错误;C语言中除main函数以外,其他函数可作为单独文件形式存在,故选项D也错误。

7.2 库函数概述 7.3 函数定义的一般形式 7.4 函数参数和函数返回值

131【2011年9月选择题第24题】有以下程序

#include double f(double x); main()

{ double a=0; int i;

for(i=0;i<30;i+=10) a+=f((double)i); printf(\,a); }

double f(double x) { return x*x+1;}

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

A)503 B)401 C)500 D)1404

39

参考答案:A

【解析】考查函数的基础知识,当i分别为0、10、20时a分别为1,102,503,所以结果为503,选项A)正确。

132【2011年3月填空题第9题】有以下函数 void prt(char ch,int n) { int i;

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

printf(i%6!=0 ? \}

执行调用语句prt('*',24);后,函数共输出了 【9】 行*号。 参考答案:4

【解析】本题中输出*并换行的条件是i能被6整除,否则输出*不换行。因此只有在i为6、12、18和24时*的输出才会换行,最终输出4行*。

133【2010年9月填空题第10题】以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。请填空。(设N已定义) int fun(int x[N]) { int i,k=0;

for(i=0;i

if(x[i]

参考答案:I

【解析】通过函数中语句 return x[k]; 可知x[k]表示的是该一维数组中最小的值,所以当x[i]小于x[k]所代表的数值后应将i变量赋给k变量,使得x[k]表示当前值较小的那个数据。

134【2010年9月填空题第12题】以下fun函数的功能是在N行M列的整型二维数组中,选出一个最大值作为函数值返回,请填空。(设M,N已定义) int fun(int a[N][M])

{ int i,j,row=0,col=0; for(i=0; i

if(a[i][j]>a[row][co1]){row=i;col=j;} return( 【12】 ); }

参考答案:a[row][col]

【解析】通过程序可以看出,外循环是行,内循环是列。先在行不变的情况下找一行内最大的数据进行记录。通过语句 if(a[i][j]>a[row][col]) { row=i; col=j;}可知,如果变量a[i][j]大于a[row][col],将i赋给了row,将j赋给了col,所以a[row][col]是记录当前最大值的变量。

135【2010年3月选择题第24题】以下关于return语句的叙述中正确的是

40


二级C语言笔试考点相关真题(答案解析版)(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:心智游移

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: