2006 年9 月全国计算机等级考试二级笔试试卷C语言程序设计.pdf

上传人:e****s 文档编号:40131106 上传时间:2022-09-08 格式:PDF 页数:18 大小:271.63KB
返回 下载 相关 举报
2006 年9 月全国计算机等级考试二级笔试试卷C语言程序设计.pdf_第1页
第1页 / 共18页
2006 年9 月全国计算机等级考试二级笔试试卷C语言程序设计.pdf_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《2006 年9 月全国计算机等级考试二级笔试试卷C语言程序设计.pdf》由会员分享,可在线阅读,更多相关《2006 年9 月全国计算机等级考试二级笔试试卷C语言程序设计.pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 2006 年年 9 月全国计算机等级考试二级笔试试卷月全国计算机等级考试二级笔试试卷 语言程序设计语言程序设计 (考试时间 120 分钟,满分 100 分) 一、选择题一、选择题(1)(10)每题每题 2 分,分,(11)(50)每题每题 1 分,共分,共 60 分分) 下列各题下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列选项中不符合良好程序设计风格的是 A) 源程序要文档化 B) 数据说明的次序要规范化 C) 避免滥

2、用 goto 语句 D) 模块设计要保证高耦合、高内聚 (2)从工程管理角度,软件设计一般分为两步完成,它们是 A) 概要设计与详细设计 B) 数据设计与接口设计 C) 软件结构设计与数据设计 D) 过程设计与数据设计 (3)下列选项中不属于软件生命周期开发阶段任务的是 A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计 (4)在数据库系统中,用户所见的数据模式为 A) 概念模式 B) 外模式 C) 内模式 D) 物理模式 (5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和 A) 编码设计 B) 测试阶段 C) 运行阶段 D) 物理设计 (6) 设计如下三个关系表: R

3、S T B C 1 3 A m n A B C m 1 3 n 1 3 下列操作中正确的是 A) T=RS B)T=RS C) T= RS D)T=R/S (7) 下列叙述中正确的是 A) 一个算法的空间复杂度大,则其时间复杂度也必定大 B) 一个算法的空间复杂度大,则其时间复杂度必定小 C) 一个算法的时间复杂度大,则其空间复杂度必定小 1 D) 上述三种说法都不对 (8) 在长度为 64 的有序线型表中进行顺序查找,最坏情况下需要比较的次数为 A) 63 B) 64 C) 6 D) 7 (9) 数据库技术的根本目标是要解决数据的 A) 存储问题 B) 共享问题 C) 安全问题 D) 保护问

4、题 (10) 对下列二叉树 F A EC D GB 进行中序遍历的结果是 A) ACBDFEG B) ACBDFGE C) ABDCGEF D) FCADBEG (11)下列叙述中错误的是 A) 一个 C 语言程序只能实现一种算法 B) C 程序可以由多个程序文件组成 C) C 程序可以由一个或多个函数组成 D) 一个 C 函数可以单独作为一个 C 程序文件存在 (12) 下列叙述中正确的是 A) 每个 C 程序文件中都必须要有一个 main()函数 B) 在 C 程序中 main()函数的位置是固定的 C) C 程序中所有函数之间都可以互相调用 D) 在 C 程序的函数中不能定义另一个函数

5、(13) 下列定义变量的语句中错误的是 A) int int; B) double int; C) char FOR; D) float US$ (14) 若变量 x、y 已正确定义并赋值,以下符合 C 语言语法的表达式是 A) +x,y=x- B) x+1=y C) x=x+10=x+y D) double(x)/10 (15) 以下关于逻辑运算符两侧运算对象的叙述中正确的是 A)只能是整数 0 或 1 B)只能是整数 0 或非 0 整数 C)可以是结构体类型的数据 D)可以是任意合法的表达式 2 (16) 若有定义 int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x+

6、)?y+)中的条件表达式(x-y)等价的是 A) (x-y0) B) (x-y0) C) (x-y0) D) (x-y=0) (17) 有以下程序 main() int x,y,z; x=y=1; z=x+,y+,+y; printf(“%d,%d,%dn”,x,y,z); 程序运行后的输出结果是 A) 2,3,3 B) 2,3,2 C) 2,3,1 D) 2,2,1 (18) 设有定义:int a; float b;执行 scanf(“%2d%1”,&a,&b);语句时,若从键盘输入 876 543.0,a 和 b 的值分别是 A) 876 和 543.000000 B) 87 和 6.00

7、0000 C) 87 和 543.000000 D) 76 和 543.000000 (19) 有以下程序 main() int a=0,b=0; a=10; /* 给 a 赋值 b=20; 给 b 赋值 */ printf(“a+b=%dn”,a+b); /* 输出计算结果 */ 程序运行后的输出结果是 A) a+b=10 B) a+b=30 C) 30 D) 出错 (20) 在嵌套使用 if 语句时,C 语言规定 else 总是 A) 和之前与其具有相同缩进位置的 if 配对 B) 和之前与其最近的 if 配对 C) 和之前与其最近的且不带 else 的 if 配对 3 D) 和之前的第一

8、个 if 配对 (21) 下列叙述中正确的是 A) break 语句只能用于 switch 语句 B) 在 switch 语句中必须使用 default C) break 语句必须与 switch 语句中的 case 配对使用 D) 在 switch 语句中,不一定使用 break 语句 (22) 有以下程序 main() int k=5; while(-k) printf(“%d”,k=3); printf(“n”); 执行后的输出结果是 A) 1 B) 2 C) 4 D) 死循环 (23) 有以下程序 main() int I; for(I=1;I=40;I+) if(I+%5=0) if

9、(+I%3=0) printf(“%d”,I); printf(“n”); 执行后的输出结果是 A) 5 B) 24 C) 32 D) 40 (24) 以下选项中,值为 1 的表达式是 A) 1-0 B) 1-0 C) 1-0 D) 0-0 (25) 有以下程序 fun(int x,int y)return(x+y); 4 main() int a=1,b=2,c=3,sum; sum=fun(a+,b+,a+b),c+) printf(“%dn”,sum); 执行后的输出结果是 A) 6 B) 7 C) 8 D) 9 (26) 有以下程序 main() char s=”abcde”; s+=

10、2; printf(“%dn”,s0); 执行后的输出结果是 A) 输出字符 a 的 ASC码 B) 输出字符 C 的 ASC码 C) 输出字符 c 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(“%d”,k); k=fun(j,m); printf(“%dn”,k); 执行后的输出结果是 A) 5,5 B) 5,11 C) 11,11 D) 11,5 (28) 有以下程序 fun(int x)

11、 5 int p; if(x=0 x=1) return(3); p=x-fun(x-2); return p; main() printf(“%dn”,fun(7); 执行后的输出结果是 A) 7 B) 3 C) 2 D) 0 (29) 在 16 位编译系统上,若有定义 int a=10,20,30,*p=&a;,当执行 p+;后,下列说法错误的是 A) p 向高地址移了一个字节 B) p 向高地址移了一个存储单元 C) p 向高地址移了两个字节 D) p 与 a+1 等价 (30) 有以下程序 main() int a=1,b=3,c=5; int p1=&a,p2=&b,*p=&c; p

12、=p1*(*p2); printf(“%dn”,c); 执行后的输出结果是 A) 1 B) 2 C) 3 D) 4 (31) 若有定义:int w35;,则以下不能正确表示该数组元素的表达式是 A) *(*w+3) B) *(w+1)4 C) *(*(w+1) D) *(&W00+1) (32)若有以下函数首部 int fun(double x10,int *n) 则下面针对此函数的函数声明语句中正确的是 A) int fun(double x,int *n); B) int fun(double ,int ); C) int fun(double *x,int n); D) int fun(

13、double *,int *); 6 (33) 若有定义语句:int k23,*pk3;,则以下语句中正确的是 A) pk=k; B) pk0=&k12; C) pk=k0; D)pk1=k (34) 有以下程序 void change(int k) k0,k5; main() int x10=1,2,3,4,5,6,7,8,9,10,n=0; while(n=4) change(&xn);n+; for(n=0;n5;n+) printf(“%d”,xn); printf(“n”); 程序运行后输出的结果是 A) 6 7 8 9 10 B) 1 3 5 7 9 D) 1 2 3 4 5 D)

14、 6 2 3 4 5 (35) 若要求定义具有 10 个 int 型元素的一维数组 a,则以下定义语句中错误的是 A) #define N 10 B) #define N 5 Int aN; int a2*n; C) int a5+5; D) int n=10,an; (36) 有以下程序 main() int x32=0,I; for(I=0;I3;I+) scanf(“%d”,xI); printf(“%3d%3d%3dn”,x00,x01,x10); 若运行时输入:2 4 6,则输出结果为 A) 2 0 0 B) 2 0 4 C) 2 4 0 D) 2 4 6 (37) 有以下程序 ma

15、in() char s=“aeiou”,*ps; ps=s; printf(“%cn”,*ps+4); 7 程序运行后的输出结果是 A) a B) c C) u D) 元素 s4的地址 (38) 以下语句中存在语法错误的是 A) char ss620;ssI=”right?”; B) char ss20=“right?”; C) char *ss6;ss1=”right?”; D) char *ss=“right?”; (39) 若有定义:char *x=abcdefghi”,以下选项中正确运用了 strcpy 函数的是 A) char y10; strcpy(y,x4); B) char y

16、10; strcpy(+y,&x1); C) char y10,*s; strcpy(s=y+5,x); D) char y10,*s; strcpy(s=y+1,x+1); (40) 有以下程序 int add(int a,int b)rerutn (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); (41) 有以下程序 include main(int argc,char *argv) int i=1,n=0;

17、while(i argc)n=n+strlen(argvi);i+; printf(“%dn”,n); 该程序生成的可执行文件名为:proc.exe.若运行时输入命令行: proc 123 45 67 8 则程序的输出结果是 A) 3 B) 5 C) 7 D) 11 (42) 有以下程序 void fun2(char a,char b) printf(“%c%c”,a,b); char a=A,b=B; void fun1()a=C;b=D; main() fun 1(); printf”%c%c”,a,b); fun2(E,F); 程序的运行结果是 A) CDEF B) ABEF C) AB

18、CD D) CDAB (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(“%d %dn”,i1,i2); 程序运行结果是 A) 12 12 B) 11 7 C) 11 11 D) 12 7 (44) 设有以下语句 typedef struct TT (char c; int a4;)CIN; 9 则下面叙述中正确的是 A)可以用 TT 定义结构体变量 B)TT 是 struct 类型的变量 C)可以用 CIN 定义结

19、构体变量 D)CIN 是 strcut TT 类型的变量 (45) 有以下结构体说明、变量定义和赋值语句 struct STD char name10; int age; char sex; s5,*ps; ps=&s0; 则以 scanf 函数调用语句中错误引用结构体变量成员的是 A) scanf(“%s”,s0.name); B)scanf(“%d”,&s0.age); D) scanf(“%c”,&(pssex); D)scanf(“%d”, psage); (46)若有以定义和语句 union data int I; char c; float f;x; int y; 则以下语句正确的

20、是 A) X=10.5 B) x.c=101; C) y=x; D) printf(%dn”,x); (47) 程序中已构成如下图所示的不带头结点的单向链表的结构,指针变量 s,p,q 均已正确定义,并用于指向链表结点,指针变量 s 总是作为头指针指向链表的第一个结点。 data next a b c NULL s 若有以下程序段 next; q=s;s=snext; p=s; while(pnext) p= ppnext=q; qnext=NULL; 该程序段实现的功能是 A)首结点成为尾结点 B) 尾结点成为首结点 10 C)删除首结点 D)删除尾结点 (48) 若变量已正确定义,则以下语

21、句的输出结果是 A) -1 B) 0 c) 1 D) 32 (4件,因此只能顺序存取数据 全部数据必定被覆盖 读到第个D) 当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 (io.h fp; int i; ; ”wb”); 1,1,fp); ,i); 行后的输出结果是 C) b D) a 二、题卡【1】至【10】序号的横线上,答在试卷上不得分。 (1s=32; s=32;printf(“%d”,s); 9) 以下叙述中正确的是 A) C 语言中的文件是流式文 B) 打开一个已存在的文件并进行了操作后,原有文件中的C) 在一个程序中但个对文件进行了写中后,必须先关闭该文件然后

22、再打开,才能数据 50) 有以下程序 #include stdmain() FILE * char ch=”abcd” fp=fopen(“abc.dat”, for(i=0;ix)?x:d; (9) 有以下程序,若运行时键盘输入:18,11回车 ,则程序的输出结果是【9】 Main() int x,ax=(ab)?a:b; x=(xb 12 While(ba) b-=a; printf(“%3d%3dn”,a,b); (10)下程序的功能是:将输入的正数按逆序输出。例如:若输入 135 则输出 531。请填空。 ; ter a number:”); scanf(“%d”,&n); n%10;

23、 printf(“%d”,s); 【10】 以#include main() int n,sprintf(“Enprintf(“Output: “); do s=; (11) ,函数 fun 的功能是计算 x-2x+6,主函数中将调用 fun 函数计算: 请 “math.h” return (x*x-2*x+6); y1,y2; ; scanf(“%1f”,&x); while(n!=0); printf(“n”); 以下程序中y1=(x+8)-2(x+8)+6 y2=sin(x)-2sin(x)+6 填空。 #include double fun(double x) main() doubl

24、e x, printf(“Enter x:”) y1=fun(【11】); y2=fun(【12】); printf(“y1=%1f,y2=%1f ”,y1,y2); 下面程序的功能是:N 行 N 列二维数组中每一行的元数进行排序, 第 0 行从小到大排 2 3 4 1 1 2 3 4 n将 (12) 序,第 1 行从大到小排序,第 2 行从小到大排序,第 3 行从大到小排序,例如: 13 当 A= 8 6 5 7 则排序后 A= 8 7 6 5 请填空。 11 12 10 9 9 10 11 12 15 14 16 13 16 15 14 13 #define N 4 v0;jN-1;j+)

25、 】oid sort(int aN) int i,j,k,t; for(i=0;iN;i+) for(j= for(k=【13;kN;k+) 为偶数来确定按升序或降序来排序*/ /*判断行下标是否 if(【14】? aijaik) void outarr(int aNN) 2,3,4,1,8,6,5,7,11,12,10,9,15,14,16,13; (aa); /*以矩阵的形式输出二维数组*/ 中的函数 strcpy2()实现字符串两次复制,即将 t 所指字符串复制两次到 s 所指内存空间中,合并形成一个新字符串,例如,若 t 所指字符串为:efgh,调用 strcpy2 后,s 所,cha

26、r *t) t=aij; aij=aik; aik=t; .main() int aaNN= outarr sort(aa); outarr(aa); (13) 下列程序指字符串为:efghefgh。请填空。 #include #include void strcpy2(char *s 14 char *p=t; while(*s+=*t+); S=【15】; While(【16】=*p+); ar str100=”abcd”,str2=”efgh”; str1,str2);printf(“%sn”,str1); Main() chStrcpy2( (14) 下面程序的运行结果是:【17】。

27、#include n-1); t aa10=1,2,3,4,5,6,7,8,9,10,s; ,4); printf(“%dn”,s); 件:t4.h和t4.c组成,程序编译运行的结果是【18】int f(int a,int n) if (n1) return a0+f(a+1,else return a 0; main() ins=f(aa+2 (15) 下面程序由两个源程序文。 h 的源程序为: *N) include #define M 8 t4.#define N 10 #define f2(x) (x t4.c 的源程序为: # 15 #define f(x) (x)*M) %dn”,

28、i,j); 能是建立一个有 3 个结点的单循环链表, 然后求各个结点数值域 data 中数 p q r #include #include uct NODE*next; struct NODE *pint sum=0; ct NODE*)malloc(sizeof(struct NODE); c(sizeof(struct NODE); ODE*)malloc(sizeof(struct NODE); #include “t4.h” main() int i,j; i=f(i+1);j=f2(j+1); printf(“%d (16) 下面程序的功据的和,请填空。 struct NODE in

29、t data; str; main() ,*q,*r, p=( struq=( struct NODE*)mallor=( struct Np-data=100; q-data=200; r-data=300; p-next=q; q-next=r; r-next=p; sum= p-data+ p-next+ r-next-next【19】; printf(“%dn”,sum); 100 200 300 16 17方式打开文件“d1.dat”,写入 1100 这 100 个制“读”方式打开文件“d1.dat” ,将这 100 个整数读入到另一个数b 中,并打印输出,请填空。 n(“d1.dat”,”wb”); +) ai=i+1; 00,fp); (17) 有以下程序,其功能是:以二进制“写”数后关闭文件,再以二进组#include main() FILE *fp; int i,a100,b100; fp=fopefor(i=0;i100;ifwrite(a,sizeof(int),1fclose(fp); fp=fopen(“d1.dat”,【20】); fread(b,sizeof(int),100,fp); fclose(fp); for(i=0;idata 20、”rb” 18

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 工程图纸

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁