1、二级 C 语言分类模拟题 541 及答案解析(总分:60.00,做题时间:90 分钟)一、选择题(总题数:40,分数:60.00)1.在 printf 的格式字符中,e 格式字符的作用是_。(分数:2.00)A.以十六进制无符号形式输出整数B.以带符号的十进制形式输出整数C.以指数形式输出实数D.以字符形式输出,且只输出一个字符2.数据结构中,与所使用的计算机无关的是数据的_。(分数:2.50)A.存储结构B.物理结构C.逻辑结构D.线性结构3.有两个关系 R,S 如下: R A B C a 3 2 b 0 1 c 2 1 S A B a 3 b 0 c 2 由关系 R 通过运算得到关系 S,
2、则所使用的运算为_。(分数:1.00)A.选择B.投影C.插入D.连接4.以下不能正确定义二维数组的选项是_。(分数:2.00)A.int a22=1,2);B.int a2=1,2,3,4;C.int a22=1,2,3;D.int a2=1,2),3,4;5.有以下程序: #inelude stdio.h #include string.h typedef struct Stu char name10; char gender; int score; STU; void f(char * name, char * gender, int * score) strcpy(name, “Qia
3、n“); * gender=“f“; * score = 350; main( ) STU a = “Zhao“,“m“,290, b; b = a; f(b.name, printf(“%s,%c,%d,“, a.name,a.gender,a,score); printf(“%s,%c,%d/n“, b.name,b.gender,b.score); 程序运行后的输出结果是_。(分数:1.00)A.Zhao,m,290,Qian,f,350B.Qian,in,290,Zhao,m,290C.Zhao,m,290,Zhao,m,290D.Zhao,m,290,Qian,m,2906.有如下程
4、序: #include stdio.h void convert(char ch) if(eh“X“) convert(ch+1); printf(“%c“, ch); main( ) convert(“W“); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.YZB.VWC.XYD.XW7.有以下程序: #includestdio.h int sum(int*array,int len) if(len=1) return array1; else return array1+sum(array+1,len-1); main() int array5=0,9,1,2
5、,res; res=sum(array,3); printf(“%d/n“,res); 程序运行后的输出结果是_。(分数:1.00)A.27B.11C.8D.128.以下对联合类型叙述正确的是_。(分数:2.00)A.可以对联合变量名直接赋值B.使用联合变量的目的是为了节省内存C.任何一个联合变量可以同时引用联合中的不同成员D.联合类型定义中不能同时出现结构类型的成员9.若定义:int a=511, *b=,则 printf(“%d/n“, *b);的输出结果为_。(分数:0.50)A.无确定值B.a 的地址C.512D.51110.以下程序段的执行结果为_。 #define PLUS(X,Y
6、)X+Y main() int x=1,y=2,z=3,sum; sum=PLUS(x+y,z)*PLUS(y,z); printf(“SUM=%d“,sum); (分数:1.00)A.SUM=9B.SUM=12C.SUM=18D.SUM=2811.以下程序的输出结果是_。 #includestdio.h main() int a=4,b=3,c=2,d=1; printf(“%d“,ab?a:dc?d:b);(分数:2.00)A.1B.3C.2D.412.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定这属于算法的_。(分数:2.00)A.正当性B.可行性C.确定性D.有穷性13.设
7、有某函数的说明为: int*func(int a10,int n); 则下列叙述中,正确的是_。(分数:1.00)A.形参 a 对应的实参只能是数组名B.说明中的 a10写成 a或*a 效果完全一样C.func 的函数体中不能对 a 进行移动指针(如 a+)的操作D.只有指向 10 个整数内存单元的指针,才能作为实参传给 a14.对长度为 n 的线性表作快速排序,在最坏情况下,比较次数为_。(分数:1.00)AnB.n-1C.n(n-1)D.n(n-1)/215.在执行完下面的 C 语句段之后,则 B 的值是_。 char a=“A“; intb; B=(34if(5)y=1;B.int x=
8、5,y=0;if(x)y=1;C.int x=10,y=0;if(x=y)y=1;D.int x=5,y=10;if(x=y)y=1;17.以下程序的输出结果是_。 main() char a=“programming“,b=“language“; char *p1,*p2; int i; p1=a;p2=b; for(i=0;i7;i+) if(*(p1+i)=*(p2+i)printf(“%c“,*(p1+i); (分数:2.00)A.gmB.rgC.orD.ga18.有以下程序: #include stdio.h #define SUB(X,Y) (X+1)*Y main( ) int
9、a=3,b=4; printf(“%d/n“,SUB(a+ +,b+ +); 程序运行后的输出结果是_。(分数:5.00)A.25B.20C.12D.1619.关于程序设计基本概念,以下叙述错误的是_。(分数:1.00)A.计算机可以直接执行由任意高级语言编写的程序B.高级语言都有与之对应的编译程序或解释程序C.用任何一种计算机高级语言都可以把算法转换为程序D.结构化算法可以解决任何复杂的问题20.以下叙述中正确的是( )。(分数:1.00)A.预处理命令行必须位于 C 源程序的起始位置B.在 C 语言巾,预处理命令行都以“#“开头C.每个 C 程序必须在开头包含预处理命令行;#include
10、 stdio.hD.C 语言的预处理不能实现宏定义和条件编译的功能21.有如下程序: #include stdio.h main() int i,*ptr; int array5 = 5,3,1; for(ptr=array, i=0; i5; i+, ptr+) if (*ptr = 0) putchar(“X“); else putchar(“A“+*ptr); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.FDBXXB.FFFXXC.FDBBBD.ABCDE22.若有定义语句:int(*p)M;其中的标识符 p 是(分数:1.00)A.M 个指向整型变量的指
11、针B.指向 M 个整型变量的函数指针C.一个行指针,它指向具有 M 个整型元素的一维数组D.具有 M 个指针元素的一维指针数组,每个元素都只能指向整型量23.有以下程序: #include studio. h #define F(X, Y) (X)*(Y) main ( ) int a=3, b=4; printf(“%d/n“, F(a+, b+); (分数:1.00)A.12B.15C.16D.2024.设有以下程序段: struct person float weight; char sex; char name10; rec, *ptr; ptr= 从键盘读入字符串给结构体变量 rec
12、 的 name 成员,错误的输入语句是_。(分数:1.00)A.scanf(“%s“,rec-name);B.scanf(“%s“,rec.name);C.scanf(“%s“,(*ptr).name);D.scanf(“%s“,ptr-name);25.以下叙述中错误的是_。(分数:1.00)A.C 语言编写的函数源程序,其文件名后缀可以是 CB.C 语言编写的函数都可以作为一个独立的源程序文件C.C 语言编写的每个函数都可以进行独立的编译并执行D.一个 C 语言程序只能有一个主函数26.字符串“/“ABCDEF“/“的长度是 _ 。(分数:1.00)A.15B.10C.7D.827.有以下
13、程序: #includestdio.h int fun() static int x=1; x+=1; return X; main() it i,s=1; for(i=1;i=5;i+) s+=fun(); printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:1.00)A.120B.11C.6D.2128.C 语言程序的执行是_。(分数:2.00)A.从程序的主函数开始,到程序的主函数结束B.从程序的主函数开始,到程序的最后一个函数结束C.从程序的第一个函数开始,到程序的最后一个函数结束D.从程序的第一个函数开始,到程序的主函数结束29.以下选项中,能够正确利用随机函数 r
14、and(),产生一个英文字母的表达式是_。(分数:1.00)A.rand()%2=0?rand()%“A“:rand()%“a“B.rand()%26+“A“|rand()%26+“a“C.rand()%26+“A“C.int num=1,2,3,4,5,6;D.int num4=1,2,3,4,5,6;31.下面程序的运行结果是_。 #includestdio.h #includestring.h main() char*s1=“abDuj“; char*s2=“ABdUG“; int t; t=strcmp(s1,s2); printf(“%d“,t); (分数:2.00)A.正数B.负数
15、C零D.不确定的值32.若 fp 已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为(分数:1.00)A.0B.1C.-1D.一个非 0 值33.设 x=011050,则 x=x01252 的值是_。(分数:1.00)A.0000001000101000B.1111110100011001C.0000001011100010D.110000000010100034.函数调用 strcat(strcpy(str1, str2), str3)的功能是_。(分数:2.50)A.将字符串 str1 复制到字符串 str2 中后再连接到字符串 str3 之后B.将字符串 st
16、r1 连接到字符串 str2 之后再复制到字符串 str3 之后C.将字符串 str2 复制到字符串 str1 之后再将字符串 str3 连接到字符串 str1 之后D.将字符串 str2 连接到字符串 str1 之后再将字符串 str1 复制到字符串 str3 中35.有三个关系 R,S 和 T 如下: R A B C a 1 2 b 2 1 c 3 1 S A B C d 3 2 T A B C a 1 2 b 2 1 c 3 1 d 3 2 其中关系 T 由关系 R 和 S 通过某种操作得到,该操作为_。(分数:2.00)A.选择B.投影C交D并36.下面说明不正确的是(分数:2.00)
17、A.char a10=“china“;B.char a10,*p=a;p=“china“C.char *a;a=“china“;D.char a10,*p;p=a=“china“37.若变量已正确定义,有以下程序段 i=0; do printf(“%d,“,i); while(i+); printf(“%d/n“,i); 其输出结果是_。(分数:1.00)A.0,1B.0,0C.1,1D.程序进入无限循环38.有以下程序 #includestdio.h main() unsigned char a=8,c; c=a3; printf(“%d/n“,c); 程序运行后的输出结果是_。(分数:1.
18、00)A.1B.16C.32D.039.将 E-R 图转换到关系模式时,实体与联系都可以表示成( )。(分数:1.00)A.属性B.关系C键D域40.以下不能正确定义二维数组的选项是_。(分数:2.50)A.int a22=1,2;B.int a2=1,2,3,4;C.int a22=1,2,3;D.int a2=1,2,3,4;二级 C 语言分类模拟题 541 答案解析(总分:60.00,做题时间:90 分钟)一、选择题(总题数:40,分数:60.00)1.在 printf 的格式字符中,e 格式字符的作用是_。(分数:2.00)A.以十六进制无符号形式输出整数B.以带符号的十进制形式输出整
19、数C.以指数形式输出实数 D.以字符形式输出,且只输出一个字符解析:2.数据结构中,与所使用的计算机无关的是数据的_。(分数:2.50)A.存储结构B.物理结构C.逻辑结构 D.线性结构解析:解析 数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。3.有两个关系 R,S 如下: R A B C a 3 2 b 0 1 c 2 1 S A B a 3 b 0 c 2 由关系 R 通过运算得到关系 S,则所使用的运算为_。(分数:1.00)A.选择B.投影 C.插入D.连接解析:解析 投影运算是从关系模式中挑选若干属性组成新的关系,这是从列的角度进行的运算,相当于对关系进行垂直分解
20、。本题中,S 是在原有关系 R 的内部进行的,是由 R 中原有的那些域的列所组成的关系,因此选择 B。4.以下不能正确定义二维数组的选项是_。(分数:2.00)A.int a22=1,2);B.int a2=1,2,3,4;C.int a22=1,2,3; D.int a2=1,2),3,4;解析:5.有以下程序: #inelude stdio.h #include string.h typedef struct Stu char name10; char gender; int score; STU; void f(char * name, char * gender, int * scor
21、e) strcpy(name, “Qian“); * gender=“f“; * score = 350; main( ) STU a = “Zhao“,“m“,290, b; b = a; f(b.name, printf(“%s,%c,%d,“, a.name,a.gender,a,score); printf(“%s,%c,%d/n“, b.name,b.gender,b.score); 程序运行后的输出结果是_。(分数:1.00)A.Zhao,m,290,Qian,f,350 B.Qian,in,290,Zhao,m,290C.Zhao,m,290,Zhao,m,290D.Zhao,m
22、,290,Qian,m,290解析:解析 main 函数中,首先定义两个结构体 stu 类型的变量 a,b,把 a 成员信息复制给 b 成员后,再调用函数 f(),在 f()函数中,利用指针重新对 b 成员信息进行赋值,分别输出 a,b,成员信息,答案为 A 选项。6.有如下程序: #include stdio.h void convert(char ch) if(eh“X“) convert(ch+1); printf(“%c“, ch); main( ) convert(“W“); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.YZB.VWC.XYD.XW 解
23、析:解析 在 main 函数中,执行 convert(“W“)函数,因为W比X小,满足 if 语句,再执行convert(ch+1);此时 ch=“X“,不满足条件,输出 X,完成后,返回上一次 convert 中,输出上次ch=“W“,因此答案为 D 选项。7.有以下程序: #includestdio.h int sum(int*array,int len) if(len=1) return array1; else return array1+sum(array+1,len-1); main() int array5=0,9,1,2,res; res=sum(array,3); print
24、f(“%d/n“,res); 程序运行后的输出结果是_。(分数:1.00)A.27B.11C.8D.12 解析:解析 main()函数先定义一个数组 array,调用 sum(array,3)函数,此时函数形参 array 指向数组首地址,形参 len 的值为 3,在 sum 函数中,array1指向数组中的元素 9,sum 函数调用 3 次,完成的功能是将数组 array1+array2+array3累加后返还给输出,累加后的值为 12。因此,答案为 D 选项。8.以下对联合类型叙述正确的是_。(分数:2.00)A.可以对联合变量名直接赋值B.使用联合变量的目的是为了节省内存 C.任何一个联
25、合变量可以同时引用联合中的不同成员D.联合类型定义中不能同时出现结构类型的成员解析:9.若定义:int a=511, *b=,则 printf(“%d/n“, *b);的输出结果为_。(分数:0.50)A.无确定值B.a 的地址C.512D.511 解析:10.以下程序段的执行结果为_。 #define PLUS(X,Y)X+Y main() int x=1,y=2,z=3,sum; sum=PLUS(x+y,z)*PLUS(y,z); printf(“SUM=%d“,sum); (分数:1.00)A.SUM=9B.SUM=12 C.SUM=18D.SUM=28解析:解析 表达式 sum=PL
26、US(x+y,z)*PLUS(y,z)用带参的宏替换为 sum=x+y+z*y+z,sum 的值为12。11.以下程序的输出结果是_。 #includestdio.h main() int a=4,b=3,c=2,d=1; printf(“%d“,ab?a:dc?d:b);(分数:2.00)A.1 B.3C.2D.4解析:12.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定这属于算法的_。(分数:2.00)A.正当性B.可行性C.确定性 D.有穷性解析:解析 算法具有 5 个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。13.设有某函数的说明为: int*func
27、(int a10,int n); 则下列叙述中,正确的是_。(分数:1.00)A.形参 a 对应的实参只能是数组名B.说明中的 a10写成 a或*a 效果完全一样 C.func 的函数体中不能对 a 进行移动指针(如 a+)的操作D.只有指向 10 个整数内存单元的指针,才能作为实参传给 a解析:解析 本题重点考查返回指针值的函数的相关知识。返回指针值的函数,一般定义形式为:类型名*函数名(参数列表)。fune 函数被定义为指针型函数,它的一个形参为整型数组 a,形参 a 对应的实参可以是数组名和指针,A、D 错误。实参传递给形参 a 的是地址值,实参和形参指向同一段内存单元,在fune 函数
28、体内对形参 a 进行移动指针操作,可以改变实参的值,C 错误。14.对长度为 n 的线性表作快速排序,在最坏情况下,比较次数为_。(分数:1.00)AnB.n-1C.n(n-1)D.n(n-1)/2 解析:解析 快速排序最坏情况就是每次选的基准数都和其他数做过比较,共需比较(n-1)+(n-2)+1=n(n-1)/2,故选 D。15.在执行完下面的 C 语句段之后,则 B 的值是_。 char a=“A“; intb; B=(34if(5)y=1;B.int x=5,y=0;if(x)y=1;C.int x=10,y=0;if(x=y)y=1; D.int x=5,y=10;if(x=y)y=
29、1;解析:解析 选项 A 的 if 条件表达式 5 的值为真,执行 y=1,y 的值为 1;选项 B 的 if 条件表达式 x 的值为 5,也是真,执行 y=1,y 的值为 1;选项 C 的 if 条件表达式 x=y 是赋值语句,将 y 的值 0 赋给 x,表达式的值为 0,if 语句不执行,y 值为 0;选项 D 的 if 条件表达式 x=y 是赋值语句,将 y 的值 10 赋给x,表达式的值为 10,执行 y=1,y 的值为 1。故本题答案为 C 选项。17.以下程序的输出结果是_。 main() char a=“programming“,b=“language“; char *p1,*p
30、2; int i; p1=a;p2=b; for(i=0;i7;i+) if(*(p1+i)=*(p2+i)printf(“%c“,*(p1+i); (分数:2.00)A.gmB.rgC.orD.ga 解析:18.有以下程序: #include stdio.h #define SUB(X,Y) (X+1)*Y main( ) int a=3,b=4; printf(“%d/n“,SUB(a+ +,b+ +); 程序运行后的输出结果是_。(分数:5.00)A.25B.20C.12D.16 解析:解析 本题考查宏定义。宏定义只是做简单的替换,+运算符是先使用后自增 1,所以语句SUB(a+,b+)
31、=(a+ +1)*b+(a+1)*b+=(3+1)*4=16,选项 D 正确。19.关于程序设计基本概念,以下叙述错误的是_。(分数:1.00)A.计算机可以直接执行由任意高级语言编写的程序 B.高级语言都有与之对应的编译程序或解释程序C.用任何一种计算机高级语言都可以把算法转换为程序D.结构化算法可以解决任何复杂的问题解析:解析 计算机只能识别机器语言,不能直接识别由高级语言编写的程序,故答案为 A 选项。20.以下叙述中正确的是( )。(分数:1.00)A.预处理命令行必须位于 C 源程序的起始位置B.在 C 语言巾,预处理命令行都以“#“开头 C.每个 C 程序必须在开头包含预处理命令行
32、;#include stdio.hD.C 语言的预处理不能实现宏定义和条件编译的功能解析:解析 预处理命令行可以出现在 C 源程序的任何位置,故选项 A 不正确。#includestdio.h预处理命令行的意思是将 stdioh 头文件插入源程序中该行命令所在的位置,表示我们将在后续行中用到stdioh 头文件中定义的函数或类型,若程序中没有用到这些函数或类型就可以不用包含此头文件,故选项 C 不正确。C 提供的预处理功能主要有:宏定义、文件包含和条件编译三种功能,故选项 D 不正确。在 C 语言中,预处理命令行都以”#”开头,故应该选择 B。21.有如下程序: #include stdio.
33、h main() int i,*ptr; int array5 = 5,3,1; for(ptr=array, i=0; i5; i+, ptr+) if (*ptr = 0) putchar(“X“); else putchar(“A“+*ptr); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.FDBXX B.FFFXXC.FDBBBD.ABCDE解析:解析 在对数组进行初始化时,如果对数组的全部元素赋以初值,定义时可以不指定数组长度,如果被定义数组的长度与初值个数不同,则数组长度不能省略;如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前
34、面的几个数组元素赋予初值,那么 C 语言将自动对余下的元素赋初值,则 array=5,3,1,0,0。程序执行过程为:执行 for 循环,将数组首地址赋给指针 ptr,依次遍历每一个元素,如果数组元素为 0 则输出X,如果不为 0 则按照字母表输出字符A后第 arrayi个字符。程序运行后的输出结果为:FDBXX,故 A 选项正确。22.若有定义语句:int(*p)M;其中的标识符 p 是(分数:1.00)A.M 个指向整型变量的指针B.指向 M 个整型变量的函数指针C.一个行指针,它指向具有 M 个整型元素的一维数组 D.具有 M 个指针元素的一维指针数组,每个元素都只能指向整型量解析:23
35、.有以下程序: #include studio. h #define F(X, Y) (X)*(Y) main ( ) int a=3, b=4; printf(“%d/n“, F(a+, b+); (分数:1.00)A.12 B.15C.16D.20解析:解析 本题考核的知识点是宏与自增运算符的综合运用在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a+)*(b+),而 a+的值为 3,b+的值为 4。因此最后的值为 3*4=12。所以,4 个选项中选项 A 符合题意。24.设有以下程序段: struct person float weight; char sex; char name
36、10; rec, *ptr; ptr= 从键盘读入字符串给结构体变量 rec 的 name 成员,错误的输入语句是_。(分数:1.00)A.scanf(“%s“,rec-name); B.scanf(“%s“,rec.name);C.scanf(“%s“,(*ptr).name);D.scanf(“%s“,ptr-name);解析:解析 题中声明了个结构类型 person 的同时,定义了 2 个结构变量,一个为 rec,另一个为指针变量 ptr。A 选项中,rec 是一个结构体变量,结构体变量访问结构成员的方式应该为:“rec.成员名“,这里用法错误,答案为 A 选项。25.以下叙述中错误的是
37、_。(分数:1.00)A.C 语言编写的函数源程序,其文件名后缀可以是 CB.C 语言编写的函数都可以作为一个独立的源程序文件C.C 语言编写的每个函数都可以进行独立的编译并执行 D.一个 C 语言程序只能有一个主函数解析:解析 函数是指预先定义功能块,其目的是提高程序的重用性。在 C 语言中函数的源程序,后缀名可以为 C。C 语言所编写的函数都可以是一个独立的源文件。一个 C 语言程序只能有一个主函数。C 语言中编写的函数不是每个都可以独立地编译和执行的,因为 C 语言中程序的开始为主函数,如果程序中没有主函数则无法进行编译和执行。26.字符串“/“ABCDEF“/“的长度是 _ 。(分数:
38、1.00)A.15B.10 C.7D.8解析:解析 本题涉及字符串最基本两个概念:字符串的长度是指字符串中字符的个数,但不包括字符串结束符:以反斜杠“/”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“1”连同后面的字符为一个长度。27.有以下程序: #includestdio.h int fun() static int x=1; x+=1; return X; main() it i,s=1; for(i=1;i=5;i+) s+=fun(); printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:1.00)A.
39、120B.11C.6D.21 解析:解析 fun 函数中的变量 x 为静态局部变量,占用固定的内存单元,下一次调用时仍可以保留上次调用时的直。也就是说,如果多次调用 fun 函数,x 的定义只在第一次调用时有效,从第二次调用开始,x 的定义相当于不存在,直接使用上次 x 的值。fun 函数被调用了 5 次,每次调用后的返回值累加到 s 上。5 次调用后,x 的值为 6,s 的值为 1+2+3+4+5+6=21,因此 D 选项正确。28.C 语言程序的执行是_。(分数:2.00)A.从程序的主函数开始,到程序的主函数结束 B.从程序的主函数开始,到程序的最后一个函数结束C.从程序的第一个函数开始
40、,到程序的最后一个函数结束D.从程序的第一个函数开始,到程序的主函数结束解析:29.以下选项中,能够正确利用随机函数 rand(),产生一个英文字母的表达式是_。(分数:1.00)A.rand()%2=0?rand()%“A“:rand()%“a“B.rand()%26+“A“|rand()%26+“a“C.rand()%26+“A“C.int num=1,2,3,4,5,6;D.int num4=1,2,3,4,5,6;解析:解析 int num24定义 2 行 4 列数组,赋值给 num 数组 3 行错误。所以选择 A。31.下面程序的运行结果是_。 #includestdio.h #in
41、cludestring.h main() char*s1=“abDuj“; char*s2=“ABdUG“; int t; t=strcmp(s1,s2); printf(“%d“,t); (分数:2.00)A.正数 B.负数C零D.不确定的值解析:32.若 fp 已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为(分数:1.00)A.0 B.1C.-1D.一个非 0 值解析:解析 文件尾测试函数 feof()的应用,读取文件时,当文件中的数据全部读完后,文件位置指针将位于文件的结尾。此时如果读数据,将会出现错误。为了保证读写数据的正确性,需要进行文件尾测试,文件尾
42、测试使用函数 feof(),它的功能是测试 fp 指向的文件是否到达文件尾。若到达文件尾,返回值为非 0,否则返回值为 0。在本题中 fP 指向的某文件还没有到了文件尾,因此返回 0。33.设 x=011050,则 x=x01252 的值是_。(分数:1.00)A.0000001000101000 B.1111110100011001C.0000001011100010D.1100000000101000解析:解析 本题主要考查按位与运算,x=011050 的二进制形式为 00010010000101000,01252 的二进制形式为 0000001010101010,两者相与得 000000
43、1000101000。34.函数调用 strcat(strcpy(str1, str2), str3)的功能是_。(分数:2.50)A.将字符串 str1 复制到字符串 str2 中后再连接到字符串 str3 之后B.将字符串 str1 连接到字符串 str2 之后再复制到字符串 str3 之后C.将字符串 str2 复制到字符串 str1 之后再将字符串 str3 连接到字符串 str1 之后 D.将字符串 str2 连接到字符串 str1 之后再将字符串 str1 复制到字符串 str3 中解析:解析 strcat(s1,s2)函数的功能是把 s2 字符串连接到 s1 字符串末尾,strc
44、py(s1,s2)是把 s2字符串复制到 s1 字符串,要保证 s1 的容量。35.有三个关系 R,S 和 T 如下: R A B C a 1 2 b 2 1 c 3 1 S A B C d 3 2 T A B C a 1 2 b 2 1 c 3 1 d 3 2 其中关系 T 由关系 R 和 S 通过某种操作得到,该操作为_。(分数:2.00)A.选择B.投影C交D并 解析:解析 在关系 T 中包含了关系 R 与 S 中的所有元组,所以进行的是并的运算,答案为 D。36.下面说明不正确的是(分数:2.00)A.char a10=“china“;B.char a10,*p=a;p=“china“
45、C.char *a;a=“china“;D.char a10,*p;p=a=“china“ 解析:解析 C 语言中操作一个字符串常量的方法有:把字符串常量存放在一个字符数组之中;用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。当字符串常量在表达式中出现时,根据数组的类型转换规则,它被转换成字符指针。本题选项 D 中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。37.若变量已正确定义,有以下程序段 i=0; do printf(“%d,“,i); while(i+); printf(“%d/n“,i); 其输出结果是_。(分数:1.00)A.0,
46、1 B.0,0C.1,1D.程序进入无限循环解析:解析 循环语句中输出 0,i 为 0 循环结束,执行循环条件后 i 为 1,输出 1,所以选择 A。38.有以下程序 #includestdio.h main() unsigned char a=8,c; c=a3; printf(“%d/n“,c); 程序运行后的输出结果是_。(分数:1.00)A.1 B.16C.32D.0解析:解析 无符号整型变量 a 的值为 8,二进制表示为 00001000,右移 3 位后为 00000001,即十进制的 1,因此输出 1。39.将 E-R 图转换到关系模式时,实体与联系都可以表示成( )。(分数:1.00)A.属性B.关系 C键D域解析:解析 把概念模型转换成关系数据模型就是把 E-R 图转换成一组关系模式,每一个实体型转换为一个关系模式,每个联系分别转换为关系模式。40.以下不能正确定义二维数组的选项是_。(分数:2.50)A.int a22=1,2;B.int a2=1,2,3,4;C.int a22=1,2,3;D.int a2=1,2,3,4; 解析:解析 C 语言中明确规定,在定义二维数组时,后一个下标值不能省略,否则将无法判定数组中某一行的元素个数。