1、二级 C语言笔试-466 及答案解析(总分:101.00,做题时间:90 分钟)一、选择题(总题数:40,分数:63.00)1.在结构化程序设计中,模块划分的原则是A) 各模块应包括尽量多的功能 B) 各模块的规模应尽量大C) 各模块之间的联系应尽量紧密 D) 模块内具有高内聚度、模块间具有低耦合度(分数:2.00)A.B.C.D.2.下列叙述中正确的是_。A) 软件交付使用后还需要维护 B) 软件一旦交付使用就不需要维护C) 软件交付使用后其生命周期就结束 D) 软件维护是指修复程序中被破坏的指令(分数:2.00)A.B.C.D.3.下列叙述中错误的是( )。A) 线性表是由 n个元素组成的
2、一个有限序列B) 线性表是一种线性结构C) 线性表的所有结点有且仅有一个前件和后件D) 线性表可以是空表(分数:2.00)A.B.C.D.4.软件工程的理论和技术性研究的内容主要包括软件开发技术和( )。A) 消除软件危机 B) 软件工程管 C) 程序设计自动化 D) 实现软件可重用(分数:1.00)A.B.C.D.5.关于结构化程序设计原则和方法的描述错误的是( )。A选用的结构只准许有一个入口和一个出口B复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C不允许使用 GOTO语句D语言中所没有的控制结构,应该采用前后一致的方法来模拟(分数:1.00)A.B.C.D.6.在软件生命周期中,能
3、准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_。A) 概要设计 B) 详细设计 C) 可行性分析 D) 需求分析(分数:2.00)A.B.C.D.7.有三个关系 R、S 和 T如下: * 则由关系 R和 S得到关系 T的操作是( )。 A) 自然连接 B) 交 C) 投影 D) 并(分数:2.00)A.B.C.D.8.以下程序运行后的输出结果是 _。main()int a,b,c;a=10;b=20;c=(a%b1)|(a/b1);printf(“%d %d %d/n“,a,b,c);A) 10 20 0 B) 20 10 0 C) 10 10 0 D) 20 20 0(分数:2.0
4、0)A.B.C.D.9.下列定义变量的语句中错误的是_。A) int_int; B) double int_;C) char for; D) float US$(分数:1.00)A.B.C.D.10.对于一个正常运行的 C语言程序,以下叙述中正确的是_。A) 程序的执行总是从 main函数开始,在 main函数结束B) 程序的执行总是从程序的第一个函数开始,在 main函数结束C) 程序的执行总是从 main函数开始,在程序的最后一个函数中结束D) 程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束(分数:2.00)A.B.C.D.11.以下叙述中正确的是A) 构成 C程序的基本
5、单位是函数 B) 可以在一个函数中定义另一个函数C) main( )函数必须放在其他函数之前 D) C 函数定义的格式是 Kint *p=a+5,*q=NULL;*q=8(p+5);printf(“%d %d/n“, *p,*q);A) 运行后报错 B) 6 6 C) 6 11 D) 5 5(分数:1.00)A.B.C.D.14.有以下程序main()int m=3 , n=4 , x ;x=-m+;x=x+8/+n ;printf(“%d/n“,x);程序运行后的输出结果是_。A) 3 B) 5 C) -1 D) -2(分数:1.00)A.B.C.D.15.已知字母 A的 ASCII代码值为
6、 65,若变量 kk为 char型,以下不能正确判断出 kk中的值为大写字母的表达式是A) kk=Ak=10;printf(“%x,%o,“,ch,ch,k);printf(“k:%d/n“,k);A)因变量类型与格式描述符的类型不匹配,输出无定值B)输出项与格式描述符个数不符,输出为 0值或不定值C)62,142,k=%dD)62,142,k=%10(分数:2.00)A.B.C.D.17.若变量已正确说明为 int类型,要通过语句 scanf(“%d %d %d“,给 a赋值 3,b 赋值 5,c赋值 8,下面不正确的输入形式是( )。A) 3回车5回车8回车B) 3,5,8回车C) 3回车
7、58回车D) 35回车8回车(分数:1.00)A.B.C.D.18.以下选项中与 if(a=1)a=b;else a+;语句功能不同的 switch语句是A) switch(a)case 1:a=b;break;default:a+;B) switch(a=1)case 0:a=b;break;case 1:a+;C) switch(a)case 1:a=b;break;default:a+;D) switch(a=1)case 1:a=b;break;case 0:a+;(分数:1.00)A.B.C.D.19.以下程序段中,与语句:k=ab?(bc?1:0):0;功能相同的是A) if(ab
8、)int age;a10=“ZHAO“,14,“WANG“,15,“LIU“,16,“ZHANG“,17;执行语句 printf(“%d,%c“,a2.age,*(a3.name+2) )的输出结果为( )。A) 15,A B) 16,H C) 16,A D) 17,H(分数:2.00)A.B.C.D.25.下列程序的输出结果是( )。#include stdiohvoid p(int *x)printf(“%d“,+*x);void main()int y=3;p(char s2=“ABC“;strcpy(s1,s2);printf(“%d“,strlen(s1);A) 3 B) 4 C)
9、6 D) 5(分数:2.00)A.B.C.D.33.以下数据库除 _外,均为严格意义上的 DBMS系统。A) Oracle B) AccessC) Sybase的 PowerBuilder D) SQL Server(分数:2.00)A.B.C.D.34.若有下列说明,则( )不是对 strcpy库函数的正确的调用。strcpy 库函数用于复制一个字符串:char*str1=“abed“,str210,*str3=“hijklmn“,*str42,*str5=“aaaa“;A) strcpy(str2,str1) B) strcpy(str3,str1)C) strcpy(str4,str1)
10、 D) strcpy(str5,str1)(分数:2.00)A.B.C.D.35.若有说明 chars130“abc“,s2“defghi“;,则在使用函数 strcat(s1,s2)后,结果是( )A) s1的内容更新为 abcdefghi B) s1的内容更新为 defghi/0C) s1的内容更新为 defghiabc/0 D) s1的内容更新为 abcdefghi/0(分数:2.00)A.B.C.D.36.以下合法的字符型常量是A) /x13 B) /081 C) 65 D) “/n/(分数:2.00)A.B.C.D.37.有以下程序:#include stdiohfun(int x,
11、int y,int z)z=x*y;main()int a=4,b=2,c=6;fun(a,b,c);printf(“%d“,c);程序运行后的输出结果是( )。A) 16 B) 6 C) 8 D) 12(分数:1.00)A.B.C.D.38.有以下程序:#includestdio.h#includestring.htypedef structchar name9;char sex;float score2;STU;STU f(STU a)STU b=“Zhao“,m,85.0,90.0;int i;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i,2;i
12、+)a.scorei=b.scorei;return a;main()STU c=“Qian“,f,95.0,92.0,d;d=f(c);printf(“%s,%c,%2.0f%2.0f/n“,d.name,d.sex,d.score0,d.score1);程序的运行结果是_。A) Qian,f,95,92 B) Qian,85,90C) Zhao,m,85,90 D) Zhao,f,95,92(分数:2.00)A.B.C.D.39.若以“叶”方式打开一个己存在的文件,则下列叙述正确的是( )。A) 文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进行添加或读操作B) 文件打开时,
13、原有文件内容不被删除,只能进行读操作C) 文件打开时,原有文件内容被删除,只能进行写操作D) 以上 3种说法都不正确(分数:2.00)A.B.C.D.40.请读程序段:char str=“ABCD“,*p=strprint(“%d/n“,*(p+4);程序段的输出结果是_。A) 68 B) O C) 字符D的地址 D) 不确定的值(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:38.00)41.在算法的 4个特性中,算法必须能在执行有限个步骤之后终止指的是算法的 1 特性。(分数:2.00)填空项 1:_42.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于 1。(
14、分数:2.00)填空项 1:_43.在结构化分析使用的数据流图中,使 1 解释其中的图形元素。(分数:2.00)填空项 1:_44.语句:x+:+x;x=1+x:执行后都使变量 x中的值增 1,请写出一条同一功能的赋值语句 1。(分数:2.00)填空项 1:_45.以下函数 rotate的功能是:将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组的第 0列中,把 a所指二维数组中的第 0行放到 b所指二维数组的最后一列中,b 所指二维数组中其他数据不变。#define N 4void rotade(int aN,int bN)int i,j;for(i=0;iN;i+)biN-1
15、= 9 ; 10 :aN-1i;(分数:2.00)填空项 1:_46.以下程序运行时若从键盘输入:10 20 30回车,输出结果是U /U。# includestdio.hmain()int i=0,j=0,k=0;scanf(“%d% *d%d“,printf(“%d %d %d/n“,i,j,k);(分数:2.00)填空项 1:_47.下面程序的运行结果是_。 #includestdio.h #define SIZE 12 main() char sSIZE;int i; for(i=0;iSIZE;i+)si=A+i+32; sub(s,5,SIZE-1); for(i=0;iSIZE;
16、i+)printf(“%c“,si); printf(“/n“); sub(char*a,int t1,int t2) char ch; while(t1t2) ch=*(a+t1); *(a+t1)=*(a+t2); *(a+t2)=ch; t1+;t2-; (分数:2.00)填空项 1:_48.若有下列定义:int a=1,2,3,4,5,6,7,8,9,10,*p=a;,则值为 3的表达式为: 1。(分数:2.00)填空项 1:_49.以下程序中,fun 函数的功能是求 3行 4列二维数组每行元素中的最大值。请填空。#include stdio, hvoid fun(int,int,in
17、t( * )4 ,int* );main ( )int a3 4 = 12,41,36,28, 19,33,15,27, 3,27,19,1 ,b3 ,i;fun(3,4,a,b);for(i =0;i 3;i + ) printf( “%4d“ ,bi );prinff(“ /n“ );void fun(int m,int n,int ar 4 ,int* br)int i,j,x;for(i =0;i m;i + )x = ari 0 ;for(j = 0;j n;j + ) if(x ari j ) x = ari j;U /U=x;(分数:2.00)填空项 1:_50.以下函数 sst
18、rcat的功能是实现字符串的连接,即将 t所指字符串复制到 s所指字符串的尾部。例如:,所指字符串为 abed,t 所指字符串为 efgh,调用函数 sstrcat后 s所指字符串为 abcdefgh。请填空。#inehde stdio.h#include string.hvoid sstuat(char * 9,char *t)int n;n = strlen (s);while(*(s+n) =U /U)s+; t+;(分数:2.00)填空项 1:_51.下列程序的功能是通过函数 func输入字符并统计输入字符的个数。输入时用字符作为输入结束标志,请填空。#includestdio.hlo
19、ng_;/*函数说明语句*/main()long n;n=func();printf(“n=%1d/n“,n);long func()long m;for(m=0;getchar()!=;_);return m;(分数:8.00)填空项 1:_52.以下定义的结构体类型拟包含两个成员,其中成员变量 info用来存入整型数据,成员变量 link是指向自身结构体的指针,请将定义补充完整。struct nodeint info;U /Ulink;(分数:2.00)填空项 1:_53.函数 fun的功能是:根据以下公式求 p的值,结果由函数值返回。m 与 n为两个正数,且要求 mn。*例如:m=12,
20、n=8 时,运行结果应该是 495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。#include stdiohfloat fun(int m,int n)int i;double p=1.0;for(i=1;i=m;i+)U /U;for(i=1;i=n;i+)U /U;for(i=1;i=m-n;i+) p=p/i;return p;main()printf(“p=%f/n“,fun(12,8);(分数:2.00)填空项 1:_54.有下列程序:#includestdio.hmain()char c;while(cgetchar()!,)putchar(+C) ;程序
21、运行时,如果从键盘输入:A,B,CR,则输出结果为_。(分数:2.00)填空项 1:_55.以下程序的功能是:删去一维数组中所有相同的数,使相同的数只剩一个。数组中的数已按由小到大的顺序排列,函数 fun返回删除后数组中数据的个数。例如,若一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。请填空。#include stdio.h#define N 80int fun(int a, int n)int i,j=1;for(i=1;in;i+)if(aj-1U/U ai) aj+=a
22、i;U /U;main()int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,i,n=19;printf(“The original data :/n“);for(i=0;in;i+) printf(“%3d“,ai);n=fun(a,n);printf(“/nThe data after deleted :/n“);for(i=0; in; i+) printf(“%3d“,ai); printf(“/n/n“);(分数:4.00)填空项 1:_二级 C语言笔试-466 答案解析(总分:101.00,做题时间:90 分钟)一、选择题(总题数:40,
23、分数:63.00)1.在结构化程序设计中,模块划分的原则是A) 各模块应包括尽量多的功能 B) 各模块的规模应尽量大C) 各模块之间的联系应尽量紧密 D) 模块内具有高内聚度、模块间具有低耦合度(分数:2.00)A.B.C.D. 解析:解析 在结构化程序设计中,一般较优秀的软件设计尽量做到高内聚、低耦合,这样有利于提高软件模块的独立性,也是模块划分的原则。2.下列叙述中正确的是_。A) 软件交付使用后还需要维护 B) 软件一旦交付使用就不需要维护C) 软件交付使用后其生命周期就结束 D) 软件维护是指修复程序中被破坏的指令(分数:2.00)A. B.C.D.解析:解析 软件交付后还要进行维护,
24、软件维护不仅要修复程序中被破坏的指令还要根据新提出的内容进行必要而且可能的扩充和删改。软件的生命周期是从提出、实现、使用维护到停止使用退役的过程。3.下列叙述中错误的是( )。A) 线性表是由 n个元素组成的一个有限序列B) 线性表是一种线性结构C) 线性表的所有结点有且仅有一个前件和后件D) 线性表可以是空表(分数:2.00)A.B.C. D.解析:解析 线性表是一种线性结构,由 n(n0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以 C是错误的。4.软件工程的理论和技术性研究的内容主要包括软件开发技术和(
25、)。A) 消除软件危机 B) 软件工程管 C) 程序设计自动化 D) 实现软件可重用(分数:1.00)A.B. C.D.解析:解析 软件工程的目标是:在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工程管理。5.关于结构化程序设计原则和方法的描述错误的是( )。A选用的结构只准许有一个入口和一个出口B复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C不允许使用 GOTO语句D语言中所没有的控制结构,应该采用前后一致的方法来模
26、拟(分数:1.00)A.B.C. D.解析:解析 结构化程序设计的原则和方法之一是限制使用 GOTO语句,但不是绝对不允许使用 GOTO语句。其他三项为结构化程序设计的原则。6.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_。A) 概要设计 B) 详细设计 C) 可行性分析 D) 需求分析(分数:2.00)A.B.C.D. 解析:评析 需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。7.有三个关系 R、S 和 T如下: * 则由关系 R和 S得到关系 T的操作是( )。 A) 自然连
27、接 B) 交 C) 投影 D) 并(分数:2.00)A. B.C.D.解析:解析 选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果。投影也是单目运算,该运算从表中选出指定的属性值组成一个新表。自然连接是一种特殊的等价连接,它将表中有相同名称的列自动进行记录匹配。自然连接不必指定任何同等连接条件。8.以下程序运行后的输出结果是 _。main()int a,b,c;a=10;b=20;c=(a%b1)|(a/b1);printf(“%d %d %d/n“,a,b,c);A) 10 20 0 B) 20 10 0 C) 10 10 0 D) 20
28、 20 0(分数:2.00)A. B.C.D.解析:解析 a%b=11 不成立,根据“|”的性质,不需要看后面的表达式,就可以得出 c=0。9.下列定义变量的语句中错误的是_。A) int_int; B) double int_;C) char for; D) float US$(分数:1.00)A.B.C.D. 解析:解析 $不能用做变量名,合法的标识符由字母、数字和下画线组成。10.对于一个正常运行的 C语言程序,以下叙述中正确的是_。A) 程序的执行总是从 main函数开始,在 main函数结束B) 程序的执行总是从程序的第一个函数开始,在 main函数结束C) 程序的执行总是从 mai
29、n函数开始,在程序的最后一个函数中结束D) 程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束(分数:2.00)A. B.C.D.解析:解析 在 C语言中,所有函数的定义,包括主函数 main在内,都是平行的。也就是说,在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。但是函数之间允许互相调用也允许嵌套调用,习惯上把调用者称为主函数。调用函数还可以调用自己,称为递归调用。main 函数是主函数,它可以调用其他函数,而不允许被其他函数调用。因此,C 程序的执行总是从 main函数开始完成对其他函数的调用后返回到 main函数,最后由 main函数结束整个程序。一个 C源程
30、序必须有也只能有一个 main函数。11.以下叙述中正确的是A) 构成 C程序的基本单位是函数 B) 可以在一个函数中定义另一个函数C) main( )函数必须放在其他函数之前 D) C 函数定义的格式是 Kint *p=a+5,*q=NULL;*q=8(p+5);printf(“%d %d/n“, *p,*q);A) 运行后报错 B) 6 6 C) 6 11 D) 5 5(分数:1.00)A. B.C.D.解析:解析 本题的考查点是通过指针引用数组元素。程序中没有给 q分配存储单元,只是给它赋了一个 NULL,所以程序的运行结果是:6 11 NULL pointer assignment,也
31、就是运行后报错。14.有以下程序main()int m=3 , n=4 , x ;x=-m+;x=x+8/+n ;printf(“%d/n“,x);程序运行后的输出结果是_。A) 3 B) 5 C) -1 D) -2(分数:1.00)A.B.C.D. 解析:解析 在 C语言中,+有前缀和后缀两种形式,它们的区别在于其表达式的值不同,前缀形式表达式的值为增加 1后的值,而后缀表达式为增加 1之前的值。本题中,首先执行 x=-m+,此时 x的值变成了-3,接着再执行 x=x+8/+n,此时就变成了 x=-3+8/5=-2。15.已知字母 A的 ASCII代码值为 65,若变量 kk为 char型,
32、以下不能正确判断出 kk中的值为大写字母的表达式是A) kk=Ak=10;printf(“%x,%o,“,ch,ch,k);printf(“k:%d/n“,k);A)因变量类型与格式描述符的类型不匹配,输出无定值B)输出项与格式描述符个数不符,输出为 0值或不定值C)62,142,k=%dD)62,142,k=%10(分数:2.00)A.B.C. D.解析:解析 第 1个 printf函数,格式说明的个数是 2,而输出项的个数是 3,所以对于多余的输出项k不予输出;第 2个 printf函数,有两个%说明,第 1个%后面的字符要原样输出。知识拓展 本题考查 printf函数的格式。“%x”和“
33、%o”分别表示以+六进制和八进制无符号型输出整型数据(不带前导 0x或 0):printf 函数中格式说明符之前插入的任何字符都原样输出;格式说明与输出项的个数也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。17.若变量已正确说明为 int类型,要通过语句 scanf(“%d %d %d“,给 a赋值 3,b 赋值 5,c赋值 8,下面不正确的输入形式是( )。A) 3回车5回车8回车B) 3,5,8回车C) 3回车58回车D) 35回车8回车(分数:1.00)A.B. C.D.解析:解析 本题中,“%d%d%d”表示按整数输入数据,输入数据时,在两个数据之间以一个或
34、多个空格间隔,也可以用回车键或 Tab键。选项 B)中不应该使用逗号。18.以下选项中与 if(a=1)a=b;else a+;语句功能不同的 switch语句是A) switch(a)case 1:a=b;break;default:a+;B) switch(a=1)case 0:a=b;break;case 1:a+;C) switch(a)case 1:a=b;break;default:a+;D) switch(a=1)case 1:a=b;break;case 0:a+;(分数:1.00)A.B. C.D.解析:解析 switch(a=1)语句中,若 a等于 1,则 a =1为“真”
35、,则应该进行 a=b的操作,故选项B错误。19.以下程序段中,与语句:k=ab?(bc?1:0):0;功能相同的是A) if(ab)int age;a10=“ZHAO“,14,“WANG“,15,“LIU“,16,“ZHANG“,17;执行语句 printf(“%d,%c“,a2.age,*(a3.name+2) )的输出结果为( )。A) 15,A B) 16,H C) 16,A D) 17,H(分数:2.00)A.B.C. D.解析:解析 本题主要考查结构体数组。a2.age 为结构体 a2的 age成员,即 16。a3.name 为指向结构体 a3的 name成员的第一个元素的指针,即指
36、向“Z”, (a3.name+2)将指针后移两位指向第三个元素“A”, *(a13).name+2)是取指针所指向地址的内容。25.下列程序的输出结果是( )。#include stdiohvoid p(int *x)printf(“%d“,+*x);void main()int y=3;p(char s2=“ABC“;strcpy(s1,s2);printf(“%d“,strlen(s1);A) 3 B) 4 C) 6 D) 5(分数:2.00)A. B.C.D.解析:解析 头文件string.h是字符串处理函数对应的头文件,要想调用 C语言的库函数时,都要在程序中嵌入该函数对应的头文件,否
37、则无法使用库函数。strcpy(s1,s2)把,2 中的字符串复制到 s1中,所以结果就为 s2的长度。33.以下数据库除 _外,均为严格意义上的 DBMS系统。A) Oracle B) AccessC) Sybase的 PowerBuilder D) SQL Server(分数:2.00)A.B. C.D.解析:解析 目前流行的 DBMS均为关系数据库系统,如 ORACLE、Sybase 的 Power Builder及 IBM的DB2、微软的 SQL Server等,它们均为严格意义上的 DBMS系统。另外有一些小型的数据库,如微软的Visual FoxPro和 Access等,它们只具备
38、数据库管理系统的一些简单功能,不是严格意义上的 DBMS系统。34.若有下列说明,则( )不是对 strcpy库函数的正确的调用。strcpy 库函数用于复制一个字符串:char*str1=“abed“,str210,*str3=“hijklmn“,*str42,*str5=“aaaa“;A) strcpy(str2,str1) B) strcpy(str3,str1)C) strcpy(str4,str1) D) strcpy(str5,str1)(分数:2.00)A.B.C. D.解析:解析 strcpy(s1,s2)函数的功能是将字符串 s2复制到字符串 s1中(注意:要保证 s1存储区
39、能容纳下 s2字符串)。35.若有说明 chars130“abc“,s2“defghi“;,则在使用函数 strcat(s1,s2)后,结果是( )A) s1的内容更新为 abcdefghi B) s1的内容更新为 defghi/0C) s1的内容更新为 defghiabc/0 D) s1的内容更新为 abcdefghi/0(分数:2.00)A.B.C.D. 解析:解析 strcat(s1,s2)是把 s2字符串连接到 s1字符串的末尾,要保证 s1能容纳下连接后的字符串。36.以下合法的字符型常量是A) /x13 B) /081 C) 65 D) “/n/(分数:2.00)A. B.C.D.
40、解析:解析 C 语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在 C语言中还允许用一个“/”开头的字符序列来表示字符常量。其中,形式“/ddd“表示 1 到 3位 8进制数所代表的字符;形式“/xhh“表示 1到 2位 16进制数所代表的字符。在本题中,/x13表示回车符,是一个字符常量;/081用 8进制数所代表的字符,但形式不正确,因为 8进制数所代表的字符中不会出现数字“8”;5不是一个字符,而是一个十进制数字;/n是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。37.有以下程序:#include stdiohfun(int x,int y,int z)z=x
41、*y;main()int a=4,b=2,c=6;fun(a,b,c);printf(“%d“,c);程序运行后的输出结果是( )。A) 16 B) 6 C) 8 D) 12(分数:1.00)A.B. C.D.解析:解析 本题考查函数形参与实参的传递规则,当形参与实参都是简单的数据类型时,形参值的改变不能影响实参值,即本题中 c的值未改变,仍然是 6。38.有以下程序:#includestdio.h#includestring.htypedef structchar name9;char sex;float score2;STU;STU f(STU a)STU b=“Zhao“,m,85.0,
42、90.0;int i;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i,2;i+)a.scorei=b.scorei;return a;main()STU c=“Qian“,f,95.0,92.0,d;d=f(c);printf(“%s,%c,%2.0f%2.0f/n“,d.name,d.sex,d.score0,d.score1);程序的运行结果是_。A) Qian,f,95,92 B) Qian,85,90C) Zhao,m,85,90 D) Zhao,f,95,92(分数:2.00)A.B.C. D.解析:解析 本题考查的重点是对向函数传递结构体的理
43、解。用结构体做函数的参数时,是按传值规则把全部结构传给函数,因此,函数内对结构内容的修改不影响原结构,即退出函数时,原结构内容不变。本题中,d 中的值应为 b中的值,所以选项 C是正确的。39.若以“叶”方式打开一个己存在的文件,则下列叙述正确的是( )。A) 文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进行添加或读操作B) 文件打开时,原有文件内容不被删除,只能进行读操作C) 文件打开时,原有文件内容被删除,只能进行写操作D) 以上 3种说法都不正确(分数:2.00)A. B.C.D.解析:解析 本题考查文件使用方式标识符,以“叶”方式打开一个已存在的文件,则表示保留文件中原
44、有的数据,文件的位置指针在文件末尾,此时,可以进行追加或读操作。40.请读程序段:char str=“ABCD“,*p=strprint(“%d/n“,*(p+4);程序段的输出结果是_。A) 68 B) O C) 字符D的地址 D) 不确定的值(分数:2.00)A.B. C.D.解析:评析 在对字符数组赋字符串值时,系统会自动在字符串的末尾加上个字符串结束标志/0,故指向字符数组的指针 p的*(p+4)的值为/0。由于/0的编码值就是 0,所以本题输出为 0。二、填空题(总题数:15,分数:38.00)41.在算法的 4个特性中,算法必须能在执行有限个步骤之后终止指的是算法的 1 特性。(分
45、数:2.00)填空项 1:_ (正确答案:有穷性)解析:解析 算法的 4个基本特性包括:可靠性、确定性、有穷性和拥有足够的情报,其中,算法的有穷性指的是算法必须在有限的时间内完成,即算法必须在执行有限个步骤之后终止。42.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于 1。(分数:2.00)填空项 1:_ (正确答案:线性结构)解析:解析 数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。43.在结构化分析使用的数据流图中,使 1 解释其中的图形元素。(分数:2.00)填空项 1:_ (正确答案:
46、数据字典)解析:解析 数据字典的作用是对数据流图中出现的披命名的图形元素进行确切解释。通常数据字典包含的信心有名称、别名、何处使用/如何使用、内容描述、补充信息等。44.语句:x+:+x;x=1+x:执行后都使变量 x中的值增 1,请写出一条同一功能的赋值语句 1。(分数:2.00)填空项 1:_ (正确答案:x+1)解析:解析本题考查“+”、“-”运算符。“+”、“-”只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增 1或减 1,后缀形式是先使用变量原来的值,使用完后再使其增 1或减 1。45.以下函数 rotate的功能是:将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组的第 0列中,把 a所指二维数组中的第 0行放到 b所指二维数组的最后一列中,b 所指二维数组中其他数据不变。#define N 4void rotade(int aN,int bN)int i,j;for(i=0;iN;i+)biN-1= 9 ; 10 :aN-1i;(分数:2.00)填空项 1:_ (正确答案:9