1、二级 C 语言笔试-399 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.算法的时间复杂度是指A) 算法所处理的数据量 B) 算法的执行时间C) 算法在执行过程中所需要的基本运算次数 D) 算法程序中的语句或指令条数(分数:1.00)A.B.C.D.2.数据的存储结构是指A) 存储在外存中的数据 B) 数据所占的存储空间C) 数据在计算机中的顺序存储方式 D) 数据的逻辑结构在计算机中的表示(分数:1.00)A.B.C.D.3.下列对队列的叙述正确的是A) 队列按“先进后出”原则组织数据 B) 队列属于非线性表C) 队列在队尾删除数据 D
2、) 队列按“先进先出”原则组织数据(分数:1.00)A.B.C.D.4.对长度为 n 的线性表排序,在最坏情况下,比较次数是 nlog2n 的排序方法是A) 快速排序 B) 冒泡排序 C) 直接插入排序 D) 堆排序(分数:1.00)A.B.C.D.5.下列描述中正确的是A) 软件工程只是解决软件项目的管理问题B) 软件工程主要解决软件产品的生产率问题C) 软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D) 软件工程只是解决软件开发中的技术问题(分数:1.00)A.B.C.D.6.在软件设计中,不属于过程设计工具的是A) PDL B) DFD 图 C) PAD 图 D) N-S 图
3、(分数: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.在关系数据库中,用来表示实体之间联系的是A) 二维表 B) E-R 图 C) 元组 D) 文件(分数:1.00)A.B.C.D.10.设有如下三个关系表:(分数:1.00)A.B.C.D.11.计算机高级语言程序的运行方法有编译执行和解释执行两种
4、,以下叙述中正确的是A) C 语言程序仅可以编译执行B) C 语言程序仅可以解释执行C) C 语言程序既可以编译执行又可以解释执行D) 以上说法都不对(分数:1.00)A.B.C.D.12.以下叙述中错误的是A) 用户所定义的标识符允许使用关键字B) 用户所定义的标识符应尽量做到“见名识意”C) 用户所定义的标识符中,大、小写字母代表不同标识D) 用户所定义的标识符必须以字母或下划线开头(分数:1.00)A.B.C.D.13.若有说明语句:char c=/72;,则变量 cA) 包含 1 个字符 B) 包含 2 个字符 C) 包含 3 个字符 D) 说明不合法,c 的值不确定(分数:1.00)
5、A.B.C.D.14.现有定义 int a;double b;float c;char k;,则表达式 a/b+c-k 值的类型为A) int B) double C) float D) char(分数:1.00)A.B.C.D.15.以下定义语句中正确的是A) int a=b=0; B) char A=65+1,b=b;C) float a=1,*b=b=1.1;(分数:1.00)A.B.C.D.16.若在定义语句 int a,b,c,*p=*c;之后,接着执行以下选项中的语句,则能正确执行的语句是A) scanf(“%d“,a,b,c); B) scanf(“%d%d%d“,a,b,c);
6、C) scanf(“%d“, D) scanf(“%d“,p);(分数:1.00)A.B.C.D.17.以下程序的运行结果是int k=0;void fun(int m)m+=k;k+=m;printf(“m=%d k=%d“,m,k+);main()int i=4;fun(i+);printf(“i=%d k=%d/n“,i,k);A) m=4 k=5 i=5 k=5 B) m=4 k=4 i=5 k=5C) m=4 k=4 i=4 k=5 D) m=4 k=5 i=4 k=5(分数:1.00)A.B.C.D.18.在执行下述程序时,若从键盘输入 6 和 8,则结果为main()int a,
7、b,s;scanf(“%d%d“,if(ab)s=b;s*=s;printf(“%d“,s);A) 36 B) 64 C) 48 D) 以上都不对(分数:1.00)A.B.C.D.19.有以下程序:main()int k=5,n=0;while(k0)switch(k)default:break;case 1:n+=k;case2:case 3:n+=k;k-;printf(“%d/n“,n);程序运行后的输出结果是A) 0 B) 4 C) 6 D) 7(分数:1.00)A.B.C.D.20.有以下程序:#include stdio.hmain()int x;scanf(“%d“,程序运行时,
8、输入的值在_范围才会有输出结果A) 不等于 10 的整数 B) 大于 3 且不等于 10 的整数C) 大于 3 或等于 10 的整数 D) 小于 3 的整数(分数:1.00)A.B.C.D.21.有以下程序:#include stdio.hmain()int a=1,b=0;printf(“%d,“,b=a+b);printf(“%d/n“, a=2*b);程序运行后的输出结果是A) 0,0 B) 1,0 C) 3,2 D) 1,2(分数:1.00)A.B.C.D.22.有以下程序:main()int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i
9、,j;for(i=0;i4;i+)for(j=0;j=i;j+)printf(“%4c“,);for(j=_;jj+)prinft(“%4d“numij);printf(“/n“);若要按以下形式输出数组右上半三角1 2 3 46 7 811 1216则在程序下划线处应填入的语句是A) i-1 B) i+1 C) i D) 4-i(分数:1.00)A.B.C.D.23.以下程序段中,与语句:k=ab?(bc?1:0):0;功能相同的是A) if(ab)else k=0;B) if(ab)|(bc)k=1;else k=0;C) if(a=b) k=0;else if(b=c) k=1;D) i
10、f(ab)k=1;else if(bc)k=1;else k=0;(分数:1.00)A.B.C.D.24.有以下程序:void ss(char*s,chart)while(*s)if(*s=t)*s=t-a+A;s+; main()char str1100=“abcddfefdbd“,c=d;ss(str1,c);printf(“%s/n“ ,str1);程序运行后的输出结果是A) ABCDDEFEDBD B) abcDDfefDbD C) abcAAfefAbA D) Abcddfefdbd(分数:1.00)A.B.C.D.25.现有如下程序段:#include “stdio.h“main(
11、)int k30=12,324,45,6,768,98,21,34,453,456;int count=0,i=0;while(ki)if(ki%2=0|ki%5=0) count+;i+;printf(“%d,%d/n“ ,count,i);则程序段的输出结果为A) 7,8 B) 8,8 C) 7,10 D) 8,10(分数:1.00)A.B.C.D.26.以下程序运行后的输出结果是#include string.hvoid f(char*s,char*t)char k;k=*s;*s=*t;*t=k;s+;t-;if(*s)f(s,t);main()char str10=“welcome“
12、,*p;p=str+strlen(str)/2+1;f(p,p-2);printf(“%s/n“ ,str);A) eelcomw B) weoclme C) welcome D) emoclew(分数:1.00)A.B.C.D.27.设有如下程序段:int x=2004,y=2008;printf(“%d/n“,(x,y);则以下叙述中正确的是A) 输出值为 2004B) 输出值为 2008C) 运行时产生出错信息D) 输出语句中格式说明符的个数少于输出项的个数,不能正确输出(分数:1.00)A.B.C.D.28.有以下程序:#include stdio.hvoid fun(char*c,i
13、nt d)*c=*c+1;d=d+1;priritf(“%c,%c,“,*c,d);main()char b=a,a=A;fun(printf(“%c,%c/n“,b,a);程序运行后的输出结果是A) b,B,b,A B) b,B,B,A C) a,B,B,a D) a,B,a,B(分数:1.00)A.B.C.D.29.有以下程序:#include stdio.h#include string.hmain()char a10=“abcd“;printf(“%d,% d/n“ ,strlen(a),sizeof(a);程序运行后的输出结果是A) 7,4 B) 4,10 C) 8,8 D) 10,
14、10(分数:1.00)A.B.C.D.30.若有定义 int a2 3;,则对 a 数组的第 i 行第 j 列(假设 i,j 已正确说明并赋值)元素值的正确引用为A) *(*(a+i)+j) B) (a+i)j C) *(a+i+j) D) *(a+i)+j(分数:1.00)A.B.C.D.31.有以下程序:#include stdio.hmain()char c1,c2,c3,c4,c5,c6;scanf(“%C%C%C%c“,c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf(“%c%c/n“,c5,c6);程序运行后,若从键盘
15、输入(从第 1 列开始):123 回车45678 回车则输出结果是A) 1267 B) 1256 C) 1278 D) 1245(分数:1.00)A.B.C.D.32.以下程序的运行结果是#include stdio.hint a=1;int f(int c)static int a=2;c=c+1;return(a+)+c;main()int i,k =0;for(i=0;i2;i+)int a=3;k+=f(a);k+=a;printf(“%d/n“,k);A) 17 B) 16 C) 15 D) 14(分数:1.00)A.B.C.D.33.设有定义:int n1=0,n2,*p=Char
16、 c2;NEW;以下说法正确的是A) NEW 是一个结构体变量 B) NEW 是一个结构体类型C) ST 是一个结构体类型 D) 以上说明形式非法(分数:1.00)A.B.C.D.35.有以下程序:#include stdio.h#include string.htypedef struct char name9;char sex; float score2;STU;void 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;12;i+) a.scorei=b.scorei;main
17、()STU c=“Qian“ ,f,95.0,92.0;f(c);printf(“%s,%c,%2.0f,%2.0f/n“,c.name,c.sex,c.score0,c.score1);程序的运行结果是A) Qian,f,95,92 B) Qian,m,85,90 C) Zhao,f,95,92 D) Zhao,m,85,90(分数:1.00)A.B.C.D.36.有以下程序:#include stdio.h#define N 4void fun(int aN,int b)int i;for(i=0;iN;i+) bi=aii;main()int xN=1,2,3,4,5,6,7,8,9,1
18、0,yN,i;fun(x,y);for(i=0;iN;i+) printf(“%d,“,yi);printf(“/n“);程序的运行结果是A) 1,2,3,4, B) 1,0,7,0, C) 1,4,5,9, D) 3,4,8,10,(分数:1.00)A.B.C.D.37.有以下程序:#include stdio.hint fun(int x,int y)if(x!=y) return(x+y)/2);else return(x);main()int a=4,b=5,c=6;printf(“%d/n“,fun(2*a,fun(b,c);程序运行后的输出结果是A) 3 B) 6 C) 8 D)
19、12(分数:1.00)A.B.C.D.38.若 x 是 int 型变量,且有下面的程序片段:for(x=3;x6;x+)printf(x%2)?(“*%d“):(“#%d/n“),x);上面程序片段的输出结果是A) * *3 #4* *5B) #3* *4#5C) #3*4#5D) *3#4* *5(分数:1.00)A.B.C.D.39.有以下程序:#include stdio.h#define N 5#define M N+1#define f(x)(x*M)main()int i1,i2;i1=f(2);i2=f(1+1);printf(“%d %d/n“,i1,i2);程序的运行结果是A
20、) 12 12 B) 11 7 C) 11 11 D) 12 7(分数:1.00)A.B.C.D.40.有以下程序:#include stdio.hmain()unsigned char a=8,c;c=a3;printf(“%d/n“,c);程序运行后的输出结果是A) 32 B) 16 C) 1 D) 0(分数:1.00)A.B.C.D.二、填空题(总题数:15,分数:60.00)41.对下列二叉树进行前序遍历的结果为 1。(分数:4.00)填空项 1:_42.结构化程序设计的基本原则包括 1、逐步求精、模块化和限制使用 goto 语句。(分数:4.00)填空项 1:_43.数据流图是描述数
21、据在软件中的流动和变换的过程,而对数据流图中所包含元素的定义则是 1。(分数:4.00)填空项 1:_44.在 E-R 图中,_表示实体间的联系。(分数:4.00)填空项 1:_45.在职员管理关系数据库中,存取个职员信息的数据单位是 1。(分数:4.00)填空项 1:_46.以下程序运行后的输出结果是_。main()int a,b,c;a=10; b=20; c=(a%b1)|(a/b1);printf(“%d%d%d/n“,a,b,c);(分数:4.00)填空项 1:_47.有以下程序段,且变量已正确定义和赋值。for(s=1.0,k=1;k=n;k+)s=s+1.0/(k*(k+1);p
22、rintf(“s=%f/n/n“,s);请填空,使下面程序段的功能与之完全相同s=1.0;k=1;while(_)s=s+1.0/(k*(k+1);k+;printf(“s=%f/n/n“ ,s);(分数:4.00)填空项 1:_48.以下程序的输出结果是_。#include stdio.hmain()int n=12345,d;while(n!=0) d=n%10;printf(“%d“,d); n/=10;(分数:4.00)填空项 1:_49.以下程序的输出结果是_。#include stdio.hvoid swap(int *a, int *b)int *t;t=a;a=b;b=t;ma
23、in()int i=3,j=5,*p=printf(“%d%d/n“,*p,*q);(分数:4.00)填空项 1:_50.以下 fun 函数的功能是找出具有 N 个元素的一维数组中的最小值,并作为函数值返回。请填空。(设 N已定义)int fun(int xN)int i,k=0;for(i=0;iN;i+)if(xixk)k=_;return xk;(分数:4.00)填空项 1:_51.mystrlen 函数的功能是计算 str 所指字符串的长度,并作为函数值返回。请填空。int mystrlen(char*str)int I;for(I=0; _!=/n;I+);return(I);(分数
24、:4.00)填空项 1:_52.以下程序运行后的输出结果是_。#include stdio.h#include stdlib.h#include string.hmain()char *p; int i;p=(char*)malloc(sizeof(char)*20);strcpy(p,“welcome“);for(i=6;i=0;i-) putchar(*(p+i);printf(“/n“);free(p);(分数:4.00)填空项 1:_53.设有定义“structint a;float b;charc;abc, *p_abc=p=a;p+;prinft(“%d“,*p);(分数:4.00
25、)填空项 1:_55.以下程序用来判断指定文件是否能正常打开。请填空。#include stdio.hmain()FILE *fp;if(fp=fopen(“test.txt“,“r“)=_)printf(“未能打开文件!/n“);elseprintf(“文件打开成功!/n“);(分数:4.00)填空项 1:_二级 C 语言笔试-399 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.算法的时间复杂度是指A) 算法所处理的数据量 B) 算法的执行时间C) 算法在执行过程中所需要的基本运算次数 D) 算法程序中的语句或指令条数(分数:1.00)
26、A.B.C. D.解析:解析 一个算法的时间复杂度是指执行这个算法所需的极端工作量。2.数据的存储结构是指A) 存储在外存中的数据 B) 数据所占的存储空间C) 数据在计算机中的顺序存储方式 D) 数据的逻辑结构在计算机中的表示(分数:1.00)A.B.C.D. 解析:解析 数据的存储结构也称为数据的物理结构,是数据的逻辑结构在计算机存储空间中的存放形式。3.下列对队列的叙述正确的是A) 队列按“先进后出”原则组织数据 B) 队列属于非线性表C) 队列在队尾删除数据 D) 队列按“先进先出”原则组织数据(分数:1.00)A.B.C.D. 解析:解析 队列是一种操作受限的线性表。它只允许在线性表
27、的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾(rear),允许删除的一端称为队首(front)。队列具有先进先出的特点,它是按“先进先出”的原则组织数据的。4.对长度为 n 的线性表排序,在最坏情况下,比较次数是 nlog2n 的排序方法是A) 快速排序 B) 冒泡排序 C) 直接插入排序 D) 堆排序(分数:1.00)A.B.C.D. 解析:解析 在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都是 n(n-1)/2,堆排序需要比较的次数为 nlo2n。5.下列描述中正确的是A) 软件工程只是解决软件项目的管理问题B) 软件工程主要解决软件产品的生产率问题
28、C) 软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D) 软件工程只是解决软件开发中的技术问题(分数:1.00)A.B.C. D.解析:解析 软件工程的目标是在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。6.在软件设计中,不属于过程设计工具的是A) PDL B) DFD 图 C) PAD 图 D) N-S 图(分数:1.00)A.B. C.D.解析:解析 常见的过程设计工具有图形工具(程序流程图、N-S 图、PAD 图、HIPO 图)、表格工具(判定表)和语言工具(PDL)。DFD 是
29、数据流图,是描述数据处理过程的工具。7.软件(程序)调试的目标是A) 诊断和改正程序中的错误 B) 尽可能多地发现程序中的错误C) 发现并改正程序中的所有错误 D) 确定程序中错误的性质(分数:1.00)A. B.C.D.解析:解析 软件测试与软件调试是两个不同的概念:软件测试的目的是发现错误,而软件调试的目的是发现错误或导致程序失效的原因,并修改程序以修正错误,调试是测试之后的活动。8.数据库系统的核心是A) 数据库 B) 数据库管理系统 C) 数据库管理员 D) 数据库应用系统(分数:1.00)A.B. C.D.解析:解析 数据库管理系统是一种软件系统,负责数据库中的数据组织、数据操纵、数
30、据维护、控制及保护和数据服务等,是数据库系统的核心。9.在关系数据库中,用来表示实体之间联系的是A) 二维表 B) E-R 图 C) 元组 D) 文件(分数:1.00)A. B.C.D.解析:解析 关系数据库系统采用关系模型作为数据的组织形式。在关系模型中用二维表来表示实体及实体之间的联系。10.设有如下三个关系表:(分数:1.00)A.B.C. D.解析:解析 对于两个关系的合并操作可以用笛卡儿积表示。设有 n 元关系 R 和 m 元关系 S,它们分别有 p 和 q 个元组,则 R 与 S 的笛卡儿积记为 RS,它是一个 m+n 元关系,元组个数是 pq,由题意可得,关系 T 是由关系 R
31、与关系 S 进行笛卡儿积运算得到的。11.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A) C 语言程序仅可以编译执行B) C 语言程序仅可以解释执行C) C 语言程序既可以编译执行又可以解释执行D) 以上说法都不对(分数:1.00)A. B.C.D.解析:解析 解释程序是将源程序(如 BASIC)作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。编译程序是把高级语言(如 FORTRAN、COBOL、Pascal、C 等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机执行这个目标程序,得到计算结果。12.以下叙述中错误的是A) 用户
32、所定义的标识符允许使用关键字B) 用户所定义的标识符应尽量做到“见名识意”C) 用户所定义的标识符中,大、小写字母代表不同标识D) 用户所定义的标识符必须以字母或下划线开头(分数:1.00)A. B.C.D.解析:解析 C 语言规定标识符只能由字母、数字和下划线 3 种字符组成,且第一个字符必须为字母或下划线,排除 D);用户定义标识符中大小写字母之间是有区别的,并且应尽量做到“见名识意”,排除选项 B)和 C);C 语言中还规定标识符不能为 C 语言的关键字,故选项 A)叙述错误,正确答案是选项 A)。13.若有说明语句:char c=/72;,则变量 cA) 包含 1 个字符 B) 包含
33、2 个字符 C) 包含 3 个字符 D) 说明不合法,c 的值不确定(分数:1.00)A. B.C.D.解析:解析 C 语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“/”开头的字符。其中,“/ddd”表示用 ASC码(八进制数)表示一个字符,本题中的 charc=/72即表示占一个字符的变量 c 的 ASC码值。14.现有定义 int a;double b;float c;char k;,则表达式 a/b+c-k 值的类型为A) int B) double C) float D) char(分数:1.00)A.B. C.D.解析:解析 双目运算中两边运算量类型转换规律:运算数
34、1运算数 2转换结果类型短整型长整型短整型长整型整型长整型整型长整型字符型整型字符型整型有符号整无符号整有符号整型 型 型无符号整型整型浮点型整型浮点型在 a/b 的时候,a、b 的类型不一致,根据类型转换规则,把整型转换成 double 类型,之后的加、减类似。转化规则为 char,short-int-unsigned-long-double-float。15.以下定义语句中正确的是A) int a=b=0; B) char A=65+1,b=b;C) float a=1,*b=b=1.1;(分数:1.00)A.B. C.D.解析:解析 本题考查变量的定义方法。如果要一次进行多个变量的定义,
35、则它们之间要用逗号隔开。因此选项 A)和 D)错误;在选项 C)中,变量 c 是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量 b;所以正确答案为 B)。16.若在定义语句 int a,b,c,*p=*c;之后,接着执行以下选项中的语句,则能正确执行的语句是A) scanf(“%d“,a,b,c); B) scanf(“%d%d%d“,a,b,c);C) scanf(“%d“, D) scanf(“%d“,p);(分数:1.00)A.B.C.D. 解析:解析 scanf 函数中的输入项必须是指针,只有选项 D)符合这个要求。17.以下程序的运行结果是int k=0;void fun
36、(int m)m+=k;k+=m;printf(“m=%d k=%d“,m,k+);main()int i=4;fun(i+);printf(“i=%d k=%d/n“,i,k);A) m=4 k=5 i=5 k=5 B) m=4 k=4 i=5 k=5C) m=4 k=4 i=4 k=5 D) m=4 k=5 i=4 k=5(分数:1.00)A.B. C.D.解析:解析 由于在 main()函数中,变量 i=4,所以就调用 fun(4),则输出“m=4 k=4”。然后变量 k增 1 等于 5,变量 i 增 1 等于 5,所以 main()函数的“printf(“i=%d k=%d/n“,i,
37、k);”语句输出“i=5 k=5”。18.在执行下述程序时,若从键盘输入 6 和 8,则结果为main()int a,b,s;scanf(“%d%d“,if(ab)s=b;s*=s;printf(“%d“,s);A) 36 B) 64 C) 48 D) 以上都不对(分数:1.00)A.B. C.D.解析:解析 本题中 a 的值为 6,b 的值为 8,最后 s 的值为 8,s*=s 等价于 s=s*s。19.有以下程序:main()int k=5,n=0;while(k0)switch(k)default:break;case 1:n+=k;case2:case 3:n+=k;k-;printf
38、(“%d/n“,n);程序运行后的输出结果是A) 0 B) 4 C) 6 D) 7(分数:1.00)A.B.C.D. 解析:解析 本题考查的是 switch 语句。在 switch 语句中,表达式的值与某一个 case 后面的常量表达式的值相等时,就执行此 case 后面的语句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default 后面的语句,各个 case 和 default 的出现次序不影响执行结果。所以在本题中,当k=5 和 k=4 的时候,case 都没有与其匹配的值,所以执行了 default 语句;当 k=3 时,执行“case 3: n+=k;”
39、,得 n=3,然后执行 default;当 k=2 时,执行“case 2: case 3: n+=k;”,得 n=5,然后执行 default;当 k=1 时,执行“case 1: n+=k;case 2: case3: n+=k;”,使得 n 加两次 k,得到 n=7。20.有以下程序:#include stdio.hmain()int x;scanf(“%d“,程序运行时,输入的值在_范围才会有输出结果A) 不等于 10 的整数 B) 大于 3 且不等于 10 的整数C) 大于 3 或等于 10 的整数 D) 小于 3 的整数(分数:1.00)A.B. C.D.解析:解析 ifelse
40、控制结构中,else 总是与最近的未配对的 if 匹配。本题的执行过程为:如果输入整数小于 3,则不进行任何操作,否则判断是否不等于 10,若为真则进行输出。因此程序输出的数据为大于 3,且不等于 10 的整数。21.有以下程序:#include stdio.hmain()int a=1,b=0;printf(“%d,“,b=a+b);printf(“%d/n“, a=2*b);程序运行后的输出结果是A) 0,0 B) 1,0 C) 3,2 D) 1,2(分数:1.00)A.B.C.D. 解析:解析 执行第一个 printf 语句时,b=a+b=1,所以输出 1,执行第二个 printf 语句
41、时,a=2*b=2*1=2,所以输出结果为 2。22.有以下程序:main()int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j;for(i=0;i4;i+)for(j=0;j=i;j+)printf(“%4c“,);for(j=_;jj+)prinft(“%4d“numij);printf(“/n“);若要按以下形式输出数组右上半三角1 2 3 46 7 811 1216则在程序下划线处应填入的语句是A) i-1 B) i+1 C) i D) 4-i(分数:1.00)A.B.C. D.解析:解析 此题中嵌套了两个 for 语句,第一个用来
42、输出空格,第二个用来输出数字。如此类型的输出某种格式的考题,一般是采用多重循环来解决,需要考生找出输出数据的特点,并用相对应的数学公式表达出来。23.以下程序段中,与语句:k=ab?(bc?1:0):0;功能相同的是A) if(ab)else k=0;B) if(ab)|(bc)k=1;else k=0;C) if(a=b) k=0;else if(b=c) k=1;D) if(ab)k=1;else if(bc)k=1;else k=0;(分数:1.00)A. B.C.D.解析:解析 表达式 k=ab?(bc?1:0):0 表示:如果(ab)条件为真,则 k 取值(bc?1:0),否则 k取
43、值 0;当 ab 的情况下,如果 bc,则 k 值为 1,否则为 0。所以该表达式与选项 A)功能相同。24.有以下程序:void ss(char*s,chart)while(*s)if(*s=t)*s=t-a+A;s+; main()char str1100=“abcddfefdbd“,c=d;ss(str1,c);printf(“%s/n“ ,str1);程序运行后的输出结果是A) ABCDDEFEDBD B) abcDDfefDbD C) abcAAfefAbA D) Abcddfefdbd(分数:1.00)A.B. C.D.解析:解析 在内存中,字符数据以 ASC码存储,它的存储形式与
44、整数的存储形式类似。C 语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的 ASC码进行算术运算,在本题中,s+相当于 s=s+1,即让 s 指向数组中的下一个元素。25.现有如下程序段:#include “stdio.h“main()int k30=12,324,45,6,768,98,21,34,453,456;int count=0,i=0;while(ki)if(ki%2=0|ki%5=0) count+;i+;printf(“%d,%d/n“ ,count,i);则程序段的输出结果为A) 7,8 B) 8,8 C) 7,10 D) 8,10(
45、分数:1.00)A.B.C.D. 解析:解析 在 C 语言中,定义一维数组的语句一般形式如下:类型名数组名常量表达式;一维数组的引用形式为:数组名下标表达式。count 表示能被 2 整除或被 5 整除的个数,i 则计算有多少个数组元素。26.以下程序运行后的输出结果是#include string.hvoid f(char*s,char*t)char k;k=*s;*s=*t;*t=k;s+;t-;if(*s)f(s,t);main()char str10=“welcome“,*p;p=str+strlen(str)/2+1;f(p,p-2);printf(“%s/n“ ,str);A) e
46、elcomw B) weoclme C) welcome D) emoclew(分数:1.00)A.B.C.D. 解析:解析 该程序中 f 函数的功能是交换两个位置字符的值,f 函数共调用 3 次,依次更改了字符串中 1 和 o、e 和 m、w 和 e 的值,因此更改后的字符串的值是 emoclew。27.设有如下程序段:int x=2004,y=2008;printf(“%d/n“,(x,y);则以下叙述中正确的是A) 输出值为 2004B) 输出值为 2008C) 运行时产生出错信息D) 输出语句中格式说明符的个数少于输出项的个数,不能正确输出(分数:1.00)A.B. C.D.解析:解析
47、 (x,y)考查逗号表达式,逗号运算符的结合性为从左到右,因此,最后一个表达式的值就是此逗号表达式的值,因此选项 B)正确。28.有以下程序:#include stdio.hvoid fun(char*c,int d)*c=*c+1;d=d+1;priritf(“%c,%c,“,*c,d);main()char b=a,a=A;fun(printf(“%c,%c/n“,b,a);程序运行后的输出结果是A) b,B,b,A B) b,B,B,A C) a,B,B,a D) a,B,a,B(分数:1.00)A. B.C.D.解析:解析 函数 fun 的第一个参数传指针,可以将更改后的值传回调用函数,第二个参数传值,不能将更改后的值传回调用函数,故选 A)。29.有以下程序:#include stdio.h#include string.hmain()char a10=“abcd“;printf(“%d,% d/n“ ,strlen(a),sizeof(a);程序运行后的输出结果是A) 7,4 B) 4,10 C) 8,8 D) 10,10(分数: