国家二级C语言机试(函数和数组)模拟试卷19
选择题
1.有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数)
#include
#include
main()
{char a[10]=\\(B)
A. bc2yz
B. a2yz
C. a12xyz
D. 12yz
解析:程序执行“strcpy(a+1,b+2)”后,字符数组a的值为“a2”,再进行字符串的连接“strcatq(a,c+1)”,此时字符数组a的值为“a2yz”。
2.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是
A
解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)。在选项A中,调用的子函数在调用后面定义,所以不正确。在选项B、C)中,被调用函数在主函数之前定义,再在主函数中调用,所以是正确的;在选项D中,在主函数中先对子函数float fun(int i,int j)进行了声明,然后进行调用。
3.以下叙述中正确的是(D)
A. 用户自己定义的函数只能调用库函数
B. 不同函数的形式参数不能使用相同名称的标识符
C. 在C语言的函数内部,可以定义局部嵌套函数
D. 实用的C语言源程序总是由一个或多个函数组成
解析:一个C语言源程序可以由一个或多个源文件组成,每个源文件可由一个或多个函数组成,这些函数可以是自定义函数,也可以是库函数,各个函数之间没有主从关系,不能嵌套定义函数。
4.若有定义语句: char s[10]=\\(B)
A. 8
B. 7
C. 9
D. 10
解析:字符串长度函数str1en(、s)表示计算出以s为起始地址的字符串的长度。并作为函数值返回。这个长度值不包括串尾的结束标志’\0’。
5.有以下程序
#include
main()
{char p[20]={’a’,’b’,’c’,’d’},q[]=\\(C)
A. 9
B. 11
C. 6
D. 7
解析:字符串连接函数strcat(p,r)的功能是把字符数组p[]和r[]连接起来,此时字符数组p[]的有效字符长度为9,再执行strcpy(p+str1en(q),q)字符串复制函数,把字符数组q[]复制到字符数组p[]从p[3]开始到p[5]数组位置中,由于字符数组q[]中的内容为字符串“abc”复制时把字符串结束标志’\null’也复制到字符数组p[]中,这时字符函数str1en(p)返回字符数组p[]的有效字符长度为6。
6.若有定义语句: char*s1=\\(A)
A. if(strcmp(s1,s2)!=0)puts(s1);
B. if(strcmp(s1,s2)!=0)puts(s2);
C. if(strcmp(s1,s2)==1)puts(s1);
D. if(strcmp(s1,s2)==0)puts(s1);
解析:字符串比较函数strcmp的功能是对s1和s2所指字符串进行比较。如果s1s2,返回正数,所以对于本题来说,能够输出“OK”的语句是选项A所指的语句。
7.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母
#include
#include
void fun(char*p)
{int i=0;
while(p[i])
{if(p[i]==’’&&islower(p[i-1]))p[i一1]=p[i-1]-’a’+’A’;
i++;
}}
main()
{char s1[100]=\\(D)
A. Ab Cd EFg!
B. ab cd EFG!
C. ab cd EFg!
D. aB cD EFG!
解析:函数fun(char.p)的功能是如果p[i]指向的字符为空字符并且其前一个字符是小写字母,则把小与字母变成大字母,所以在主函数中,执行fun(s1)后,小写字母b,d都改成大字母。
8.若有以下定义和语句
char s1[10]=\\(C)
A. 10 5
B. 10 7
C. 5 5
D. 5 8
解析:本题要注意的是转义字符的问题,在字符串s2中,有两个转义字符,分别是回车换行符和反斜线。所以其字符串长度等于5。
9.有以下程序
#include
int fun(int a,int b) main()
{ if(b==0)return a; {printf(\\(B)
A. 1
B. 2
C. 3
D. 4
解析:由程序可知函数fun(int a,int b)是一个递归函数。所以当主函数中调用fun(4,2)时,其执行过程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值为2。
10.下列选项中,能够满足“只要字符串s1等于字符串s2,则执行ST”要求的是(C)
A. if(s1==s2)ST;
B. if(strcpy(s1,s2)==1)ST;
C. iffstrcmp(s2,s1)==0)ST;
D. if(s1-s2==0)ST;
解析:在C语言中要对两个字符串的大小进行比较,就需要调用字符串比较函数strcmp(),如果这个函数的返回值等于0,说明两个字符串相等。
11.若有以下说明和定义
union dt
{int a;char b;double c;} data;
以下叙述中错误的是(C)
A. data的每个成员起始地址都相同
B. 变量data所占内存字节数与成员C所占字节数相等
C. 程序段:data.a=5;printf(\\
D. data可以作为函数的实参
解析:本题主要考查联合的定义和使用。选项A联合中每个成员起始地址都是一样的,正确;选项B联合的长度等于长度最长成员的长度,在data中,成员c是double类型,长度为8个字节最长,因此data所占用字节数和成员c长度一致。选项C整型和double类型的存储格式不一致,整数5在内存中的存储格式和浮点数5存储格式不一样,因此data.c输出不会是5.000000;选项D联合和结构体都可以作为函数实参。
12.以下关于函数的叙述中正确的是(B)
A. 每个函数都可以被其他函数调用(包括main函数)
B. 每个函数都可以被单独编译
C. 每个函数都可以单独运行
D. 在一个函数内部可以定义另一个函数
解析:本题主要考查函数的定义和使用。选项A错误,main函数可以调用其他函数,但是其他函数不能调用main函数;选项B正确;选项C错误,只有main函数可以单独运行,其他函数只能被调用;选项D错误,C语言中不能在函数内部定义函数。
13.在C语言中,函数返回值的类型最终取决于(A)
本文档预览:3600字符,共8554字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载