1、二级 C语言笔试-371 及答案解析(总分:103.00,做题时间:90 分钟)一、选择题(总题数:50,分数:66.00)1.下列叙述中正确的是A) C语言中既有逻辑类型也有集合类型 B) C 语言中没有逻辑类型但有集合类型C) C语言中有逻辑类型但没有集合类型 D) C 语言中既没有逻辑类型也没有集合类型(分数:1.00)A.B.C.D.2.下列叙述中正确的是( )。A) 一个逻辑数据结构只能有一种存储结构B) 数据的逻辑结构属于线性结构,存储结构属于非线性结构C) 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D) 一个逻辑数据结构可以有多种存储结构,且各种存储结
2、构影响数据处理的效率(分数:2.00)A.B.C.D.3.若有以下说明和定义:typedef int *INTEGER;INTEGER p,*q;以下叙述正确的是( )。A) p是整型变量 B) p 是基类型为整型的指针变量C) q是基类型为整型的指针变量 D) 程序中可用 INTEGER代替 int类型名(分数:1.00)A.B.C.D.4.为了使模块尽可能独立,要求( )。A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C) 模块的内聚程度要尽量低,且各模块间的偶合程度要尽量弱D) 模块的内聚程度要尽量低,且各模块间的耦合
3、程度要尽量强(分数:1.00)A.B.C.D.5.以下程序的输出结果是 ( )void fun(float *p1,float *p2,float *s)s(float *)calloc(1,sizeof(float);*s*p1+*p2+;main()float s21.1,2.2,b210.0,20.0,*s=a;fun(a,b,s);printf(“%5.2f/n“,* s);A) 11.10 B) 12.00 C) 21.10 D) 1.10(分数:1.00)A.B.C.D.6.将 E-R图转换到关系模式时,实体与实体间的联系可以表示成( )。A) 属性 B) 关系C) 键 D) 域(
4、分数:1.00)A.B.C.D.7.下列关于栈的描述中错误的是( )。A) 栈是先进后出的线性表 B) 栈只能顺序存储C) 栈具有记忆作用 D) 对栈的插入与删除操作中,不需要改变栈底指针(分数:1.00)A.B.C.D.8.对于现实世界中事物的特征,在实体联系模型中使用_。A) 属性描述 B) 关键字描述C) 二维表描述 D) 实体描述(分数:1.00)A.B.C.D.9.在 C语言系统中,假设 int类型数据占两个字节,则 double、long、unsigned int、char 类型数据所占字节数分别为( )。A) 8,2,4,1 B) 2,8,4,1C) 4,2,8,1 D) 8,4
5、,2,1(分数:1.00)A.B.C.D.10.对于建立良好的程序设计风格,下面描述正确的是( )。A) 程序应简单、清晰、可读性好 B) 符号名的命名只要符合语法即可C) 充分考虑程序的执行效率 D) 程序的注释可有可无(分数:1.00)A.B.C.D.11.以下不正确的叙述是( )。A) 在 C程序中,逗号运算符的优先级最低B) 在 C程序中,APH 和 aph是两个不同的变量C) 若变量 a和 b类型相同,执行了赋值表达式 a=b后 b中的值将放入 a中,而 b中的值不变D) 当从键盘输入数据时,对于整型变量只能输入整型数值,而实型变量只能输入实型数值(分数:1.00)A.B.C.D.1
6、2.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。A) 循环队列 B) 栈C) 队列 D) 二叉树(分数:1.00)A.B.C.D.13.设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是_。A) c1c2 B) c1printf (“ %d/n“,x);执行后的输出结果是 _。 A) 2 B) 1 C) 3 D) 6(分数:2.00)A.B.C.D.16.下列叙述中不正确的是( )。A) 在 C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B) 在 C的函数中,最好使用全局变量C) 外部变量可以在函数之间传递数据D) 自动变量实质上是
7、一个函数内部的局部变量(分数:2.00)A.B.C.D.17.下列程序的输出结果是_。#include stdio. hmain ( )int a,b,c=246;a=c/100%9;b=(-1)printf (“%d, %d/n“, a,b);A) 2,1 B) 3,2 C) 4,3 D) 2,-1(分数:2.00)A.B.C.D.18.在下列关于二叉树的叙述中,正确的一项是A) 在二叉树中,任何一个结点的度都是 2 B) 二叉树的度为 2C) 在二叉树中至少有一个结点的度是 2 D) 一棵二叉树的度可以小于 2(分数:2.00)A.B.C.D.19.以下程序运行后的输出结果是_。int d
8、=1;fun(int p)static int d=d; d+=p;printf(“%d“,d) ;return d;main()int a=3; printf(“%d/n“,fun(a+fun(d);A) 699 B) 669 C) 61515 D) 6615(分数:1.00)A.B.C.D.20.有以下程序:#include stdio.hmain()int a=5,b=1,t;t=(a2)|b;printf(“%d/n“,t);程序运行后的输出结果是A) 21 B) 11 C) 6 D) 1(分数:1.00)A.B.C.D.21.已知 i、j、k 为血型变量,若要从键盘输入 2、3、4C
9、R,使 i、j、k 的值分别为 2、 3、4,下列正确的输入语句是( )。A) scanf(“%3d,%3d,%3d“,B) scan(“%d,%d,%d“,C) scan(“%do/od%d“,D) scanf(“i%d,j%d,k%d“,(分数:1.00)A.B.C.D.22.有下列函数定义:int fun(double a,double b) return a*b;若下列选项中所用变量都己正确定义并赋值,错误的函数调用是( )。A) if(fun(x,y) B) z=fun(fun(x,y),fun(x,y);C) z=fun(fun(x,y)x,y); D) fun(x,y);(分数:
10、2.00)A.B.C.D.23.下列程序执行后的输出结果是_。main()int m3=1,4,7,2,5,8,3,6,9;int i,k=2;for(i=0;i3;i+)printf(“%d“,mki);A) 456 B) 258 C) 369 D) 789(分数:1.00)A.B.C.D.24.下列程序语句中,不正确的是_。A) maia()float a,b,c;scanf(“%f,%f“,i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a1i);程序运行后的输出结果是A) 012 B) 123 C) 234 D) 345(分数:1.00)A.B.C.D.29.
11、有以下程序:main()char a7=“a0/0a0/0“;int i,j;i=sizeof(A) ;j=strlen(A) ;printf(“%d%d/n“,i,j);程序运行后的输出结果是( )。A) 2 2 B) 7 6 C) 7 2 D) 6 2(分数:2.00)A.B.C.D.30.请选出以下程序的输出结果_。#includestdio.hsub(x,y,z)int x,y,*z;*z=y-x;main()int a,b,c;sub(10,5,A) 5,2,3 B) -5,-12,-7 C) -5,-12,-17 D) 5,-2,-7(分数:1.00)A.B.C.D.31.下面四个
12、选项中,均是不合法的用户标识符的选项是( )。A) A P_0 do B) float la0_A C) b-a goto int D) _123 temp int(分数:1.00)A.B.C.D.32.CPU能够直接访问的存储器是 ( )A) 软盘B) 硬盘C) RAMD) CD-ROM(分数:1.00)A.B.C.D.33.下面程序段的运行结果是char a =“lanuage“,*p;p=a;while(*p!=u)printf(“%c“,*p-32);p+;A)LANGUAGE B)language C)LAN D)langUAGE(分数:2.00)A.B.C.D.34.下列程序的输出
13、结果是( )。#includestdio.h#includestring.hmain()char a=“/n123/“;printf(“%d,%d/n“,strlen(a),sizeof(a);A) 5,6 B) 5,5 C) 6,6 D) 6,5(分数:2.00)A.B.C.D.35.若有下列说明和语句,已知 int型数据占 2个字节,则下列语句的输出结果是( )。struct stchar a15;int b;double c;printf(“%d“,sizeof (struct st);A) 15 B) 8 C) 25 D) 2(分数:1.00)A.B.C.D.36.若函数中有定义语句:
14、int a;,则A) 系统将自动给 a赋初值为 0 B) 系统将自动给 a赋初值-1C) 这时 a中的值无意义 D) 这时 a中无任何值(分数:1.00)A.B.C.D.37.执行下列语句后,a 和 b的值分别为_。int a,b;a=1+b=2+7%-4-A;A) -63, -64 B) -59, -60 C) 1, -60 D) 79, 78(分数:2.00)A.B.C.D.38.有以下程序:main()int X,Y,Z;x=y=1:Z=X+,Y+,+Y;printf(“%d,%d,%d/n”,X,Y,Z);程序运行后的输出结果是( )。A) 2,3,3 B) 2,3,2 C) 2,3,
15、1 D) 2,2,1(分数:1.00)A.B.C.D.39.以下程序运行后,输出结果是 ( )# includestdio.h# define PT5.5# define S (x)PT* x * xmain( )int a1,b2;printf(“%4.1f/n“,s(a+b);A49.5B9.5C22.0D45.0(分数:1.00)A.B.C.D.40.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaedlf,则其后序遍历的结点访问顺序是( )。A)bdgcefha B)gdbecfhaC)bdgaechf D)gdbehfca(分数:1.00)A.B.C.D
16、.41.下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。 A) 内模式 B) 外模式 C) 概念模式 D) 逻辑模式(分数:2.00)A.B.C.D.42.有以下程序:#includestdio.hunion pwint i;char ch2;a;main()ach0=13;ach1=0;printf(“%d/n“,ai);程序的输出结果是A) 13 B) 14 C) 208 D) 209(分数:1.00)A.B.C.D.43.有以下程序:main()char str=“xyz“, *ps=str;while(*ps) ps+;for(ps-;ps-str=O;ps-)puts
17、(ps);执行后的输出结果是( )。A) yzxyzB) zyzC) zyzxyzD) xxyxyz(分数:1.00)A.B.C.D.44.设有以下语句:char strl=“string“,str28,*str,*str4=“string“;则_不是对库函数的正确调用。A) strcpy(strl,“HELLO1“); B) strcpy(str2,“HELLO2“);C) strcpy(str3,“HELLO3“); D) strcpy(str4,“HELLO4“);(分数:2.00)A.B.C.D.45.以下程序执行后 x的值是main()int x,y=252,i=386,*m=,指针
18、 p可以_。A) 代表函数的返回值 B) 指向函数的入口地址C) 代表函数的类型 D) 代表函数返回值的类型(分数:1.00)A.B.C.D.47.软件需求分析阶段的工作,可以分为 4个方面:需求获取、需求分析、编写需求规格说明书以及( )。A) 阶段性报告 B) 需求评审 C) 总结 D) 都不正确(分数:2.00)A.B.C.D.48.在宏定义#definePI 3.14159 中,用宏名 PI代替一个 ( )A) 单精度数 B) 双精度数 C) 常量 D) 字符串(分数:1.00)A.B.C.D.49.在设计程序时,应采纳的原则之一是A) 不限制 goto语句的使用 B) 减少或取消注解
19、行C) 程序越短越好 D) 程序结构应有助于读者理解(分数:2.00)A.B.C.D.50.在软件开发过程中,软件结构设计是描述_。A) 数据存储结构 B) 软件体系结构C) 软件结构测试。 D) 软件控制过程(分数:1.00)A.B.C.D.二、填空题(总题数:20,分数:37.00)51.下列程序中的数组 a包括 10个整数元素,分别将前项和后项之和存入数组 b,并按每行 4个元素输出数组 bo请填空。#includestdiohmain()int a10,b10,i;for(i=0;i10;i+)scanf(“%d“,for(i=0;i9;i+)_;for(i=0;i9;i+)if(i%
20、4=0)printf(“/n“);printf(“%3d“,bi);(分数:2.00)填空项 1:_52.设有下列宏定义:#define A2#define B(A+3)则执行赋值语句“kb*20;“ (k 为 int型变量)后,k 的值是_。(分数:2.00)填空项 1:_53.若 a=10,b=20,则表达式!(ab) 的值是 1。(分数:2.00)填空项 1:_54.算法执行过程中所需要的存储空间称为算法的 1。(分数:2.00)填空项 1:_55.以下程序运行后的输出结果是_。main()char a=“123456789“,*p; int i=0;p=a;while(*p)if(i%
21、2=0)*p=*;p+;i+;puts(a);(分数:1.00)填空项 1:_56.子程序通常分为两类: 1 和函数,前者是命令的抽象,后者是为了求值。(分数:1.00)填空项 1:_57.软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于 1 测试。(分数:2.00)填空项 1:_58.常用的黑箱测试有等价分类法、_、因果图法和错误推测法 4种。(分数:2.00)填空项 1:_59.设有下列的程序段:char str“Hello“;char*ptr;ptrstr;执行上面的程序段后, *(ptr+5)的值为_。(分数:2.00)填空项 1:_60.设文件 test. txt中原已写
22、入字符串 Begin,执行以下程序后,文件中的内容为_。#includemain()FILE *fp;fp=fopen(“test.txt“,“w+“);fputs(“test“,fp);fcloset(p);(分数:2.00)填空项 1:_61.执行以下程序后,输出“#”的个数是_。#include stdio.hmain()int i,j;for(i=1;i5;i+)for(j=2;j=i;j+) putchar(#);(分数:2.00)填空项 1:_62.以下程序段的输出结果是_。main()int a=2,b=3,c=4;a*=16+(b+)-(+c);printf(“%d“,a);(
23、分数:1.00)填空项 1:_63.数据库系统中实现各种数据管理功能的核心软件是 1。(分数:2.00)填空项 1:_64.E-mail地址由用户名和域名两部分组成,这两部分的分隔符为 1。(分数:1.00)填空项 1:_65.以下程序调用 fun函数把 x中的值插入到 a数组下标为 k的数组元素中。主函数中,n 存放 a数组中数据的个数。请填空。#includestdio.hvoid fun(int s,int *n,int k,int x)int i;for(i=*n-1;i=k;i-)s_=si;sk=x;*n=*n+_;main()int a20=1,2,3,4,5,6,7,8,9,1
24、0,11,i,x=0,k=6,n=11;fun(a,for(i=0,in,i+)printf(“%4d“,ai);printf(“/n“);(分数:2.00)填空项 1:_66.判定表和判定树是以图文形式描述数据流图的 1。(分数:1.00)填空项 1:_67.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。_(double,double);main()double x,y;scanf(“%1f%1f“,printf(“%1f/n“,max(x,y);double max(double a,double B) return(ab ? a:b);(分数:2.00)填空项 1:_68.
25、下列程序的字符串中各单词之间有一个空格,则程序的输出结果是_。#include stdio.h#include string.hmain()char str1=“How do you do“, *p1=str1;strcpy(str1+strlen(str1)/2,“es she“);printf(“%s/n“,p1);(分数:2.00)填空项 1:_69.函数 fun的返回值是_fun(char*a,char*b)int num=0,n=0;while(*(a+num)!=/0)num+;while(bn)*(a+num)=bn;num+;n+;return num;(分数:2.00)填空项
26、 1:_下面程序的功能是:将 N行 N列二维数组中每一行的元素进行排序,第 0行从小到大排序,第 1行从大到小排序,第 2行从小到大排序,第 3行从大到小排序,例如:(分数:4.00)填空项 1:_填空项 1:_二级 C语言笔试-371 答案解析(总分:103.00,做题时间:90 分钟)一、选择题(总题数:50,分数:66.00)1.下列叙述中正确的是A) C语言中既有逻辑类型也有集合类型 B) C 语言中没有逻辑类型但有集合类型C) C语言中有逻辑类型但没有集合类型 D) C 语言中既没有逻辑类型也没有集合类型(分数:1.00)A.B.C.D. 解析:解析 在 C语言中没有逻辑类型,逻辑类
27、型用整型来表示,C 语言中没有集合类型。2.下列叙述中正确的是( )。A) 一个逻辑数据结构只能有一种存储结构B) 数据的逻辑结构属于线性结构,存储结构属于非线性结构C) 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D) 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(分数:2.00)A.B.C.D. 解析:解析 一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。故本题答案为 D) 。3.若有以下说明和定义:typedef int *INTEGE
28、R;INTEGER p,*q;以下叙述正确的是( )。A) p是整型变量 B) p 是基类型为整型的指针变量C) q是基类型为整型的指针变量 D) 程序中可用 INTEGER代替 int类型名(分数:1.00)A.B. C.D.解析:解析 本题中 INTEGER被定义为 int*的别名,故直接由它定义的类型基类型为整型的指针变量。因此,p 是基类型为 int的指针变量,q 是 int型指针的指针变量。故 4个选项中 B正确。4.为了使模块尽可能独立,要求( )。A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C) 模块的内聚程
29、度要尽量低,且各模块间的偶合程度要尽量弱D) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(分数:1.00)A.B. C.D.解析:解析 系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。综上所述,选项 B)的答案正确。5.以下程序的输出结果是 ( )void fun(float *p1,float *p2,float *s)s(float *)calloc(1,sizeof(flo
30、at);*s*p1+*p2+;main()float s21.1,2.2,b210.0,20.0,*s=a;fun(a,b,s);printf(“%5.2f/n“,* s);A) 11.10 B) 12.00 C) 21.10 D) 1.10(分数:1.00)A.B.C.D. 解析:6.将 E-R图转换到关系模式时,实体与实体间的联系可以表示成( )。A) 属性 B) 关系C) 键 D) 域(分数:1.00)A.B. C.D.解析:解析 将 E-R图转换成指定 RDBMS中的关系模式是数据库逻辑设计的主要工作。从 E-R图到关系模式的转换是比较直接的,实体和联系都可以表示成关系。7.下列关于栈
31、的描述中错误的是( )。A) 栈是先进后出的线性表 B) 栈只能顺序存储C) 栈具有记忆作用 D) 对栈的插入与删除操作中,不需要改变栈底指针(分数:1.00)A.B. C.D.解析:解析 栈是一种特殊的线性表,它只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,所以栈又称先进后出表。线性表可以顺序存储,也可以链式存储,而栈是一种线性表,也可以采用链式存储结构。8.对于现实世界中事物的特征,在实体联系模型中使用_。A) 属性描述 B) 关键字描述C) 二维表描述 D) 实体描述(分数:1.00)A. B.
32、C.D.解析:9.在 C语言系统中,假设 int类型数据占两个字节,则 double、long、unsigned int、char 类型数据所占字节数分别为( )。A) 8,2,4,1 B) 2,8,4,1C) 4,2,8,1 D) 8,4,2,1(分数:1.00)A.B.C.D. 解析:解析 在 C语言中,double 类型数据占 8个字节、long 型占 4个、unsigned int 和 int型一样占 2个、char 型占 1个。所以本题应该选择 D。10.对于建立良好的程序设计风格,下面描述正确的是( )。A) 程序应简单、清晰、可读性好 B) 符号名的命名只要符合语法即可C) 充分
33、考虑程序的执行效率 D) 程序的注释可有可无(分数:1.00)A. B.C.D.解析:解析 符号名的命名除了要符合语法之外,还应具有一定实际含义,以便理解程序功能,选项 B错误:程序设计风格强调清晰第一,效率第二,选项 C错误;程序注释能帮助读者理解程序,是提高程序可读性的重要手段,选项 D错误。11.以下不正确的叙述是( )。A) 在 C程序中,逗号运算符的优先级最低B) 在 C程序中,APH 和 aph是两个不同的变量C) 若变量 a和 b类型相同,执行了赋值表达式 a=b后 b中的值将放入 a中,而 b中的值不变D) 当从键盘输入数据时,对于整型变量只能输入整型数值,而实型变量只能输入实
34、型数值(分数:1.00)A.B.C.D. 解析:解析 在 C语言的所有运算符中,逗号运算符的优先级最低;C 语言中的字母区分大小写,所以APH和 aph是两个不同的变量;赋值表达式 a=b表示将 b的值赋给 a,而 b本身的值保持不变;当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数和整型数值等,选项D) 错。12.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。A) 循环队列 B) 栈C) 队列 D) 二叉树(分数:1.00)A.B. C.D.解析:解析 栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。可以进行插入
35、和删除运算的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,而栈底元素是最后被删除的。因此,栈是按照先进后出的原则组织数据的。13.设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是_。A) c1c2 B) c1printf (“ %d/n“,x);执行后的输出结果是 _。 A) 2 B) 1 C) 3 D) 6(分数:2.00)A.B. C.D.解析:解析 因 n=0,故!n 为真,执行语句 x-=1得 x=x-1=2-1=1;条件!m 和!x 不成立,所以 x1,正确答案为 1。16.下列叙述中不正确的是( )。A) 在 C语言中调用函数时,只能把实参
36、的值传送给形参,形参的值不能传送给实参B) 在 C的函数中,最好使用全局变量C) 外部变量可以在函数之间传递数据D) 自动变量实质上是一个函数内部的局部变量(分数:2.00)A.B. C.D.解析:解析 编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在内存不确定的情况下,最好使用全局变量。17.下列程序的输出结果是_。#include stdio. hmain ( )int a,b,c=246;a=c/100%9;
37、b=(-1)printf (“%d, %d/n“, a,b);A) 2,1 B) 3,2 C) 4,3 D) 2,-1(分数:2.00)A. B.C.D.解析:18.在下列关于二叉树的叙述中,正确的一项是A) 在二叉树中,任何一个结点的度都是 2 B) 二叉树的度为 2C) 在二叉树中至少有一个结点的度是 2 D) 一棵二叉树的度可以小于 2(分数:2.00)A.B.C.D. 解析:解析 本题考查了二叉树的基本概念。解题要点 在二叉树中,叶子节点的度是 1;当该二叉树为空树时,根节点的度为零;为非空树时,根节点的度为 2。考点链接 二叉树的基本性质。19.以下程序运行后的输出结果是_。int
38、d=1;fun(int p)static int d=d; d+=p;printf(“%d“,d) ;return d;main()int a=3; printf(“%d/n“,fun(a+fun(d);A) 699 B) 669 C) 61515 D) 6615(分数:1.00)A.B.C. D.解析:解析 静态局部变量在编译时赋初值,即只赋韧值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量 d并赋初值 1
39、,在被调函数 fun()中,定义了静态局部变量 d,初值为 5。在第一次调用函数 fun时,d 初值为 5,p 由主函数传递过来的值为 1,则 d=d+p=5+1=6,由于 d是静态局部变量,在函数调用结束后,它仍保留 d=6。再次调用 fun函数,d 的初值为 6,而由主函数传递的 p的值为 9,则此时 d=d+p=6+9=15,最后打印输出 d的值并返回主函数。20.有以下程序:#include stdio.hmain()int a=5,b=1,t;t=(a2)|b;printf(“%d/n“,t);程序运行后的输出结果是A) 21 B) 11 C) 6 D) 1(分数:1.00)A. B
40、.C.D.解析:解析 按位或运算符“|”是双目运算符,其功能是参与运算的两个数对应的二进位相或。左移运算符“”是双目运算符,其功能是把“”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补 0。将 5变换为二进制数为 101,左移 2位后为 10100,1 转换为二进制数为 00001,10100 与 00001进行或运算后为 10101,再将其转换为十进制数为 21。因此,本题答案为 A)。21.已知 i、j、k 为血型变量,若要从键盘输入 2、3、4CR,使 i、j、k 的值分别为 2、 3、4,下列正确的输入语句是( )。A) scanf(“%3d,%3
41、d,%3d“,B) scan(“%d,%d,%d“,C) scan(“%do/od%d“,D) scanf(“i%d,j%d,k%d“,(分数:1.00)A.B. C.D.解析:解析 函数 scan()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符:“输入项地址表”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。22.有下列函数定义:int fun(double a,double b) return a*b;若下列选项中所用变量都己正确定义并赋值,错误的函数调用是( )。A
42、) if(fun(x,y) B) z=fun(fun(x,y),fun(x,y);C) z=fun(fun(x,y)x,y); D) fun(x,y);(分数:2.00)A.B.C. D.解析:解析 本题考查函数调用时的参数传递。C 项中第一个参数的表达式不正确,因此不能得到正确的结果。23.下列程序执行后的输出结果是_。main()int m3=1,4,7,2,5,8,3,6,9;int i,k=2;for(i=0;i3;i+)printf(“%d“,mki);A) 456 B) 258 C) 369 D) 789(分数:1.00)A.B.C. D.解析:解析 根据二维数组的定义得出:m00
43、=1,m01=4,m02=7,m10=2,m11=5,mi2=8,m20=3,m21=6, m22=9,所以本题的输出是第 3行的值 m20,m21,m22,即 369。24.下列程序语句中,不正确的是_。A) maia()float a,b,c;scanf(“%f,%f“,i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a1i);程序运行后的输出结果是A) 012 B) 123 C) 234 D) 345(分数:1.00)A.B.C.D. 解析:解析 本题考查二维数组和指针,首先使指针 p指向二维数组的首地址,通过第一个 for循环对一维数组 p赋值,其实也就是给二
44、维数组 a赋值,a00a22分别赋以 08,所以 a10,a11,a12分别为 3,4,5。29.有以下程序:main()char a7=“a0/0a0/0“;int i,j;i=sizeof(A) ;j=strlen(A) ;printf(“%d%d/n“,i,j);程序运行后的输出结果是( )。A) 2 2 B) 7 6 C) 7 2 D) 6 2(分数:2.00)A.B.C. D.解析:解析 本题主要考查的是 c语言中的数组长度和字符串长度。数组长度指的是一个数组所占内存空间的字节数,数组长度可以通过 sizeof(c数组名,)来求得;字符串长度是指从指定内存地址开始直到碰到第一个/0字
45、符为止所经过的字符数(不包括/0字符),字符串长度可以通过字符串函数 strlen(字符串首地址值)来求得。所以本题程序运行后,变量 i中是数组 a的长度 7,变量 j中是数组 a中第一个/0字符之前的字符数 2。选项 C)符合题意。30.请选出以下程序的输出结果_。#includestdio.hsub(x,y,z)int x,y,*z;*z=y-x;main()int a,b,c;sub(10,5,A) 5,2,3 B) -5,-12,-7 C) -5,-12,-17 D) 5,-2,-7(分数:1.00)A.B. C.D.解析:解析 sub()函数的作用是将形参 y和 x的差赋给了 z指向
46、的那个内存地址,所以在sub(10,5,p=a;while(*p!=u)printf(“%c“,*p-32);p+;A)LANGUAGE B)language C)LAN D)langUAGE(分数:2.00)A.B.C. D.解析:解析 本段程序的作用是输出字符串“lanuage”中字母 u之前的字符,并将其转化为大写字母。注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放,/0,。34.下列程序的输出结果是( )。#includestdio.h#includestring.hmain()char a=“/n123/“;printf(“%d,%d/n“,strlen(a),sizeof(a);A) 5,6 B) 5,5 C) 6,6 D) 6,5(分数:2.00)A. B.C.D.解析:解析 转义字符/n表示换行,/表示反斜杠,函数 strlen()是计算字符串的长度,不包括文件结束标志(/0),函数 sizeof()统计字符串所占的字节数。35.若有下列说明和语句,已知 int型数据占 2个字节,则下列语句的输出结果是( )。struct stchar a15;int b;double c;printf(“%d“,siz