1、二级 C 语言笔试-409 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:68.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) 队列 B) 栈 C) 双向链表 D) 二叉树(分数:2.00)A.B.C.D.4.面向对象的设计方法与传统的
2、面向过程的方法有本质不同,它的基本原理是( )。A) 模拟现实世界中不同事物之间的联系B) 强调模拟现实世界中的算法而不强调概念C) 使用现实世界的概念抽象地思考问题,从而自然地解决问题D) 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考(分数:1.00)A.B.C.D.5.在一个 C 程序中_。A) 用户标识符中可以出现下划线和中划线(减号)B) 用户标识符中不可以出现中划线,但可以出现下划线C) 用户标识符中可以出现下划线,但不可以放在用户标识符的开头D) 用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头(分数:2.00)A.B.C.D.6.下列选项中不属于结构化
3、程序设计原则的是( )。A可封装 B自顶向下C模块化 D逐步求精(分数:1.00)A.B.C.D.7.数据库技术的根本目标是要解决数据的( )A) 存储问题 B) 共享问题 C) 安全问题 D) 保护问题(分数:2.00)A.B.C.D.8.下列叙述中错误的是A) 软件测试的目的是发现错误并改正错误B) 对被调试的程序进行“错误定位”是程序调试的必要步骤C) 程序调试通常也称为 DebugD) 软件测试应严格执行测试计划,排除测试的随意性(分数:2.00)A.B.C.D.9.设有如下三个关系表:(分数:2.00)A.B.C.D.10.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。A
4、一对一 B一对多C多对一 D多对多(分数:1.00)A.B.C.D.11.下列叙述中错误的是A) 在数据库系统中,数据的物理结构必须与逻辑结构一致B) 数据库技术的根本目标是要解决数据的共享问题C) 数据库设计是指在已有数据库管理系统的基础上建立数据库D) 数据库系统需要操作系统的支持(分数:2.00)A.B.C.D.12.视图设计一般有 3 种设计次序,下列不属于视图设计的是_。A) 自顶向下 B) 由外向内 C) 由内向外 D) 自底向上(分数:2.00)A.B.C.D.13.在一个 C 语言程序中,main( )函数A) 必须出现在所有函数之前 B) 可以在任何地方出现C) 必须出现在所
5、有函数之后 D) 必须出现在固定位置(分数:1.00)A.B.C.D.14.以下关于结构化程序设计的叙述中正确的是( )。 A) 一个结构化程序必须同时由顺序、分支、循环三种结构组成 B) 结构化程序使用 goto 语句会很便捷 C) 在 C 语言中,程序的模块化是利用函数实现的 D) 由三种基本结构构成的程序只能解决小规模的问题(分数:1.00)A.B.C.D.15.以下叙述中错误的是_。A) C 语言的可执行程序是由一系列机器指令构成的B) 用 C 语言编写的源程序不能直接在计算机上运行C) 通过编译得到的二进制目标程序需要连接才可以运行D) 在没有安装 C 语言集成开发环境的机器上不能运
6、行 C 源程序生成的.exe 文件(分数:1.00)A.B.C.D.16.下列程序的输出结果是( )。main()int a=1,b=2;printf(“%d,%d/n“,-a,+B) ;A) 1,2 B) 1,3 C) 0,2 D) 0,3(分数:2.00)A.B.C.D.17.已知 i、j、k 为 iht 型变量,若从键盘输入:1,2,3回车,使 i 的值为 1、j 的值为 2、k 的值为3,以下选项中正确的输入语句是 _。A) scanf(“%d %d %d“,int b;B=(34 else return(n+fun(n-1);main()int x;scanf(“%d“,x); x=
7、fun(x);printf(“%d/n“,x);执行程序时,给变量 X 输入 10,程序的输出结果是_。(A) 55(B) 54(C) 65(D) 45(分数:2.00)A.B.C.D.23.有以下程序main()int i=0,s=0;for(;)if(i=3 | i=5)continue;if(i=6)break;i+;s+=i;printf(“%d/n“,s);程序运行后的输出结果是_。A) 10 B) 13 C) 21 D) 程序进入死循环(分数:1.00)A.B.C.D.24.有以下程序fun(int x,int y)return(x+y);main()int a=1,b=2,c=3
8、,sum;sum=fun(a+,b+,a+b),c+);printf(“%d“,sum);执行后的输出结果是_。(A) 6(B) 7(C) 8(D) 9(分数:2.00)A.B.C.D.25.在嵌套使用 if 语句时,C 语言规定 else 总是( )。A) 和之前与其具有相同缩进位置的 if 配对B) 和之前与其最近的 if 配对C) 和之前与其最近的且不带 else 的 if 配对D) 和之前的第一个 if 配对(分数:2.00)A.B.C.D.26.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。A) 函数调用可以作为独立的语句存在 B) 函数调用可以作为一个函数的实
9、参C) 函数调用可以出现在表达式中 D) 函数调用可以作为一个函数的形参(分数:1.00)A.B.C.D.27.设有定义:int A,*pA=,以下 scanf 语句中能正确为变量 A 读入的数据是 _。A) scanf (“%d“,pA) ; B) scanf (“%d“,A) ;C) scanf (“%d“, D) scanf (“%d“,*pA) ;(分数:2.00)A.B.C.D.28.有以下程序:struct STUchar name10; int num; float TotalScore; ;void f(struct STU *p)struct STU s2=“SunDan“,
10、 20044, 550, “Penghua“, 20045, 537, *q=s;+p; +q; *p=*q;main()struct STU s3=“YangSan“, 20041, 703, “LiSiGuo“, 20042, 580;f(s);printf(“ % s % d % 3.0f/n“, s1. name, s1. num, s1. TotalScore);程序运行后的输出结果是_。A) SunDan 20044 580 B) Penghua 20045 537C) LiSiGUO 20042 580 D) SunDan 20041 703(分数:2.00)A.B.C.D.29
11、.下面程序的输出是_。mare()int x=3 y=6,a=0;while(x+!=(y=1)a+=1;if(yx)break;printf(“x=%d,y=%d,a=%d/n“,x,y,a);A) x=4,y=4,a=1 B) x=5,y=5,a=1C) x=5,y=4,a=3 D) x=5,y=4,a=1(分数:2.00)A.B.C.D.30.有以下程序: #includestdio.h #define N 8 void fun(int*x,int i) *x=*(x+i)+1; main() int aN=1,2,3,4,5,6,7,8,i; fun(a,2); for(i=0;iN/
12、2;i+) printf(“%d“,ai); printf(“/n“); 程序运行后的输出结果是( )。 A) 1 3 1 3 B) 3 2 3 4 C) 4 2 3 4 D) 1 2 3 4(分数:2.00)A.B.C.D.31.在以下程序中,判断 ij 共执行的次数是main( )int i=0, j=10,k=2,s=0;for(;)i+=k:if(ij)printf(“%d“,s);break;s+=i:A) 4 B) 7 C) 5 D) 6(分数:2.00)A.B.C.D.32.设中为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为 ( )。A) EOF
13、 B) 非 0 值 C) 0 D) NULL(分数:2.00)A.B.C.D.33.有以下程序#include stdio.hintf(int x)int y;if(x=0|x=1) return(3);y=x*x-f(x-2);return y;main()int z;z=f(3); printf(“%d/n“,z);程序的运行结果是A) 0 B) 9 C) 6 D) 8(分数:2.00)A.B.C.D.34.有以下程序#includestdio.hintt b=2;int fun(int*k)b=*k+b;return(b);main()int a10=1,2,3,4,5,6,7,8,i;
14、for(i=2;i4;i+) b=fun( printf(“%d“,b);print(“/n“);程序运行后的输出结果是_。A) 10 12 B) 8 10 C) 10 28 D) 10 16(分数:2.00)A.B.C.D.35.有以下程序fun(int x)int p;if(x=0|x=1)return(3);p=x-fun(x-2);return p;main()printf(“%d/n“,fun(7);程序执行后的输出结果是( )。A7 B3 C2 D0(分数:1.00)A.B.C.D.36.下列说法错误的是( )。A) 下列结构体定义时,占据了 5 个字节的空间struct stud
15、entint num;int age;char sex;B) 结构体的成员名可以与程序中的变量名相同C) 对结构体中的成员可以单独使用,它的作用相当于普通变量D) 结构体可以嵌套定义(分数:2.00)A.B.C.D.37.若以“a+”方式打开一个已存在的文件,则下列叙述正确的是( )A) 文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进行添加或读操作B) 文件打开时,原有文件内容不被删除,只能进行读操作C) 文件打开时,原有文件内容被删除,只能进行写操作D) 以上三种说法都不正确(分数:1.00)A.B.C.D.38.有以下程序:#include stdio.hstruct ST
16、Uchar name10;int num;void f1(struct STU c)struct STU b=“LiSiGuo“,2042;c=b;void f2(struct STU *c)struct STU b=“SanDan“,2044;*c=b;main()struct STU a=“YangSan“,2041, b=“WangYin“,2043;f1(a); f2(printf(“%d%d/n“,a.num,b.hum);执行后的输出结果是( )。A) 2041 2044 B) 2041 2043 C) 2042 2044 D) 2042 2043(分数:1.00)A.B.C.D.
17、39.若以“叶”方式打开一个己存在的文件,则下列叙述正确的是( )。A) 文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进行添加或读操作B) 文件打开时,原有文件内容不被删除,只能进行读操作C) 文件打开时,原有文件内容被删除,只能进行写操作D) 以上 3 种说法都不正确(分数:2.00)A.B.C.D.40.若有下面的说明和定义:struct testint m1;char m2;float m3;union uu char ul5; int u22; ua;myaa;则 sizeof(struct test)的值是( )。A) 12 B) 16 C) 14 D) 9(分数:2
18、.00)A.B.C.D.二、填空题(总题数:15,分数:32.00)41.按照软件测试的一般步骤,集成测试应在U /U测试之后进行。(分数:2.00)填空项 1:_42.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 1 和选择排序。(分数:4.00)填空项 1:_43.对软件设计的最小单位(模块或程序单元)进行的测试通常称为_测试。(分数:2.00)填空项 1:_44.在数据库系统中,实现各种数据管理功能的核心软件称为 1。(分数:2.00)填空项 1:_45.函数 fun 的返回值是U /U。fun(char *a,char *b)int num=0,n=0;while(
19、*(a+num)!=/0)num+;while(bn) *(a+num)=bn;num+;n+;return num;(分数:2.00)填空项 1:_46.以下程序运行后的输出结果是U /U。#include stdio.hmain()char m;m=B+32;printf(“%c/n“,m);(分数:2.00)填空项 1:_47.下列程序的运行结果是_。main()int x=1,y=2,z=3;printf(“%d,“,xy?y:x);printf(“%d,“,zy?x+:y+);printf(“%d,%d“,x,y);(分数:2.00)填空项 1:_48.以下程序的输出结果是_。mai
20、n()char*p=“BOOL“,“OPK“,“H“,“SP:,;for(i=3;i0;i-,i-)printf(“%c“,*pi);printf(“/n“);(分数:2.00)填空项 1:_49.以下程序的输出结果是_。#includestdio.hmain()int n=12345,d;while(n!=0)d=n %10;printf(“%d“,d);n/=10;(分数:2.00)填空项 1:_50.以下程序的功能是:求出数组 x 中各相邻两个元素的和,依次存放到 a 数组中,然后输出请填空。main()int x10,a9,I;for(i=0;i10;i+)scanf(“%d“,x(i
21、);for(i=1;i10;i+)ai-1=xi+_;for(i=0;i9;i+)printf(“%d“,ai);printf(“/n“);(分数:2.00)填空项 1:_51.下列程序的功能:对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。#includestdio.h#includectype.hmain()char c;int a,s=0;while(_)if(isdigit(c)a=c-0;s+=a;printf(“s=%d“,s);(分数:2.00)填空项 1:_52.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。#includest
22、dio.h#includectype.hmain()char c;int a,s=0;while(_)if(isdigit(C) )a=c-0;s+=a;printf(“s=%d“,s);(分数:2.00)填空项 1:_53.下列程序的运行结果是_。main()int s=0,i=1;while(s=10)s=s+i*i;i+;printf(“%d“,-i);(分数:2.00)填空项 1:_54.以下程序运行后的输出结果是_。#includestring.hvoid fun(char*s,int p,int k)int i;for(i=P;ik-1;i+)si=si+2;main()char
23、s=“abcdefg“;fun(s,3,strlen(s);puts(s);(分数:2.00)填空项 1:_55.以下程序运行后的输出结果是U /U。main()char a=“Language“, b=“Programe“;char * p1, * p2;int k;p1=a; p2=b;for(k=0; k=7; k+)if(*(p1+k)=*(p2+k)printf(“%c“, *(p1+k);(分数:2.00)填空项 1:_二级 C 语言笔试-409 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:68.00)1.程序流程图中带有箭头的线段表示的是A
24、) 图元关系 B) 数据流 C) 控制流 D) 调用关系(分数:2.00)A.B.C. D.解析:解析 程序流程图是人们对解决问题的方法、思路或算法的一种图形方式的描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容;流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流;带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。2.算法的空间复杂度是指( )A) 算法程序的长度 B) 算法程序中的指令条数C) 算法程序所占的存储空间 D) 算法执行过程中所需要的存储空间(分数:2.00)A.
25、B.C.D. 解析:解析 一个算法的空间复杂度,一般是指执行这个算法所需的存储空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间及算法执行过程中所需要的额外空间。3.按照“先进后出”原则组织数据的数据结构是( )。A) 队列 B) 栈 C) 双向链表 D) 二叉树(分数:2.00)A.B. C.D.解析:解析 栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的,是按先进后出的原则组织数据的。4.面向对象的设计方法与传统的面向过程的方法有
26、本质不同,它的基本原理是( )。A) 模拟现实世界中不同事物之间的联系B) 强调模拟现实世界中的算法而不强调概念C) 使用现实世界的概念抽象地思考问题,从而自然地解决问题D) 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考(分数:1.00)A.B.C. D.解析:解析 面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是,使用现实世界的概念抽象地思考问题,从而自然地解决问题。它强调模拟现实世界中的概念,而不强调算法,鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。5.在一个 C 程序中_。A) 用户标识符中可以出现下划线和中划线(减号)B) 用户标识符中不可以
27、出现中划线,但可以出现下划线C) 用户标识符中可以出现下划线,但不可以放在用户标识符的开头D) 用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头(分数:2.00)A.B. C.D.解析:解析 C 语言中标识符的命名规则为:标识符由数字、字母、下划线组成;标识符的首字符必须为字母或下划线;标识符不能为 C 语言的保留字。C 语言中英文字母区分大小写,即 A 与 a 表示不同的标识符。6.下列选项中不属于结构化程序设计原则的是( )。A可封装 B自顶向下C模块化 D逐步求精(分数:1.00)A. B.C.D.解析:解析 结构化程序设计的主要原则概括为自顶向下,逐步求精,限制使用 G
28、OTO 语句。7.数据库技术的根本目标是要解决数据的( )A) 存储问题 B) 共享问题 C) 安全问题 D) 保护问题(分数:2.00)A.B. C.D.解析:解析 在数据库系统中,需要对数据进行集中、统一的管理,以达到被多个应用程序共享的目标。8.下列叙述中错误的是A) 软件测试的目的是发现错误并改正错误B) 对被调试的程序进行“错误定位”是程序调试的必要步骤C) 程序调试通常也称为 DebugD) 软件测试应严格执行测试计划,排除测试的随意性(分数:2.00)A. B.C.D.解析:解析 软件测试的目的是暴露错误,评价程序的可靠性。软件调试的目的是发现错误的位置,并改正错误。软件测试和调
29、试不是同一个概念。9.设有如下三个关系表:(分数:2.00)A.B.C. D.解析:解析 广义笛卡儿积():设关系 R 和 S 的属性个数分别为 n、m,则 R 和 S 的广义笛卡儿积是一个有(n+m)列的元组的集合。每个元组的前 n 列来自 R 的一个元组,后 m 列来自 S 的一个元组,记为RS。10.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。A一对一 B一对多C多对一 D多对多(分数:1.00)A.B. C.D.解析:解析 两个实体间的联系可以分为三种:一对一、一对多或多对一、多对多。由于一间宿舍可以住多个学生,所以它们的联系是一对多联系。11.下列叙述中错误的是A) 在
30、数据库系统中,数据的物理结构必须与逻辑结构一致B) 数据库技术的根本目标是要解决数据的共享问题C) 数据库设计是指在已有数据库管理系统的基础上建立数据库D) 数据库系统需要操作系统的支持(分数:2.00)A. B.C.D.解析:解析 数据库设计(Database Design)是指根据用户的需求,在某一具体的数据库管理系统上设计数据库的结构并建立数据库的过程;数据库技术的根本目标是要解决数据共享的问题;数据库需要操作系统的支持;数据的物理结构又称数据的存储结构,就是数据元素在计算机存储器中的表示及其配置。数据的逻辑结构是指数据元素之间的逻辑关系,它是数据在用户或程序员面前表现的方式。在数据库系
31、统中,数据的物理结构不一定与逻辑结构一致。12.视图设计一般有 3 种设计次序,下列不属于视图设计的是_。A) 自顶向下 B) 由外向内 C) 由内向外 D) 自底向上(分数:2.00)A.B. C.D.解析:评析 视图设计一般有 3 种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。13.在一个 C 语言程序中,main( )函数A) 必须出现在所有函数之前 B) 可以在任何地方出现C) 必须出现在所有函数之后 D) 必须出现在固定位置(分数:1.00)A.B. C.D.解析:解析 C 语言规定,
32、main 函数在程序中的位置是任意的。14.以下关于结构化程序设计的叙述中正确的是( )。 A) 一个结构化程序必须同时由顺序、分支、循环三种结构组成 B) 结构化程序使用 goto 语句会很便捷 C) 在 C 语言中,程序的模块化是利用函数实现的 D) 由三种基本结构构成的程序只能解决小规模的问题(分数:1.00)A.B.C. D.解析:解析 C 语言是结构化程序设计语言,顺序结构、选择结构、循环结构是结构化程序设计的种基本结构,研究证明任何程序都可以由这三种基本结构组成。但是程序可以包含一种或者几种结构,不是必须包含全部三种结构。自从提倡结构化设计以来,goto 就成了有争议的语句。首先,
33、由于 goto 语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto 语句经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。Goto 语句的使用会使程序容易发生错误并且也不易阅读,所以应避免使用。由三种基本结构构成的程序几乎能解决大部分问题。15.以下叙述中错误的是_。A) C 语言的可执行程序是由一系列机器指令构成的B) 用 C 语言编写的源程序不能直接在计算机上运行C) 通过编译得到的二进制目标程序需要连接才可以运行D) 在没有安装 C 语言集成开发环境的机器上不能运行 C 源程序生成的.exe 文件(分数:1.00)A.B.C.D. 解
34、析:解析 C 语言的可执行程序是由一系列机器指令组成的,用 C 语言编写的源程序必须经过编译生成二进制目标代码,再经过连接才能运行,并且可以脱离 C 语言集成开发环境。16.下列程序的输出结果是( )。main()int a=1,b=2;printf(“%d,%d/n“,-a,+B) ;A) 1,2 B) 1,3 C) 0,2 D) 0,3(分数:2.00)A.B.C.D. 解析:解析 本题主要考查自加(+)、自减(-)运算符的使用。“+i,-i”在使用 i 之前,先使 i 的值加 1 或者减 1,然后再使用 i 此时的值参与运算:“i+,i-”是在使用 i 参与表达式运算之后,再使 i的值加
35、 1 或者减 1。本题中-a 和料 b 是先执行 a 减 1 和 b 加 1 操作,再输出表达式的值。17.已知 i、j、k 为 iht 型变量,若从键盘输入:1,2,3回车,使 i 的值为 1、j 的值为 2、k 的值为3,以下选项中正确的输入语句是 _。A) scanf(“%d %d %d“,int b;B=(34 else return(n+fun(n-1);main()int x;scanf(“%d“,x); x=fun(x);printf(“%d/n“,x);执行程序时,给变量 X 输入 10,程序的输出结果是_。(A) 55(B) 54(C) 65(D) 45(分数:2.00)A.
36、 B.C.D.解析:23.有以下程序main()int i=0,s=0;for(;)if(i=3 | i=5)continue;if(i=6)break;i+;s+=i;printf(“%d/n“,s);程序运行后的输出结果是_。A) 10 B) 13 C) 21 D) 程序进入死循环(分数:1.00)A.B.C.D. 解析:解析 本题考查了 break 和 continue 的语法。break 是退出循环语句往下执行,而 continue 是退出此次循环,进行下次循环。在题目中,i 的值初始化为 0,因此在第一个 if 的判断处是不满足的,所以执行第二个 if 语句,同样也是不满足的,直到
37、i 的值变成了 3,满足第一个 if 的判断,此时退出当前循环,执行下次循环,因此,i 的值并没有改变,仍然是 3,从而进入死循环。24.有以下程序fun(int x,int y)return(x+y);main()int a=1,b=2,c=3,sum;sum=fun(a+,b+,a+b),c+);printf(“%d“,sum);执行后的输出结果是_。(A) 6(B) 7(C) 8(D) 9(分数:2.00)A.B.C. D.解析:25.在嵌套使用 if 语句时,C 语言规定 else 总是( )。A) 和之前与其具有相同缩进位置的 if 配对B) 和之前与其最近的 if 配对C) 和之前
38、与其最近的且不带 else 的 if 配对D) 和之前的第一个 if 配对(分数:2.00)A.B.C. D.解析:解析 C 语言的语法规定:else 子句总是与前面最近的不带 else 的 if 相结合,与书写格式无关。所以选项 C)为正确答案。26.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。A) 函数调用可以作为独立的语句存在 B) 函数调用可以作为一个函数的实参C) 函数调用可以出现在表达式中 D) 函数调用可以作为一个函数的形参(分数:1.00)A.B.C.D. 解析:解析 本题考查函数的调用。在有参函数调用中,是将主调函数的实参值传给被调函数的形参。按函数在
39、程序中出现的位置来分,有以下三种函数调用形式:函数调用作为一条语句。例如:fun();这时不要求函数带回值,只要求函数完成一定的操作。故选项A)正确。函数出现在表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=5*max(a,b);函数 max 是表达式的一部分,将其值乘以 5 后赋给 c。故选项 C)正确。函数调用作为一个函数的实参,例如:m=max(a,max(b,c);其中 max(b,c)是一次函数调用,它的值作为 max 另一次调用的实参。故选项 B)正确。函数调用不可作为一个函数的形参,因为函数调用参数的数据传递是单向传递,即实参传给形参
40、,不能由形参传给实参。故选项 D)错误。27.设有定义:int A,*pA=,以下 scanf 语句中能正确为变量 A 读入的数据是 _。A) scanf (“%d“,pA) ; B) scanf (“%d“,A) ;C) scanf (“%d“, D) scanf (“%d“,*pA) ;(分数:2.00)A. B.C.D.解析:解析 选项 B 中不是变量 A 的地址,错误;选项 C 是指针 pA 的地址,错误;选项 D 中*pA 表示变量 A 的值,错误。28.有以下程序:struct STUchar name10; int num; float TotalScore; ;void f(s
41、truct STU *p)struct STU s2=“SunDan“, 20044, 550, “Penghua“, 20045, 537, *q=s;+p; +q; *p=*q;main()struct STU s3=“YangSan“, 20041, 703, “LiSiGuo“, 20042, 580;f(s);printf(“ % s % d % 3.0f/n“, s1. name, s1. num, s1. TotalScore);程序运行后的输出结果是_。A) SunDan 20044 580 B) Penghua 20045 537C) LiSiGUO 20042 580 D)
42、 SunDan 20041 703(分数:2.00)A.B. C.D.解析:解析 f 函数用了显式传地址的方式,因此主函数中的 s 值发生了变化。29.下面程序的输出是_。mare()int x=3 y=6,a=0;while(x+!=(y=1)a+=1;if(yx)break;printf(“x=%d,y=%d,a=%d/n“,x,y,a);A) x=4,y=4,a=1 B) x=5,y=5,a=1C) x=5,y=4,a=3 D) x=5,y=4,a=1(分数:2.00)A.B.C.D. 解析:评析 注意的是 x+中 x 值的引用时,这里应当是先引用,后自加,具体执行过程如下:第一次whi
43、le 循环:条件为真,执行 a=a+1=1 此时,x 的值已为 4,判断 yx 不成立,继续抽行循环;第二次while 循环:条件为假,此时 x 的值已为 5,退出 while 循环,执行 printf。30.有以下程序: #includestdio.h #define N 8 void fun(int*x,int i) *x=*(x+i)+1; main() int aN=1,2,3,4,5,6,7,8,i; fun(a,2); for(i=0;iN/2;i+) printf(“%d“,ai); printf(“/n“); 程序运行后的输出结果是( )。 A) 1 3 1 3 B) 3 2
44、3 4 C) 4 2 3 4 D) 1 2 3 4(分数:2.00)A.B.C. D.解析:解析 函数 fun(int*x,int i)的功能是把数组元素 xi的值加 1 赋给 x0。所以在主函数中执行 fun(a,2)后,数组元数 a0的值等于 4。然后在 for 循环语句中,输出数组 a 中的前 4 个元素的值,分别是 4,2,3,4。31.在以下程序中,判断 ij 共执行的次数是main( )int i=0, j=10,k=2,s=0;for(;)i+=k:if(ij)printf(“%d“,s);break;s+=i:A) 4 B) 7 C) 5 D) 6(分数:2.00)A.B.C.
45、D. 解析:解析 本题涉及 break 语句,重点是循环次数的判定。本题的循环由于无出口,只能借助 break语句终止。题目要求说明判断 ij 的执行次数,只需考查经过 i+=k 运算如何累计 i 的值,i 值分别是i=2,4,6,8,10,12 时,判断 ij 为真,程序输出 s 的值并结束,共循环 6 次。32.设中为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为 ( )。A) EOF B) 非 0 值 C) 0 D) NULL(分数:2.00)A.B. C.D.解析:解析 ANSIC 提供的 feof 函数的功能是判断 fp 所指的文件的位置是否已达到文件
46、尾,如果达到文件尾,则 feof 函数的值为 1,否则为 0,表示文件尚未结束。33.有以下程序#include stdio.hintf(int x)int y;if(x=0|x=1) return(3);y=x*x-f(x-2);return y;main()int z;z=f(3); printf(“%d/n“,z);程序的运行结果是A) 0 B) 9 C) 6 D) 8(分数:2.00)A.B.C. D.解析:解析 函数 int f(int x)是一个递归函数调用,当 x 的值等于 0 或 1 时,函数值等于 3,其他情况下 y=x2-f(x-2),所以在主函数中执行语句 z=f(3)时
47、,y=3*3-f(3-2)=9=f(1)=9-3=6。34.有以下程序#includestdio.hintt b=2;int fun(int*k)b=*k+b;return(b);main()int a10=1,2,3,4,5,6,7,8,i;for(i=2;i4;i+) b=fun( printf(“%d“,b);print(“/n“);程序运行后的输出结果是_。A) 10 12 B) 8 10 C) 10 28 D) 10 16(分数:2.00)A.B.C. D.解析:评析 程序在执行 for 循环中,第次调用 fun()函数时,因为变量 i 的值为 2,所以”,即b=3+2=5,从被调函数中返回的值为 5,此时全局变量 b 的值也变为 5,所以由 main()函数中执行语句“b=fun(”的结果 b=5+5=10,因此第次输出 b 的值为 10;第二次调用时变量 i 的值为 3,调用 fun 函数的返回值