二级C语言05年4月至08年4月笔试真题及答案(最新修订版)

更新时间:2024-04-26 20:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

二级C语言专业助考论坛:2C在线 网址:http://www.2conline.cn

二级C语言2005年4月考试试卷

一、选择题 ((1)~(10)每小题 2 分 ,(11)~(50)每小题 1 分 , 共 60 分) 下列各题 A)、B)、C)、D)四个选项中, 只有一个选项是正确的。 01) 数据的存储结构是指

A)存储在外存中的数据 B)数据所占的存储空间量

C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D

02) 下列关于栈的描述中错误的是

A)栈是先进后出的线性表 B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中, 不需要改变栈底指针 答案:B

03) 对于长度为n的线性表, 在最坏情况下, 下列各排序法所对应的比较次数中正确的是 A)冒泡排序为 n/2 B)冒泡排序为 n C)快速排序为 n D)快速排序为 n(n-1)/2 答案:D

04) 对长度为n的线性表进行顺序查找, 在最坏情况下所需要的比较次数为 A)

B)n/2 C)n D)n+1

答案:C

05) 下列对于线性链表的描述中正确的是

A)存储空间不一定是连续, 且各元素的存储顺序是任意的

B)存储空间不一定是连续, 且前件元素一定存储在后件元素的前面 C)存储空间必须连续, 且前件元素一定存储在后件元素的前面 D)存储空间必须连续, 且各元素的存储顺序是任意的 答案:A

06) 下列对于软件测试的描述中正确的是

A)软件测试的目的是证明程序是否正确 B)软件测试的目的是使程序运行结果正确

C)软件测试的目的是尽可能多地发现程序中的错误 D)软件测试的目的是使程序符合结构化原则 答案:C

07) 为了使模块尽可能独立, 要求

A)模块的内聚程度要尽量高, 且各模块间的耦合程度要尽量强 B)模块的内聚程度要尽量高, 且各模块间的耦合程度要尽量弱 C)模块的内聚程度要尽量低, 且各模块间的耦合程度要尽量弱 D)模块的内聚程度要尽量低, 且各模块间的耦合程度要尽量强 答案:B

08) 下列描述中正确的是

A)程序就是软件 B)软件开发不受计算机系统的限制

C)软件既是逻辑实体, 又是物理实体 D)软件是程序、数据与相关文档的集合 答案:D

09) 数据独立性是数据库技术的重要特点之一。所谓数据独立性是指 A)数据与程序独立存放 B)不同的数据被存放在不同的文件中

C)不同的数据只能被对应的应用程序所使用 D)以上三种说法都不对

答案:D

10) 用树形结构表示实体之间联系的模型是

A)关系模型 B)网状模型 C)层次模型 D)以上三个都是 答案:C

11) 算法具有五个特性, 以下选项中不属于算法特性的是 A)有穷性 B)简洁性 C)可行性 D)确定性 答案:B

12) 以下选项中可作为C语言合法常量的是 A)-80. B)-080 C)-8e1.0 D)-80.0e 答案:A

13) 以下叙述中正确的是

A)用C程序实现的算法必须要有输入和输出操作

B)用C程序实现的算法可以没有输出但必须要有输入 C)用C程序实现的算法可以没有输入但必须要有输出 D)用C程序实现的算法可以既没有输入也没有输出 答案:C

14) 以下不能定义为用户标识符是 A)Main B)_0 C)_int D)sizeof 答案:D

15) 以下选项中, 不能作为合法常量的是

A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 答案:B

16) 数字字符0的ASCII值为48, 若有以下程序 main()

{ char a='1',b='2';

printf(\ }

程序运行后的输出结果是

A)3,2 B)50,2 C)2,2 D)2,50 答案:C

17) 有以下程序 main()

{ int m=12,n=34;

printf(\ }

程序运行后的输出结果是

A)12353514 B)12353513 C)12343514 D)12343513 答案:A

18) 有定义语句: int b;char c[10];, 则正确的输入语句是

A)scanf(\D)scanf(\ 答案:B

19) 有以下程序 main()

{ int m,n,p;

scanf(\ printf(\

}

若想从键盘上输入数据, 使变量m中的值为123, n中的值为456, p中的值为789, 则正确的输入是 A)m=123n=456p=789 B)m=123 n=456 p=789 C)m=123,n=456,p=789 D)123 456 789 答案:A

20) 有以下程序 main()

{ int a,b,d=25; a=d / 10 % 9; b=a&&(-1);

printf(\ }

程序运行后的输出结果是

A)6,1 B)2,1 C)6,0 D)2,0 答案:B 21) 有以下程序 main()

{ int i=1,j=2,k=3;

if(i++==1 && (++j==3 || k++==3)) printf((\ }

程序运行后的输出结果是

A)1 2 3 B)2 3 4 C)2 2 3 D)2 3 3 答案:D

22) 若整型变量a、b、c、d中的值依次为 :1、4、3、2。则条件表达式 a

23) 有以下程序 main()

{ int p[8]={11,12,13,14,15,16,17,18},i=0,j=0; while(i++<7) if(p[i] % 2) j+=p[i]; printf(\ }

程序运行后的输出结果是 A)42 B)45 C)56 D)60 答案:B

24) 有以下程序 main()

{ char a[7]=\ i=sizeof(a); j=strlen(a); printf(\ }

程序运行后的输出结果是

A)2 2 B)7 6 C)7 2 D)6 2 答案:C

25) 以下能正确定义一维数组的选项是

A)int a[5]={0,1,2,3,4,5}; B)char a[]={0,1,2,3,4,5}; C)char a={'A','B','C'}; D)int a[5]=\ 答案:B

26) 有以下程序

int f1(int x,int y){ return x>y?x:y; } int f2(int x,int y){ return x>y?y:x; } main()

{ int a=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f

printf(\ }

程序运行后的输出结果是

A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7 答案:A

27) 已有定义: char a[]=\以下叙述中正确的是 A)数组 a 和 b 的长度相同 B)a 数组长度小于 b 数组长度 C)a 数组长度大于 b 数组长度 D)上述说法都不对 答案:C

28) 有以下程序

void f(int *x, int *y) { int t;

t=*x;*x=*y;*y=t; }

main()

{ int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a; q=&a[7]; while (p

{ f(p,q); p++; q--; }

for(i=0;i<8;i++) printf(\ }

程序运行后的输出结果是

A)8,2,3,4,5,6,7,1, B)5,6,7,8,1,2,3,4, C)1,2,3,4,5,6,7,8, D)8,7,6,5,4,3,2,1, 答案:D

29) 有以下程序 main()

{ int a[3][3],*p,i; p=&a[0][0];

for(i=0;i<9;i++) p[i]=i;

for(i=0;i<3;i++) printf(\ }

程序运行后的输出结果是

A)0 1 2 B)1 2 3 C)2 3 4 D)3 4 5 答案:D

30) 以下叙述中错误的是

A)对于double类型数组, 不可以直接用数组名对数组进行整体输入或输出 B)数组名代表的是数组所占存储区的首地址, 其值不可改变

C)当程序执行中, 数组元素的下标超出所定义的下标范围时, 系统将给出“下标越界”的出错信息 D)可以通过赋初值的方式确定数组元素的个数 答案:C

31) 有以下程序

#define N 20

fun(int a[], int n, int m) { int i,j;

for(i=m;i>=n;i--) a[i+1]=a[i]; }

main()

{ int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9);

for(i=0;i<5;i++) printf(\ }

程序运行后的输出结果是

A)10234 B)12344 C)12334 D)12234 答案:C

32) 有以下程序 main()

{ int a[3][2]={0},(*ptr)[2],i,j; for(i=0;i<2;i++)

{ ptr=a+i; scanf(\ for(i=0;i<3;i++)

{ for j=0;j<2;j++) printf(\ printf(\ } }

若运行时输入 :1 2 3 <回车>, 则输出结果为 A)产生错误信息 B)1 0 2 0 0 0 C)1 2 3 0 0 0 D)1 0 2 0 3 0

答案:B

33) 有以下程序

prt(int *m,int n) { int i;

for(i=0;i

main()

{ int a[]={1,2,3,4,5},i; prt(a,5);

for(i=0;i<5;i++) printf(\ }

程序运行后的输出结果是

A)1,2,3,4,5, B)2,3,4,5,6, C)3,4,5,6,7, D)2,3,4,5,1,

答案:B

34) 有以下程序 main()

{ int a[]={1,2,3,4,5,6,7,8,9,0},*p; for(p=a;p

程序运行后的输出结果是

A)1,2,3,4,5,6,7,8,9,0, B)2,3,4,5,6,7,8,9,10,1, C)0,1,2,3,4,5,6,7,8,9, D)1,1,1,1,1,1,1,1,1,1, 答案:A

35) 有以下程序 #define P 3

void F(int x){ return (P*x*x); } main()

{ printf(\程序运行后的输出结果是

A)192 B)29 C)25 D)编译出错 答案:D

36) 有以下程序 main()

{ int c=35; printf(\程序运行后的输出结果是 A)0 B)70 C)35 D)1 答案:C

37) 以下叙述中正确的是

A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令 C)宏名必须用大写字母表示 D)宏替换不占用程序的运行时间 答案:D

38) 若有以下说明和定义 union dt

{int a; char b; double c;} data; 以下叙述中错误的是

A)data的每个成员起始地址都相同

B)变量data所占内存字节数与成员c所占字节数相等

C)程序段: data.a=5;printf(\输出结果为 5.000000 D)data可以作为函数的实参 答案:C

39) 以下语句或语句组中, 能正确进行字符串赋值的是

A)char *sp; *sp=\ C)char s[10]; *s=\ 答案:D

40) 设有如下说明 typedef struct ST

{ long a; int b; char c[2];} NEW; 则下面叙述中正确的是

A)以上的说明形式非法 B)ST是一个结构体类型 C)NEW是一个结构体类型 D)NEW是一个结构体变量

答案:C

41) 有以下程序 main()

{ int a=1,b;

for(b=1;b<=10;b++) { if(a>=8) break;

if(a%2==1) {a+=5; continue;} a-=3; }

printf(\ }

程序运行后的输出结果是 A)3 B)4 C)5 D)6 答案:B

42) 有以下程序 main()

{ char s[]=\ p=s;

printf(\ }

程序运行后的输出结果是 A)15 B)16 C)12 D)59 答案:A

43) 有以下函数

fun(char *a, char *b)

{ while((*a!='\\0')&&(*b!='\\0')&&(*a==*b)) {a++;b++;}

return (*a-*b); }

该函数的功能是

A)计算a和b所指字符串的长度之差 B)将b所指字符串复制到a所指字符串中 C)将b所指字符串连接到a所指字符串后面 D)比较a和b所指字符串的大小 答案:D

44) 有以下程序 main()

{ int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j; for(i=0;i<4;i++)

{ for j=1;j<=i;j++) printf(\

for(j=_____;j<4;j++) printf(\ printf(\ } }

若要按以下形式输出数组右上半三角 1 2 3 4 6 7 8 11 12 16

则在程序下划线处应填入的是 A)i-1 B)i C)i+1 D)4-i 答案:B

45) 有以下程序

point(char *p){ p+=3; } main()

{ char b[4]={'a','b','c','d'},*p=b; point(p); printf(\ }

程序运行后的输出结果是 A)a B)b C)c D)d 答案:A

46) 程序中若有如下说明和定义语句 char fun(char *); main()

{ char *s=\ ... }

以下选项中对函数fun的正确调用语句是

A)(*f1)(a); B)*f1(*s); C)fun(&a); D)ch=*f1(s); 答案:A 47)

A)p->next=q->next; B)p->next=p->next->next; C)p->next=r; D)p=q->next; 答案:D

48) 以下对结构体类型变量td的定义中 , 错误的是 A)typedef struct aa {int n; float m; }AA; AA td;

B)struct aa { int n; float m; }td;

struct aa td; C)struct { int n; float m; }aa;

struct aa td; D)struct { int n; float m; }td;

答案:C

49) 以下与函数 fkeek(fp,0L,SEEK_SET) 有相同作用的是 A)feof(fp) B)ftell(fp) C)fgetc(fp) D)rewind(fp) 答案:D

50) 有以下程序

#include

void WriteStr(char *fn, char *str) { FILE *fp;

fp=fopen(fn,\ }

main()

{ WriteStr(\ WriteStr(\ }

程序运行后, 文件t1.dat中的内容是

A)start B)end C)startend D)endrt 答案:B

二、填空题 (每空 2 分, 共 40 分)

请将每一个空的正确答案写在答题处【1】至【20】。

1) 某二叉树中度为2的结点有18个, 则该二叉树中有【1】个叶子结点。 本小题第1空答案:19

2) 在面向对象方法中, 类的实例称为【2】。 本小题第1空答案:对象

3) 诊断和改正程序中错误的工作通常称为【3】。

本小题第1空答案:调试 或 程序调试 或 软件调试 或 Debug 或 调试程序 或 调试软件 4) 在关系数据库中, 把数据表示成二维表, 每一个二维表称为【4】。 本小题第1空答案:关系 或 关系表

5) 问题处理方案的正确而完整的描述称为【5】。 本小题第1空答案:算法 或 程序 或 流程图

6) 以下程序运行时若从键盘输入:10 20 30<回车>。输出结果是【6】。 #include main()

{ int i=0,j=0,k=0;

scanf(\ }

本小题第1空答案:10 30 0

7) 以下程序运行后的输出结果是【7】。 #define S(x) 4*x*x+1 main()

{ int i=6,j=8;

printf(\ }

本小题第1空答案:81

8) 以下程序运行后的输出结果是【8】。 main()

{ int a=3,b=4,c=5,t=99;

if(b

本小题第1空答案:4 5 99

9) 以下程序运行后的输出结果是【9】。 main()

{ int a,b,c;

a=10;b=20;c=(a%b<1)||(a/b>1); printf(\ }

本小题第1空答案:10 20 0

10) 以下程序运行后的输出结果是【10】。 main()

{ char c1,c2;

for(c1='0',c2='9';c1

本小题第1空答案:0918273645

11) 已知字符A的ASCII代码值为65, 以下程序运行时若从键盘输入: B33<回车>。则输出结果是【11】。 #include main()

{ char a,b;

a=getchar();scanf(\ a=a-'A'+'0'; b=b*2; printf(\ }

本小题第1空答案:1 B

12) 以下程序中, fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。 void fun(int i,int, int(*)[4],int *); main()

{ int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i; fun(3,4,a,b);

for(i=0;i<3;i++) printf(\ printf(\ }

void fun(int m, int n, int ar[][4], int *br) { int i,j,x;

for(i=0;i

for(j=0;j

}

本小题第1空答案:br[i] 或 *(br+i) 13) 以下程序运行后的输出结果是【13】。 void swap(int x,int y) { int t;

t=x;x=y;y=t;printf(\ }

main()

{ int a=3,b=4;

swap(a,b); printf(\ }

本小题第1空答案:4 3 3 4

14) 以下程序运行后的输出结果是【14】。 #include

void fun(char *s, int p, int k) { int i;

for(i=p;i

main()

{ char s[]=\

fun(s,3,str1en(s)); puts(s); }

本小题第1空答案:abcfg

15) 以下程序运行后的输出结果是【15】。 #include main()

{ char ch[]=\ for(i=0;i<3;i++) strcpy(x[i],ch);

for(i=0;i<3;i++) printf(\ print(\ }

本小题第1空答案:abcbcc

16) 以下程序运行后的输出结果是【16】。 fun(int a)

{ int b=0; static int c=3; b++;c++;

return (a+b+c); }

main()

{ int i,a=5;

for(i=0;i<3;i++) printf(\ printf(\ }

本小题第1空答案:0 10 1 11 2 12

17) 以下程序运行后的输出结果是【17】。 struct NODE { int k;

struct NODE *link; }; main()

{ struct NODE m[5],*p=m,*q=m+4; int i=0; while(p!=q)

{ p->k=++i; p++; q->k=i++; q--; }

q->k=i;

for(i=0;i<5;i++) printf(\ printf(\ }

本小题第1空答案:13431

18) 以下程序中函数huiwen的功能是检查一个字符串是否是回文, 当字符串是回文时, 函数返回字符串:yes!, 否则函数返回字符串:no!, 并在主函数中输出。所谓回文即正向与反向的拼写都一样, 例如:adgda。请填空。 #include char *huiwen(char *str) { char *p1,*p2; int i,t=0; p1=str; p2=【18】;

for(i=0;i<=strlen(st)/2;i++) if(*p1++!=*p2--) {t=1;break;} if(【19】) return(\ else return(\ }

main()

{ char str[50];

printf(\ printf(\【20】); }

本小题第1空答案:str+strlen(p1)-1 或 str+strlen(str)-1 或 str-1+strlen(str) 或 str-1+strlen(p1)

本小题第2空答案:t==0 或 !t 或 t=='\\0' 或 0==t 或 '\\0'==t 本小题第3空答案:huiwen(str) 二级C语言2005年9月考试试卷 一、选择题((1)—(10)每题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应

位置上,答在试卷上不得分。 (1)下列叙述中正确的是C

A)程序设计就是编制程序 B)程序的测试必须由程序员自己去完成 C)程序经调试改错后还应进行再测试 D)程序经调试改错后不必进行再测试 (2)下列数据结构中,能用二分法进行查找的是A

A)顺序存储的有序线性表 B)线性链表 C)二叉链表 D)有序线性链表 (3)下列关于栈的描述正确的是C

A)在栈中只能插入元素而不能删除元素 B)在栈中只能删除元素而不能插入元素

C)栈是特殊的线性表,只能在一端插入或删除元素

D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素 (4)下列叙述中正确的是D

A)一个逻辑数据结构只能有一种存储结构

B)数据的逻辑结构属于线性结构,存储结构属于非线性结构

C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 (5)下列描述中正确的是C

A)软件工程只是解决软件项目的管理问题 B)软件工程主要解决软件产品的生产率问题

C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D)软件工程只是解决软件开发中的技术问题 (6)在软件设计中,不属于过程设计工具的是D

A)PDL(过程设计语言) B)PAD图 C)N-S图 D)DFD图 (7)下列叙述中正确的是A

A)软件交付使用后还需要进行维护

B)软件一旦交付使用就不需要再进行维护 C)软件交付使用后其生命周期就结束 D)软件维护是指修复程序中被破坏的指令 (8)数据库设计的根本目标是要解决A

A)数据共享问题 B)数据安全问题 C)大量数据存储问题 D)简化数据维护 (9)设有如下关系表:

R S T

A 1 2

B 1 2

C 2 3

A 3

B 1

C 3

A 1 2 3 B 1 2 1 C 2 3 3 则下列操作中正确的是B

A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S (10)数据库系统的核心是B

A)数据模型 B)数据库管理系统 C)数据库 D)数据库管理员 (11)以下叙述中错误的是A

A)用户所定义的标识符允许使用关键字

B)用户所定义的标识符应尽量做到“见名知意” C)用户所定义的标识符必须以字母或下划线开头

D)用户定义的标识符中,大、小写字母代表不同标识 (12)以下叙述中错误的是C

A)C语句必须以分号结束 B)复合语句在语法上被看作一条语句

C)空语句出现在任何位置都不会影响程序运行 D)赋值表达式末尾加分号就构成赋值语句 (13)以下叙述中正确的是B

A)调用printf函数时,必须要有输出项

B)使用putchar函数时,必须在之前包含头文件stdio.h

C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码 (14)以下关于函数的叙述中正确的是B

A)每个函数都可以被其它函数调用(包括main函数) B)每个函数都可以被单独编译 C)每个函数都可以单独运行 D)在一个函数内部可以定义另一个函数

(15)若有语句:char *line[5];,以下叙述中正确的是A

A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针 (16)有以下程序段

typedef struct NODE

{ int num; struct NODE *next; } OLD;

以下叙述中正确的是C

A)以上的说明形式非法 B)NODE是一个结构体类型 C)OLD是一个结构体类型 D)OLD是一个结构体变量 (17)以下叙述中错误的是C

A)C语言中对二进制文件的访问速度比文本文件快 B)C语言中,随机文件以二进制代码形式存储数据 C)语句 FILE fp; 定义了一个名为fp的文件指针 D)C语言中的文本文件以ASCII码形式存储数据

(18)当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个

选项是D

A)k%2 B)k%2==1 C)(k%2)!=0 D)!k%2==1 (19)以下不能正确计算代数式1sin2(1)值的C语言表达式是A

32 A)1/3*sin(1/2)*sin(1/2) B)sin(0.5)*sin(0.5)/3 C)pow(sin(0.5),2)/3 D)1/3.0*pow(sin(1.0/2),2) (20)以下能正确定义且赋初值的语句是B

A)int n1=n2=10; B)char c=32; C)float f=f+1.1; D)double x=12.3E2.5;

(21)以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。 main()

/* Beginning */

{ int r; float s; scanf(\

s=*?*r*r; printf(\ }

出错的原因是D

A)注释语句书写位置错误 B)存放圆半径的变量r不应该定义为整型 C)输出语句中格式描述符非法 D)计算圆面积的赋值语句中使用了非法变量 (22)设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是C A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m (23)设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是A

A)(!a==1)&&(!b==0) B)(a

int k=0,a=1,b=2,c=3;

k=ac ? c:k;

执行该程序段后,k的值是B

A)3 B)2 C)1 D)0

(25)设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句

if (a

if(c==d) y=0; else y=1;

该语句所表示的含义是C A)y???0a?b且c?da?b

?1

0a?b且c?d B)y????1a?b且c?d

C)y???0a?b且c?da?b且c?d?1

?0a?b且c?dD)y??

c?d?1(26)有以下程序段

int n,t=1,s=0; scanf(\

do{ s=s+t; t=t-2; }while (t!=n);

为使此程序段不陷入死循环,从键盘输入的数据应该是D

A)任意正奇数 B)任意负偶数 C)任意正偶数 D)任意负奇数 (27)设变量已正确定义,则以下能正确计算f = n!的程序段是D A) f=0; B) f=1;

for(i=1;i<=n;i++) f*=i; for(i=1;i

for(i=n;i>1;i++) f*=i; for(i=n;i>=2;i--) f*=i;

(28)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是A A)*p=*q; B)p=q; C)*p=&n1; D)p=*q;

(29)若有定义:int x=0, *p=&x;,则语句printf(\的输出结果是B A)随机值 B)0 C)x的地址 D)p的地址 (30)设函数fun的定义形式为

void fun(char ch, float x ) { ? }

则以下对函数fun的调用语句中,正确的是D

A)fun(\ B)t=fun('D',16.5); C)fun('65',2.8); D)fun(32,32); (31)有以下程序 main()

{ int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2; printf(\ }

程序运行后的输出结果是B

A)16 B)10 C)8 D)6 (32)有以下程序 main()

{ char p[]={'a', 'b', 'c'}, q[]=\ printf(\ };

程序运行后的输出结果是C

A)4 4 B)3 3 C)3 4 D)4 3 (33)有以下程序

# define f(x) (x*x) main()

{ int i1, i2;

i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ; printf(\}

程序运行后的输出结果是C

A)64, 28 B)4, 4 C)4, 3 D)64, 64 (34)有以下程序 main()

{ char a1='M', a2='m';

printf(\}

以下叙述中正确的是A

A)程序输出大写字母M B)程序输出小写字母m

C)格式说明符不足,编译出错 D)程序运行时产生出错信息 (35)有以下程序

#include main()

{ char c1='1',c2='2';

c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); }

当运行时输入:a<回车> 后,以下叙述正确的是A A)变量c1被赋予字符a,c2被赋予回车符 B)程序将等待用户输入第2个字符

C)变量c1被赋予字符a,c2中仍是原有字符2 D)变量c1被赋予字符a,c2中将无确定值 (36)有以下程序 main()

{ int k=5,n=0; while(k>0) { switch(k)

{ default : break; case 1 : n+=k; case 2 :

case 3 : n+=k; } k--; }

printf(\ }

程序运行后的输出结果是D

A)0 B)4 C)6 D)7 (37)有以下程序 main()

{ int a[]={2,4,6,8,10}, y=0, x, *p; p=&a[1];

for(x= 1; x<3; x++) y += p[x]; printf(\ }

程序运行后的输出结果是C

A)10 B)11 C)14 D)15 (38)有以下程序

void sort(int a[], int n) { int i, j ,t;

for (i=0; i

if (a[i]

main()

{ int aa[10]={1,2,3,4,5,6,7,8,9,10}, i; sort(aa+2, 5);

for (i=0; i<10; i++) printf(\ printf(\ }

程序运行后的输出结果是C

A)1,2,3,4,5,6,7,8,9,10, B)1,2,7,6,3,4,5,8,9,10, C)1,2,7,6,5,4,3,8,9,10, D)1,2,9,8,7,6,5,4,3,10, (39)有以下程序

void sum(int a[])

{ a[0] = a[-1]+a[1]; } main()

{ int a[10]={1,2,3,4,5,6,7,8,9,10}; sum(&a[2]);

printf(\ }

程序运行后的输出结果是A

A)6 B)7 C)5 D)8 (40)有以下程序

void swap1(int c0[], int c1[]) { int t ;

t=c0[0]; c0[0]=c1[0]; c1[0]=t; }

void swap2(int *c0, int *c1) { int t;

t=*c0; *c0=*c1; *c1=t; }

main()

{ int a[2]={3,5}, b[2]={3,5};

swap1(a, a+1); swap2(&b[0], &b[1]);

printf(\ }

程序运行后的输出结果是A

A)3 5 5 3 B)5 3 3 5 C)3 5 3 5 D)5 3 5 3 (41)有以下程序

#include main()

{ char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'}; printf(\}

以下叙述中正确的是B

A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3 B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3 C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3 D)由于p和q数组中都没有字符串结束符,故长度都不能确定 (42)有以下程序,其中函数f的功能是将多个字符串按字典顺序排序 #include void f(char *p[], int n) { char *t; int i,j; for(i=0; i

if(strcmp(p[i],p[j])>0){ t=p[i]; p[i]=p[j]; p[j]=t; } }

main()

{ char *p[5]={\ f(p, 5);

printf(\ }

程序运行后的输出结果是C

A)2 B)3 C)6 D)4 (43)有以下程序

# include void f(char *s, char *t) { char k;

k=*s; *s=*t; *t=k; s++; t--;

if (*s) f(s, t); }

main()

{ char str[10]=\ p=str+strlen(str)/2+1; f(p, p-2);

printf(\ }

程序运行后的输出结果是B

A)abcdefg B)gfedcba C)gbcdefa D)abedcfg (44)有以下程序

float f1(float n) { return n*n; } float f2(float n) { return 2*n; } main()

{ float (*p1)(float),(*p2)(float),(*t)(float), y1, y2; p1=f1; p2=f2;

y1=p2( p1(2.0) );

t = p1; p1=p2; p2 = t; y2=p2( p1(2.0) );

printf(\

}

程序运行后的输出结果是A

A)8, 16 B)8, 8 C)16, 16 D)4, 8 (45)有以下程序 int a=2; int f(int n)

{ static int a=3; int t=0;

if(n%2){ static int a=4; t += a++; } else { static int a=5; t += a++; } return t+a++; }

main()

{ int s=a, i;

for( i=0; i<3; i++) s+=f(i); printf(\ }

程序运行后的输出结果是C

A)26 B)28 C)29 D)24 (46)有以下程序

# include struct STU { int num;

float TotalScore; }; void f(struct STU p)

{ struct STU s[2]={{20044,550},{20045,537}};

p.num = s[1].num; p.TotalScore = s[1].TotalScore; }

main()

{ struct STU s[2]={{20041,703},{20042,580}}; f(s[0]);

printf(\ }

程序运行后的输出结果是D

A)20045 537 B)20044 550 C)20042 580 (47)有以下程序

# include struct STU

{ char name[10];

int num; };

void f(char *name, int num)

{ struct STU s[2]={{\ num = s[0].num;

D)20041 703

strcpy(name, s[0].name); }

main()

{ struct STU s[2]={{\ p=&s[1]; f(p->name, p->num);

printf(\}

程序运行后的输出结果是A

A)SunDan 20042 B)SunDan 20044 C)LiSiGuo 20042 D)YangSan 20041 (48)有以下程序 struct STU

{ char name[10]; int num; float TotalScore; }; void f(struct STU *p)

{ struct STU s[2]={{\ ++p ; ++q; *p=*q; }

main()

{ struct STU s[3]={{\ f(s);

printf(\ }

程序运行后的输出结果是B

A)SunDan 20044 550 B)Penghua 20045 537 C)LiSiGuo 20042 580 D)SunDan 20041 703 (49)以下程序的功能是进行位运算 main()

{ unsigned char a, b; a=7^3; b= ~4 & 3;

printf(\ }

程序运行后的输出结果是A

A)4 3 B)7 3 C)7 0 D)4 0 (50)有以下程序

#include main()

{ FILE *fp; int i, k, n; fp=fopen(\ for(i=1; i<6; i++)

{ fprintf(fp,\

if(i%3==0) fprintf(fp,\ }

rewind(fp);

fscanf(fp, \ fclose(fp); }

程序运行后的输出结果是D

A)0 0 B)123 45 C)1 4 D)1 2 二、填空题(每空2分,共40分)

请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。

(1)数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的

阶段是 【1】 。答案:数据库系统

(2)算法复杂度主要包括时间复杂度和 【2】 复杂度。答案:空间

(3)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。

其中 【3】 的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。 答案:驱动模块

(4)一棵二叉树第六层(根结点为第一层)的结点数最多为 【4】 个。答案:32 (5)数据结构分为逻辑结构和存储结构,循环队列属于 【5】 结构。答案:存储结构 (6)以下程序运行后的输出结果是 【6】 。答案:88 main()

{ int x=0210; printf(\ }

(7)以下程序运行后的输出结果是 【7】 。答案:1 main()

{ int a=1,b=2,c=3;

if(c=a) printf(\ else printf(\ }

(8)已有定义:double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型 态存储单元 【8】 。答案:p=(double * ) malloc (sizeof(double)) (9)以下程序运行后的输出结果是 【9】 。答案:2 20 main()

{ char c; int n=100; float f=10; double x; x=f*=n/=(c=50);

printf(\ }

(10)以下程序的功能是计算:s=1+12+123+1234+12345。请填空。答案:t*10 main()

{ int t=0,s=0,i;

for( i=1; i<=5; i++)

{ t=i+ 【10】 ; s=s+t; } printf(\ }

(11)已知字母A的ASCII码为65。以下程序运行后的输出结果是 【11】 。答案:67 G main()

{ char a, b;

a='A'+'5'-'3'; b=a+'6'-'2' ; printf(\ }

(12)有以下程序

int sub(int n) { return (n/10+n); } main()

{ int x,y;

的动

scanf(\ y=sub(sub(sub(x))); printf(\}

若运行时输入:1234<回车>,程序的输出结果是 【12】 。答案:10

(13)以下函数sstrcat()的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。

例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。*t

# include

void sstrcat(char *s, char *t) { int n;

n= strlen(s);

while (*(s+n)= 【13】 ){s++; t++;} }

(14)以下程序运行后的输出结果是 【14】 。答案:bcdefgha #include char *ss(char *s) { char *p, t; p=s+1; t=*s;

while(*p) { *(p-1) = *p; p++;} *(p-1)=t; return s; }

main()

{ char *p, str[10]=\ p = ss(str) ; printf(\ }

(15)以下程序运行后的输出结果是 【15】 。答案:15 int f(int a[], int n)

{ if (n >= 1) return f(a, n-1)+a[n-1]; else return 0; }

main()

{ int aa[5]={1,2,3,4,5}, s;

s=f(aa, 5); printf(\ }

(16)以下程序运行后的输出结果是 【16】 。答案:5 struct NODE

{ int num; struct NODE *next; } ; main()

{ struct NODE s[3]={{1, '\\0'},{2, '\\0'},{3, '\\0'}}, *p, *q, *r; int sum=0;

s[0].next=s+1; s[1].next=s+2; s[2].next=s; p=s; q=p->next; r=q->next;

sum+=q->next->num; sum+=r->next->next->num;

printf(\ }

(17)以下程序的功能是输出如下形式的方阵: 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4

请填空。答案:>0和6 main()

{ int i,j,x;

for(j=4; j 【17】 ; j--) { for(i=1; i<=4; i++)

{ x=(j-1)*4 + 【18】 ; printf(\ }

printf(\ } }

(18)以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的

第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

# define N 4

void rotate(int a[][N], int b[][N]) { int i, j;

for (i=0; i

{ b[i][N-1] = 【19】 ; 【20】 = a[N-1][i]; } }答案:a[0][i]和a[i] [0] 二级C语言2006年4月考试试卷

一、选择题 ((1)~(10)每小题 2 分 ,(11)~(50)每小题 1 分 , 共 60 分) 下列各题 A)、B)、C)、D)四个选项中, 只有一个选项是正确的。 01) 下列选项中不属于结构化程序设计方法的是 A)自顶向下 B)逐步求精 C)模块化 D)可复用 答案:D

02) 两个或两个以上模块之间关联的紧密程度称为 A)耦合度 B)内聚度 C)复杂度 D)数据传输特性 答案:A

03) 下列叙述中正确的是

A)软件测试应该由程序开发者来完成 B)程序经调试后一般不需要再测试 C)软件维护只包括对程序代码的维护 D)以上三种说法都不对 答案:D

04) 按照“后进先出”原则组织数据的数据结构是 A)队列 B)栈 C)双向链表 D)二叉树 答案:B

05) 下列叙述中正确的是

A)线性链表是线性表的链式存储结构 B)栈与队列是非线性结构 C)双向链表是非线性结构 D)只有根结点的二叉树是线性结构 答案:A

06)

A)ABCDEF B)DBEAFC C)ABDECF D)DEBFCA 答案:D

07) 在深度为7的满二叉树中,叶子结点的个数为 A)32 B)31 C)64 D)63 答案:C

08) “商品”与“顾客”两个实体集之间的联系一般是 A)一对一 B)一对多 C)多对一 D)多对多 答案:D

09) 在E-R图中,用来表示实体的图形是 A)矩形 B)椭圆形 C)菱形 D)三角 答案:A

10) 数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是

A)DB包含DBS和DBMS B)DBMS包含DB和DBS C)DBS包含DB和DBMS D)没有任何关系 答案:C

11) 以下不合法的用户标识符是

A)j2_KEY B)Double C)4d D)_8_ 答案:C

12) 以下不合法的数值常量是

A)011 B)1e1 C)8.0E0.5 D)0xabed 答案:C

13) 以下不合法的字符常量是

A)'\\018' B)'\\\ 答案:A

14) 表达式3.6-5/2+1.2+5%2的值是 A)4.3 B)4.8 C)3.3 D)3.8 答案:D

15) 以下能正确定义字符串的语句是

A)char str[]={'\\064'}; B)char str=\ 答案:D

16) 以下数组定义中错误的是

A)int x[][3]={0}; B)int x[2][3]={{1,2},{3,4},{5,6}};

C)int x[][3]={{1,2,3},{4,5,6}}; D)int x[2][3]={1,2,3,4,5,6}; 答案:B

17) 若要求从键盘读入含有空格字符的字符串,应使用函数 A)getc() B)gets() C)getchar() D)scanf() 答案:B

18) 以下四个程序中,完全正确的是 A)#include main();

{/*programming */

printf(\ B)#include main()

{/*/programming/*/

printf(\ C)#include main()

{/*/*programming */*/

printf(\ D)include main()

{/*programming*/

printf(\ 答案:B

19) 若有定义:float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是 A)switch(x)

{case 1.0: printf(\ case 2.0: printf(\ B)switch((int)x);

{case l: printf(\ case 2: printf(\ C)switch(a+b)

{case 1: printf(\ case 2+1: printf{\ D)switch(a+b)

{case1: printf(\ case c: printf(\ 答案:C

20) 若各选项中所用变量己正确定义,函数fun中通过retuen语句返回一个函数值,以下选项中错误的程序是 A)main()

{ ?? x=fun(2,10); ??} float fun(int a,int b){??} B)float fun(int a,int b){??} main()

{ ?? x=fun(i,j); ??} C)float fun(int,int); main()

{ ?? x=fun(2,10); ??} float fun(int a,int b){??} D)main()

{float fun(int i,int j); ?? x=fun(i,j); ??}

float fun(int a,int b){??} 答案:A

21) 在以下给出的表达式中,与while(E)中的(E)不等价的表达式是 A)(!E==0) B)(E>0||E<0) C)(E==0) D)(E!=0) 答案:C

22) 要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是

A)while((ch=getchar())!='N')printf(\B)while(ch=getchar()!='N')printf(\ C)while(ch=getchar()=='N')printf{\D)while((ch=getchar())=='N')printf(\ 答案:A

23) 已定义以下函数 int fun(int *p) { return *p;} fun函数返回值是

A)不确定的值 B)一个整数 C)形参p中存放的值 D)形参p的地址值 答案:B

24) 若有说明语句:double *p,a; 则能通过scanf语句正确给输入项读入数据的程序段是 A)*p=&a;scanf(\ D)p=&a; scanf{\ 答案:D 25)

A)q->next=r->next;p->next=r;r->next=q; B)p->next=r;q->next=r->next;r->next=q; C)q->next=r->next;r->next=q;p->next=r; D)r->next=q;p->next=r;q->next=r->next; 答案:D

26) 有以下程序段 struct st

{int x; int *y;} *pt; int a[]={1,2},b[]={3,4}; struct st c[2]={10,a,20,b}; pt=c;

以下选项中表达式的值为11的是

A)*pb->y B)pb->x C)++pt->x D)(pt++)->x

答案:C

27) 设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为 A)EOF B)非0值 C)0 D)NULL 答案:B

28) 设有以下语句 int a=1,b=2,c; c=a^(b<<2); 执行后,c的值为

A)6 B)7 C)8 D)9 答案:D

29) 有以下程序

#include main()

{char c1,c2,c3,c4,c5,c6;

scanf(\ c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(\

程序运行后,若从键盘输入(从第1列开始) 123<回车> 45678<回车> 则输出结果是

A)1267 B)1256 C)1278 D)1245 答案:D

30) 有以下程序 main()

{ int y=10;

while(y--); printf(\ }

程序执行后的输出结果是

A)y=0 B)y=-1 C)y=1 D)while构成无限循环 答案:B

31) 有以下程序 main()

{ int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3;

printf(\ } 程序输出

A)0,1,2,0 B)0,0,0,3 C)1,1,2,0 D)编译有错 答案:D

32) 有以下程序 main()

{ int i,j,x=0; for(i=0;i<2;i++) { x++;

for(j=0;j<=3;j++) { if(j%2) continue; x++; } x++; }

printf{\ }

程序执行后的输出结果是

A)x=4 B)x=8 C)x=6 D)x=12 答案:B

33) 有以下程序

int fun1(double a){return a*=a;} int fun2(double x,double y) { double a=0,b=0;

a=fun1(x);b=fun1(y);return(int)(a+b); }

main()

{double w; w=fun2(1,1,2.0); ??} 程序执行后变量w中的值是 A)5.21 B)5 C)5.0 D)0.0 答案:C

34) 有以下程序 main()

{int i,t[][3]={9,8,7,6,5,4,3,2,1};

for(i=0;j<3;i++) printf(\ }

程序执行后的输出结果是

A)7 5 3 B)3 5 7 C)3 6 9 D)7 5 1 答案:B

35) 有以下程序

fun(char p[][10]) {int n=0,i;

for(i=0;i<7;i++)

if(p[i][0]=='T')n++; return n; }

main()

{ char str[][10]={\ printf(\ }

程序执行后的输出结果是 A)1 B)2 C)3 D)0 答案:B

36) 有以下程序 main()

{ int i,s=0,t[]={1,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2) s+=*(t+i); printf(\ }

程序执行后的输出结果是 A)45 B)20 C)25 D)36 答案:C

37) 有以下程序

void fun1(char *p) { char *q; q=p;

while(*q!='\\0') { (*q)++;q++;} }

main()

{ char a[]={\

p=&a[3]; fun1(p); printf{\ }

程序执行后的输出结果是

A)Prohsbn B)Prphsbn C)Progsbn D)Program 答案:A

38) 有以下程序

void swap(char *x, char *y) { char t;

c=*x; *x=*y; *y=t; }

main()

{ char *s1=\

swap(s1,s2); printf(\ }

程序执行后的输出结果是

A)123,abc B)abc,123 C)1bc,a23 D)321,cba 答案:C

39) 有以下程序 int fun(int n)

{ if(n==1) return 1; else

return(n+fun(n-1)); }

main() { int x;

scanf(\ }

执行程序时,给变量x输入10,程序的输出结果是 A)55 B)54 C)65 D)45 答案:A

40) 有以下程序

int fun(int x[],int n)

{ static int sum=0,i;

for(i=0;i

main()

{ int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0; s=fun(a,5)+fun(b,4); printf(\ }

程序执行后的输出结果是 A)45 B)50 C)60 D)55 答案:C

41) 有以下程序 main() {union

{char ch[2]; int d; }s;

s.d=0x4321;

printf(\ }

在16位编译系统上,程序执行后的输出结果是 A)21,43 B)43,21 C)43,00 D)21,00 答案:A

42) 有以下程序 main()

{char *p[]={\ int i,j; long num=0; for(i=0;i,2;i++) { j=0;

while(p[i][j]!='\\0')

{ if((p[i][j]-'0')%2) num=10*num+p[i][j]-'0'; j+=2; } }

printf(\ }

程序执行后的输出结果是 A)35 B)37 C)39 D)3975 答案:C

43) 执行以下程序后,test.txt文件的内容是(若文件能正常打开) #include main()

{ FILE *fb;

char *s1=\ if(fb=fopen(\

{printf(\

fwrite(s1,7,1,fp); /* 把从地址s1开始的7个字符写到fp所指文件中 */

fseek(fp,0L,SEEK_SET); /* 文件位置指针移到文件开头 */ fwrite(s2,5,1,fb); fclose(fb); }

A)Basican B)BasicFortran C)Basic D)FortranBasic 答案:A

44) 以下叙述中错误的是

A)C语言源程序经编译后生成后缀为.obj的目标程序

B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 C)C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 答案:D

45) 以下叙述中错误的是

A)算法正确的程序最终一定会结束 B)算法正确的程序可以有零个输出

C)算法正确的程序可以有零个输入 D)算法正确的程序对于相同的输入一定有相同的结果 答案:B

46) 以下叙述中错误的是

A)C程序必须由一个或一个以上的函数组成 B)函数调用可以作为一个独立的语句存在 C)若函数有返回值,必须通过return语句返回 D)函数形参的值也可以传回给对应的实参 答案:D

47) 设有以下定义和语句

char str[20]=\ p=str;

则以下叙述中正确的是

A)*p与str[0]中的值相等 B)str与p的类型完全相同 C)str数组长度和p所指向的字符串长度相等

D)数组str位中存放的内容和指针变量p中存放的内容相同 答案:A

48) 以下叙述中错误的是

A)C程序中的#include和#define行均不是C语句 B)除逗号运算符外,赋值运算符的优先级最低 C)C程序中,j++;是赋值语句 D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算

答案:D

49) 以下叙述中正确的是

A)预处理命令行必须位于C源程序的起始位置 B)在C语言中,预处理命令行都以\开头

C)每个C程序必须在开头包含预处理命令行:#include D)C语言的预处理不能实现宏定义和条件编译的功能 答案:B

50) 以下叙述中错误的是

A)可以通过typedef增加新的类型 B)可以用typedef将己存在的类型用一个新的名字来代表 C)用typedef定义新的类型名后,原有类型名仍有效

D)用typedef可以为各种类型起别名,但不能为变量起别名 答案:A

二、填空题 (每空 2 分, 共 40 分)

请将每一个空的正确答案写在答题处【1】至【20】。

1) 对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【1】。

本小题第1空答案:45

2) 在面向对象方法中,【2】描述的是具有相似属性与操作的一组对象。 本小题第1空答案:类

3) 在关系模型中,把数据看成是二维表,每一个二维表称为一个【3】。 本小题第1空答案:关系 或 关系表

4) 程序测试分为静态分析和动态测试。其中【4】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。 本小题第1空答案:静态分析

5) 数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为【5】。 本小题第1空答案:物理独立性

6) 若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句【6】。

本小题第1空答案:printf(\或 printf(\

7) 以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。当给a、b、c输入三角形三条边长时,确定a、b、C能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a 。请填空。 main()

{ float a,b,c;

scanf(\

if(【7】) printf(\、b、c 能构成三角形 */ else printf(\、b、c 不能构成三角形 */ }

本小题第1空答案:a+b>c&&a+c>b&&b+c>a 或 a+b>c&&b+c>a&&a+c>b 或 (a+b>c&&a+c>b&&b+c>a) 或 (a+b>c&&b+c>a&&a+c>b)

8) 以下程序的输出结果是【8】。 main()

{ int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0; for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1]; printf(\ }

本小题第1空答案:30

9) 当运行以下程序时,输入abed,程序的输出结果是:【9】。 insert(char str[]) { int i;

i=strlen(str); while(i>0)

{ str[2*i]=str[i];str[2*i-1]='*';i--;} printf(\ }

main()

{ char str[40];

scanf(\ }

本小题第1空答案:a*b*c*d*

10) 下面程序的运行结果是:【10】。 fun(int t[],int n)

{ int i,m;

if(n==1)return t[0]; else

if(n>=2){m=fun(t,n-1); return m;} }

main()

{ int a[]={11,4,6,3,8,2,3,5,9,2}; printf(\ }

本小题第1空答案:11

11) 现有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件如下: #include #include \ main()

{ fun(); printf(\ myfun.c文件如下: void fun()

{ char s[80],c; int n=0;

while((c=getchar())!='\\n') s[n++]=c; n--;

while(n>=0) printf(\ }

当编译连接通过后,运行程序T18时,输入Thank!则输出结果是:【11】。 本小题第1空答案:!knahT

12) 以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如:由所指字符串为:Hello!,c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。 char *fun(char *str,char c) { int n=0; char *p=str; if(p!=NULL)

while(p[n]!=c&&p[n]!='\\0')n++; if(p[n]=='\\0') return NULL; return(【12】); }

本小题第1空答案:&p[n] 或 p+n

13) 以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。 main() {int i,j;

for(i=0;【13】;i++) { j=i*10+6;

if(【14】) continue; printf(\ }

本小题第1空答案:i<10 或 i<=9

本小题第2空答案:j%3 或 j%3!=0 或 !(j%3==0)

14) 以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。请填空 int isprime(int a )

{ int ;

for(i=2;i<=a/2;i++) if(a%i==0)【15】; 【16】; }

本小题第1空答案:return 0 或 return(0) 或 return 0; 或 return(0); 本小题第2空答案:return 1 或 return(1) 或 return 1; 或 return(1);

15) 以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下: A B C D E F G H I J K L M N O

请填空完成该程序。 main()

{ int i,j,n; char ch='A'; scanf(\ if{n<11)

{ for(i=1;i<=n;i++)

{ for(j=1;j<=n-i+1;j++) { printf(\ 【17】; }

【18】; } }

else printf(\ printf(\ }

本小题第1空答案:ch++ 或 ++ch 或 ch=ch+1 或 ch=1+ch 或 ch+=1 或 ch++; 或 ++ch; 或 ch=ch+1; 或 ch=1+ch; 或 ch+=1;

本小题第2空答案:printf(\或 putchar('\\n') 或 printf(\或 putchar('\\n'); 16)

本小题第1空答案:p 或 p!=0 或 p!=NULL 或 p!='\\0' 或 p!=0 本小题第2空答案:p->next

C语言06年9月试题

一、选择题 ((1)~(10)每小题 2 分 ,(11)~(50)每小题 1 分 , 共 60 分) 下列各题 A)、B)、C)、D)四个选项中, 只有一个选项是正确的。 01) 下列选项中不符合良好程序设计风格的是 A)源程序要文档化 B)数据说明的次序要规范化

C)避免滥用goto语句 D)模块设计要保证高耦合、高内聚 答案:D

02) 从工程管理角度,软件设计一般分为两步完成,它们是 A)概要设计与详细设计 B)数据设计与接口设计

C)软件结构设计与数据设计 D)过程设计与数据设计 答案:A

03) 下列选项中不属于软件生命周期开发阶段任务的是 A)软件测试 B)概要设计 C)软件维护 D)详细设计 答案:C

04) 在数据库系统中,用户所见的数据模式为 A)概念模式 B)外模式 C)内模式 D)物理模式 答案:B

05) 数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和 A)编码设计 B)测试阶段 C)运行阶段 D)物理设计 答案:D 06)

A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S 答案:C

07) 下列叙述中正确的是

A)一个算法的空间复杂度大,则其时间复杂度也必定大 B)一个算法的空间复杂度大,则其时间复杂度必定小 C)一个算法的时间复杂度大,则其空间复杂度必定小 D)上述三种说法都不对 答案:D

08) 在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为 A)63 B)64 C)6 D)7 答案:B

09) 数据库技术的根本目标是要解决数据的

A)存储问题 B)共享问题 C)安全问题 D)保护问题 答案:B 10)

A)ACBDFEG B)ACBDFGE C)ABDCGEF D)FCADBEG 答案:A

11) 下列叙述中错误的是

A)一个C语言程序只能实现一种算法 B)C程序可以由多个程序文件组成

C)C程序可以由一个或多个函数组成 D)一个C函数可以单独作为一个C程序文件存在 答案:A

12) 下列叙述中正确的是

A)每个C程序文件中都必须要有一个main()函数 B)在C程序中main()函数的位置是固定的

C)C程序中所有函数之间都可以相互调用,与函数所在位置无关 D)在C程序的函数中不能定义另一个函数 答案:D

13) 下列定义变量的语句中错误的是

A)int _int; B)double int_; C)char For; D)float US$; 答案:D

14) 若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是 A)++x,y=x- B)x+1=y C)x=x+10=x+y D)double(x)/10 答案:A

15) 以下关于逻辑运算符两侧运算对象的叙述中正确的是 A)只能是整数0或1 B)只能是整数0或非0整数

C)可以是结构体类型的数据 D)可以是任意合法的表达式 答案:D

16) 若有定义int x,y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是

A)(x-y>0) B)(x-y<0) C)(x-y<0||x-y>0) D)(x-y==0) 答案:C

17) 有以下程序 main()

{ int x, y, z; x=y=1;

z=x++,y++,++y;

printf(\ }

程序运行后的输出结果是

A)2,3,3 B)2,3,2 C)2,3,1 D)2,2,1 答案:C

18) 设有定义:int a; float b; 执行 scanf(\语句时,若从键盘输入876 543.0<回车>,a和b的值分别是

A)876和543.000000 B)87和6.000000 C)87和543.000000 D)76和543.000000 答案:B

19) 有以下程序 main()

{ int a=0, b=0;

a=10; /* 给a赋值

b=20; 给b赋值 */ printf(\输出计算结果 */ }

程序运行后的输出结果是

A)a+b=10 B)a+b=30 C)30 D)出错 答案:A

20) 在嵌套使用if语句时,C语言规定else总是

A)和之前与其具有相同缩进位置的if配对 B)和之前与其最近的if配对 C)和之前与其最近的且不带else的if配对 D)和之前的第一个if配对 答案:C

21) 下列叙述中正确的是

A)break语句只能用于switch语句\\TAB B)在switch语句中必须使用default

C)break语句必须与switch语句中的case配对使用 D)在switch语句中,不一定使用break语句 答案:D

22) 有以下程序 main()

{ int k=5;

while(--k) printf(\ printf(\ }

执行后的输出结果是

A)1 B)2 C)4 D)死循环 答案:A

23) 有以下程序 main() { int i;

for(i=1; i<=40; i++) { if(i++%5==0)

if(++i%8==0) printf(\ }

printf(\ }

执行后的输出结果是

A)5 B)24 C)32 D)40 答案:C

24) 以下选项中,值为1的表达式是

A)1 –'0' B)1 - '\\0' C)'1' -0 D)'\\0' - '0' 答案:B

25) 有以下程序

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(\ }

执行后的输出结果是 A)6 B)7 C)8 D)9 答案:C

26) 有以下程序 main()

{ char s[]=\ s+=2;

printf(\ }

执行后的结果是

A)输出字符a的ASCII码 B)输出字符c的ASCII码 C)输出字符c D)程序出错 答案:D

27) 有以下程序

fun(int x, int y) { static int m=0, i=2;

i+=m+1; m=i+x+y; return m; }

main()

{ int j=1, m=1, k;

k=fun(j,m); printf(\ k=fun(j,m); printf(\ }

执行后的输出结果是

A)5, 5 B)5, 11 C)11, 11 D)11, 5 答案:B

28) 有以下程序 fun(int x) { int p;

if(x==0||x==1) return(3); p=x-fun(x-2); return p; }

main()

{ printf(\执行后的输出结果是 A)7 B)3 C)2 D)0 答案:C

29) 在16位编译系统上,若有定义int a[]={10,20,30}, *p=&a;,当执行p++;后,下列说法错误的是 A)p向高地址移了一个字节 B)p向高地址移了一个存储单元 C)p向高地址移了两个字节 D)p与a+1等价 答案:A

30) 有以下程序 main()

{ int a=1, b=3, c=5;

int *p1=&a, *p2=&b, *p=&c; *p =*p1*(*p2); printf(\ }

执行后的输出结果是 A)1 B)2 C)3 D)4 答案:C

31) 若有定义:int w[3][5]; ,则以下不能正确表示该数组元素的表达式是 A)*(*w+3) B)*(w+1)[4] C)*(*(w+1)) D)*(&w[0][0]+1) 答案:B

32) 若有以下函数首部

int fun(double x[10], int *n)

则下面针对此函数的函数声明语句中正确的是

A)int fun(double x, int *n); B)int fun(double , int ); C)int fun(double *x, int n); D)int fun(double *, int *); 答案:D

33) 若有定义语句:int k[2][3],*pk[3];,则以下语句中正确的是 A)pk=k; B)pk[0]=&k[1][2]; C)pk=k[0]; D)pk[1]=k; 答案:B

34) 有以下程序

void change(int k[ ]){ k[0]=k[5]; } main()

{ int x[10]={1,2,3,4,5,6,7,8,9,10},n=0; while( n<=4 ) { change( &x[n]) ; n++; } for(n=0; n<5; n++) printf(\ printf(\ }

程序运行后输出的结果是

A)6 7 8 9 10 B)1 3 5 7 9 C)1 2 3 4 5 D)6 2 3 4 5 答案:A

35) 若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是 A)#define N 10 int a[N]; B)#define n 5 int a [2*n]; C)int a[5+5]; D)int n=10,a[n]; 答案:D

36) 有以下程序 main()

{ int x[3][2]={0}, i;

for(i=0; i<3; i++) scanf(\

printf(\ }

若运行时输入:2 4 6<回车>,则输出结果为

A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6 答案:B

37) 有以下程序 main()

{ char s[]={ \ ps=s; printf(\ }

程序运行后的输出结果是

A)a B)e C)u D)元素s[4]的地址 答案:B

38) 以下语句中存在语法错误的是

A)char ss[6][20]; ss[1]= \ C)char *ss[6]; ss[1]= \ 答案:A

39) 若有定义:char *x=\,以下选项中正确运用了strcpy函数的是 A)char y[10]; strcpy(y,x[4]); B)char y[10]; strcpy(++y,&x[1]);

C)char y[10],*s; strcpy(s=y+5,x); D)char y[10],*s; strcpy(s=y+1,x+1); 答案:D

40) 有以下程序

int add( int a,int b){ return (a+b); } main()

{ int k, (*f)(), a=5,b=10; f=add; ? }

则以下函数调用语句错误的是

A)k=(*f)(a,b); B)k=add(a,b); C)k= *f(a,b); D)k=f(a,b); 答案:C

41) 有以下程序

#include

main( int argc, char *argv[ ]) { int i=1,n=0;

while (i

该程序生成的可执行文件名为:proc.exe。若运行时输入命令行: proc 123 45 67 则程序的输出结果是 A)3 B)5 C)7 D)11 答案:C

42) 有以下程序

void fun2(char a, char b) { printf(\ char a='A', b='B';

void fun1( ){ a='C'\\TAB ; b='D' ; } main( ) { fun1( );

printf(\ fun2('E', 'F'); }

程序的运行结果是

A)C D E F B)A B E F C)A B C D D)C D A B 答案:A

43) 有以下程序

# include # define N 5 # define M N+1 # define f(x) (x*M) main()

{ int i1, i2; i1 = f(2) ; i2 = f(1+1) ;

printf(\ }

程序的运行结果是

A)12 12 B)11 7 C)11 11 D)12 7 答案:B

44) 设有以下语句

typedef struct TT

{ char c; int a[4]; } CIN; 则下面叙述中正确的是

A)可以用TT定义结构体变量 B)TT是struct类型的变量

C)可以用CIN定义结构体变量 D)CIN是struct TT类型的变量 答案:C

45) 有以下结构体说明、变量定义和赋值语句 struct STD

{ char name[10]; int age; char sex; } s[5],*ps; ps=&s[0];

则以下scanf函数调用语句中错误引用结构体变量成员的是 A)scanf(\ C)scanf(\ 答案:D

46) 若有以下定义和语句 union data

{ int i; char c; float f; } x; int y;

则以下语句正确的是

A)x=10.5; B)x.c=101; C)y=x; D)printf(\ 答案:B 47)

A)首结点成为尾结点 B)尾结点成为首结点 C)删除首结点 D)删除尾结点 答案:A

48) 若变量已正确定义,则以下语句的输出结果是 s=32; s^=32; printf(\ A)-1 B)0 C)1 D)32 答案:B

49) 以下叙述中正确的是

A)C语言中的文件是流式文件,因此只能顺序存取数据

B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据 D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 答案:D

50) 有以下程序

#include main()

{ FILE *fp; int i; char ch[]=\

fp=fopen(\

for(i=0; i<4; i++) fwrite(&ch[i],1,1,fp); fseek(fp,-2L,SEEK_END); fread(&t,1,1,fp); fclose(fp);

printf(\ }

程序执行后的输出结果是 A)d B)c C)b D)a 答案:B

二、填空题 (每空 2 分, 共 40 分)

请将每一个空的正确答案写在答题处【1】至【20】。 1)

本小题第1空答案:3

2) 【2】的任务是诊断和改正程序中的错误。 本小题第1空答案:调试 或 调试阶段 或 程序调试 或 程序调试阶段 或 软件调试 或 软件调试阶段 或 Debug 或 Debug阶段 3) 一个关系表的行称为【3】。 本小题第1空答案:记录 或 元组

4) 按“先进后出”原则组织数据的数据结构是【4】。 本小题第1空答案:栈 或 Stack

5) 数据结构分为线性结构和非线性结构,带链的队列属于【5】。 本小题第1空答案:线性结构

6) 设有定义:float x=123.4567;,则执行以下语句后的输出结果是 【6】 。 printf(\ 本小题第1空答案:123.46 或 123.460000 7) 以下程序运行后的输出结果是 【7】 。 main()

{ int m=011,n=11;

printf(\ }

本小题第1空答案:10 11

8) 以下程序运行后的输出结果是 【8】 。 main()

{ int x,a=1,b=2,c=3,d=4;

x=(ax) ? x : d; printf(\ }

本小题第1空答案:1

9) 有以下程序,若运行时从键盘输入:18,11<回车>,则程序的输出结果是 【9】 。 main()

{ int a,b;

printf(\ while(a!=b)

{ while(a>b) a -= b; while(b>a) b -= a; }

printf(\ }

本小题第1空答案:1 1

10) 以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。 #include main()

{ int n,s;

printf(\ printf(\ do

{ s=n; printf(\【10】 ; } while(n!=0); printf(\ }

本小题第1空答案:n/=10 或 n=n/10 11)

本小题第1空答案:x+8 或 8+x 或 x+8.0 或 8.0+x 或 x+8. 或 8.+x 本小题第2空答案:sin(x) 12)

本小题第1空答案:j+1 或 j 或 1+j

本小题第2空答案:i%2 或 i%2!=0 或 i%2==1

13) 下列程序中的函数strcpy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新字符串。例如,若t所指字符串为:efgh,调用strcpy2后,s所指字符串为:efghefgh。请填空。

#include #include

void strcpy2(char *s, char *t) { char *p=t;

while(*s++ = *t++ ); s=【15】;

while (【16】=*p++ ) ; }

main()

{ char str1[100]=\

strcpy2(str1, str2); printf(\ }

本小题第1空答案:s-1 或 --s 或 s-- 本小题第2空答案:*s++

14) 下面程序的运行结果是:【17】 。

#include int f(int a[],int n) { if(n>1)

return a[0] + f(a+1, n-1); else

return a[0]; }

main()

{ int aa[10]={1,2,3,4,5,6,7,8,9,10}, s; s = f(aa+2,4); printf(\ }

本小题第1空答案:18

15) 下面程序由两个源程序文件:t4.h和t4.c组成,程序编译运行的结果是: 【18】 。 t4.h的源程序为:

#define N 10

#define f2(x) (x*N) t4.c的源程序为:

#include #define M 8

#define f(x) ((x)*M) #include \ main()

{ int i,j;

i=f(1+1); j=f2(1+1); printf(\ }

本小题第1空答案:16 11 16)

本小题第1空答案:->next->data

17) 有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。

#include main()

{ FILE *fp;

int i,a[100], b[100];

fp = fopen(\

for (i=0;i<100; i++) a[i] = i+1; fwrite(a, sizeof(int), 100, fp); fclose(fp);

fp = fopen(\【20】 ); fread(b, sizeof(int), 100, fp); fclose(fp);

for(i=0;i<100; i++) printf(\ }

本小题第1空答案:\或 \或 \二C 07年4月份试题

一、选择题 ((1)~(10)每小题 2 分 ,(11)~(50)每小题 1 分 , 共 60 分) 下列各题 A)、B)、C)、D)四个选项中, 只有一个选项是正确的。 01) 下列叙述中正确的是

A)算法的效率只与问题的规模有关,而与数据的存储结构无关 B)算法的时间复杂度是指执行算法所需要的计算工作量 C)数据的逻辑结构与存储结构是一一对应的 D)算法的时间复杂度与空间复杂度一定相关 答案:B

02) 在结构化程序设计中,模块划分的原则是

A)各模块应包括尽量多的功能 B)各模块的规模应尽量大

C)各模块之间的联系应尽量紧密 D)模块内具有高内聚度、模块间具有低耦合度 答案:D

03) 下列叙述中正确的是

A)软件测试的主要目的是发现程序中的错误 B)软件测试的主要目的是确定程序中错误的位置

C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作 D)软件测试是证明软件没有错误 答案:A

04) 下面选项中不属于面向对象程序设计特征的是 A)继承性 B)多态性 C)类比性 D)封装性 答案:C

05) 下列对队列的叙述正确的是

A)队列属于非线性表 B)队列按“先进后出”原则组织数据 C)队列在队尾删除数据 D)队列按“先进先出”原则组织数据 答案:D 06)

A)DYBEAFCZX B)YDEBFZXCA C)ABDYECFXZ D)ABCDEFXYZ 答案:C

07) 某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为 A)n+1 B)n-1 C)2n D)n/2 答案:A

08) 在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是 A)并 B)交 C)投影 D)笛卡儿乘积 答案:B

09) 在E-R图中,用来表示实体之间联系的图形是 A)矩形 B)椭圆形 C)菱形 D)平行四边形 答案:C

10) 下列叙述中错误的是

A)在数据库系统中,数据的物理结构必须与逻辑结构一致 B)数据库技术的根本目标是要解决数据的共享问题

C)数据库设计是指在已有数据库管理系统的基础上建立数据库 D)数据库系统需要操作系统的支持 答案:A

11) 算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的 A)正当性 B)可行性 C)确定性 D)有穷性 答案:C

12) 以下叙述中错误的是

A)计算机不能直接执行用C语言编写的源程序

B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件 C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行 答案:D

13) 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是 A)大写字母 B)连接符 C)数字字符 D)下划线 答案:B

14) 以下叙述中错误的是

A)C语言是一种结构化程序设计语言

B)结构化程序由顺序、分支、循环三种基本结构组成 C)使用三种基本结构构成的程序只能解决简单问题 D)结构化程序设计提倡模块化的设计方法 答案:C

15) 对于一个正常运行的C程序,以下叙述中正确的是 A)程序的执行总是从main函数开始,在main函数结束

B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在程序的最后一个函数中结束

D)程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束

答案:A

16) 设变量均已正确定义,若要通过scanf(\语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符) A)10□X□20□Y<回车> B)10□X20□Y<回车> C)10□X <回车> 20□Y<回车> D)10X <回车> 20Y<回车> 答案:D 17)

A)sqrt(abs(n^x+e^x)) B)sqrt(fabs(pow(n,x)+pow(x,e)))

C)sqrt(fabs(pow(n,x)+exp(x))) D)sqrt(fabs(pow(x,n)+exp(x))) 答案:C

18) 设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是 A)k++ B)k+=1 C)++k D)k+1 答案:A

19) 有以下程序,其中%u表示按无符号整数输出 main()

{ unsigned int x=0xFFFF; /* x的初值为十六进制数 */ printf(\ }

程序运行后的输出结果是

A)-1 B)65535 C)32767 D)0xFFFF 答案:B

20) 设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是 A)if(x++); B)if(x>y && y!=0); C)if(x>0) x--

else y++;

D)if(y<0) { ; }

else x++;

答案:C

21) 以下选项中,当x为大于1的奇数时,值为0的表达式是 A)x%2==1 B)x/2 C)x%2!=0 D)x%2==0 答案:D

22) 以下叙述中正确的是

A)break语句只能用于switch语句体中

B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环 C)break语句只能用在循环体内和switch语句体内

D)在循环体内使用break语句和continue语句的作用相同 答案:C

23) 有以下程序 main()

{ int k=5,n=0;

do

{ switch(k)

{ case 1: case 3: n+=1; k--; break; default: n=0; k--;

case 2: case 4: n+=2; k--; break; }

printf(\ }while(k>0 && n<5); }

程序运行后的输出结果是

A)235 B)0235 C)02356 D)2356 答案:A

24) 有以下程序 main()

{ int i,j;

for(i=1; i<4; i++)

{ for(j=i; j<4; j++) printf(\ printf(\ } }

程序运行后的输出结果是 A)1*1=1 1*2=2 1*3=3

2*1=2 2*2=4 3*1=3 B)1*1=1 1*2=2 1*3=3

2*2=4 2*3=6 3*3=9 C)1*1=1 1*2=2 2*2=4

1*3=3 2*3=6 3*3=9 D)1*1=1 2*1=2 2*2=4

3*1=3 3*2=6 3*3=9 答案:B

25) 以下合法的字符型常量是

A)'\\x13' B)'\\081' C)'65' D)\ 答案:A

26) 在C语言中,函数返回值的类型最终取决于 A)函数定义时在函数首部所说明的函数类型 B)return语句中表达式值的类型

C)调用函数时主调函数所传递的实参类型 D)函数定义时形参的类型 答案:A

27) 已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是

A)c=(c-'A')& +'a' B)c=c+32 C)c=c-'A'+'a' D)c=('A'+c)&-'a' 答案:D

28) 有以下函数

int fun(char *s) { char *t=s; while(*t++);

本文来源:https://www.bwwdw.com/article/eiup.html

Top