C语言(31次)笔试试题与答案解析.doc_第1页
C语言(31次)笔试试题与答案解析.doc_第2页
C语言(31次)笔试试题与答案解析.doc_第3页
C语言(31次)笔试试题与答案解析.doc_第4页
C语言(31次)笔试试题与答案解析.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三十一次等级考试二级(C与C+语言) 笔 试 试 卷一、是非判断题(每小题1分,共10分)( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B )1. 数据在计算机内存中的表示是指数据的存储结构。( 1 )2. 作业与进程的主要区别是前者是由系统自动生成,后者是由用户提交。( 2 )3. 从逻辑上可以把数据结构分为线性结构和非线性结构。( 3 )4. 在设备管理中,通道是处理输入、输出的软件。( 4 )5. 链表可以随机访问任意一个结点,而顺序表则不能。( 5 )6. 栈顶的位置是随着进栈和退栈操作而变化的。( 6 )7. 处于等待状态的进程,若其等待的事件已发生,就立即转入运行状态。( 7 )8. 任何两个并发进程之间一定存在互斥关系。( 8 )9. 在面向过程方法的软件生存期内,能准确确定软件系统必须做什么和必须具备的功能阶段是需求分析。( 9 )10.在软件测试的基本方法中,静态测试不用测试用例。 ( 10 )二、选择题(每小题1分,共5分)1. 若进栈序列为1,2,3,4,且进栈过程中可以出栈,则不可能出栈的序列是( 11 C ) 。 11 (A) 1,4,3,2(B) 2,3,4,1 (C) 3,1,4,2(D) 3,4,2,12. 操作系统本身是计算机系统软件的重要组成部分,而其物质基础是( 12 A )。 12 (A) 系统硬件(B) 程序(C) 数据结构(D) 标准程序库3. 外部设备完成了预定的输入/输出操作所引起的中断是( 13 B )。 13 (A) 外中断(B) I/O中断(C) 程序中断 (D) 标准程序库4. 以下的准则中哪个不是软件设计应遵循的( 14 D )。 14 (A) 抽象准则(B) 模块化准则(C) 信息屏蔽准则(D) 综合性准则5. 在结构化设计方法中,设计功能模块算法属于软件开发中的 ( 15 A )阶段。 15 (A) 详细设计 (B) 需求分析 (C) 总体设计 (D) 编程调试第二部分C与C+语言程序设计(共85分)一、单项选择题 ( 每小题1分,共10分 ) 1. 已知:char s=China,*p; (考点:字符指针) p=s;则下列叙述正确的是( 16 ) 。16 (A) s和p完全相同(B) *p与s0不等(C) *p与 s0相等(D) *s与p相等 2. 以下可以作为函数fopen中第一个参数的正确格式是(17)。(*考点:文件)17 (A) c:progfile1.dat(B) c:progfile1.dat(C) c:progfile1.dat(D) c:progfile1.dat 3. 若有定义:union data int i; float j; char s5;k; 则在Turbo C 2.0环境中sizeof(k)的值是(18)。(考点:共用体类型)18 (A) 2(B) 5(C) 11(D) 0 4. 下面四个选项中,合法的用户自定义标识是( 19 )。(考点:标识符命名)19 (A) int(B) a_b3(C) 3_bc(D) #mm 5. 已知结构体:。(考点:存储类型extern)struct student char name20; struct int year; int month; birth; char sex;stu; 以下赋值语句正确的是( 20 )20 (A) stu.birth=2009;(B) stu.year=2009;(C) student.birth.year=2009;(D) stu.birth.year=2009; 6. 下面程序的输出结果是( 21 )。(考点:宏定义)# include # define M 4# define N 2*M+1# define K N/2-5void main() printf(%dn,K); 21 (A) 2(B) 1(C) 0(D) 3 7. 有以下结构体及其变量的定义:struct node int data; struct node *next;*p,*q,*r;pqrdata nextdata nextdata next如图所示,指针p、q、r分别指向此链表中的三个连续结点。若要将q所指结点从链表中删除,使p所指结点与r所指结点连接,不能完成指定操作的语句是( 22 )。(考点:链表)22 (A) p-next=q-next;(B) p-next=p-next-next;(C) p-next=r;(D) p=q-next; 8. 下列程序段中,不是无限循环的是( 23 )。(考点:循环语句)23 (A)(B) k=0; j=100; do while(1) +k; j=j%100+1; whiel(k-=0); if( j100 ) break; (C) (D) s=3333; for( ; ; );while(s%2+s+%2); 9. 不能把字符串Hello!赋给字符数组b的选项是( 24 )。(考点:字符数组赋值)24 (A) char b10= H,e,l,l,o,!,0;(B) char b10; b=Hello!;(C) char b10; strcpy(b, Hello!);(D) char b10= Hello!; 10. 若变量已正确定义并赋值,以下符合C语言语法的表达式是 ( 25 ) 。(考点:表达式)25 (A) a:=b+1(B) a=b=c+2(C) int 18.5%3(D) a=a+7=c+b二、读程序回答问题 ( 每个选择3分,共45分 ) 1. 在下面程序中(考点:数组、函数(地址参数)、删除字符算法)# include void fun(char *s) int i,j; for(i=0,j=0;si!=0;i+) if(si=0 & si=9) /是否是数字字符 sj=si; j+; sj=0;void main() char s20=ab12cd34; fun(s); printf(%3d %3dn,sizeof(s),strlen(s); printf(%sn,s);(1) 第1个printf输出的结果为( 26 )。26 (A) 8 8 (B) 20 8(C) 20 20(D) 20 4(2) 第2个printf输出的结果为( 27 )。27 (A) abcd(B) ab12cd(C) 1234(D) ab12cd34 2. 下列程序的输出结果是( 28 )。(考点:函数(地址参数和普通参数)、指针运算)void fun(char *c,int d) *c=*c+1; /对c指针指向的目标对象加1后再赋给目标对象,间接改变了实参的值 d=d+1; /只能改变形参d变量的值void main() char a=A,b=a; fun(&b,a); printf(%c,%cn,a,b);28 (A) B,A(B) a,B(C) A,B(D) A,b 3. 下列程序的输出结果是( 29 )。(考点:带参数的宏定义)# include stdio.h# define GOOD(y) 2.84+y# define PR(a) printf(n%d,(int)(a)# define PRINT(a) PR(a);putchar(n)void main() int x=2; PRINT(GOOD(5)*x); PRINT(GOOD(5)*x) PR(GOOD(5)*x);putchar(n) printf(n%d,(int)( GOOD(5)*x) ;putchar(n) printf(n%d,(int)( 2.84+5 *x) ;putchar(n)29 (A) 11(B) 15(C) 13(D) 12 4. 下列程序运行后的输出结果是( 30 )。(考点:结构体类型、函数(普通参数)、全局变量和局部变量)# include stdio.hstruct tree int x; char *s;t; /t为全局变量fun( struct tree t ) /t为与全局变量同名的局部变量 t.x=10; t.s=computer; return(0); void main() t.x=1; /修改全局变量成员的值 t.s=minicomputer; /修改全局变量成员的值 fun( t ); /参数为单向值传递 printf(%d,%sn,t.x,t.s);30 (A) 10,computer(B) 1,minicomputer(C) 1,computer(D) 10,minicomputer 5. 下列程序编译连接后生成可执行文件CAD.EXE,输入以下命令行:CAD FILE1 FILE2 ( 表示回车)程序的运行结果是( 31 )。(考点:命令行参数)# include stdio.hvoid main( int argc , char *argv ) int i; printf(%dn,argc); / 3 for(i=0;i=argc-1;i+) /输出3个字符串 printf(%s,argvi); printf(n); 31 (A) 2 (B) 3 cadfile1file2 cadfile1file2(C) 2(D) 3 CAD.EXEFILE1FILE2 CAD.EXEFILE1FILE2 6. 有下列程序:(考点:for循环嵌套、continue语句、break语句) # include stdio.hvoid main()i01x+x+j01230123x+continuex+continuex+continuex+continuex+x+ int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2) continue; x+; x+; printf(%dn,x);(1)该程序的运行结果是( 32 )32 (A) 6(B) 4(C) 8(D) 2(2)若将程序中的continue 改为break,则输出结果为( 33 )33 (A) 6(B) 4(C) 8(D) 2 7. 有如下程序:(考点:文件打开方式、文件操作函数、函数调用)# include stdio.h# include string.hvoid fun(char *fname,char *st) FILE *myf; int i; myf=fopen(fname,w); /w方式打开是新建一个文件 for(i=0;istrlen(st);i+) fputc(sti,myf); fclose(myf);void main() fun(text,world); /test文件中的内容“world” fun(text,hello); /test文件中的内容“hello” (1) 运行该程序后,文件text中的内容为( 34 )。34 (A) world (B) worldhello(C) hello(D) helloworld (2) 若将文件打开方式w改为a,则运行程序后,文件text中的内容为( 35 )。35 (A) world (B) worldhello(C) hello(D) helloworld 8. 有如下程序:(考点:递归函数 )# include stdio.hint fun(int n) int y; if(n=1) y=1; else if(n=2) y=2; else y=n+fun(n-2); return y;void main() int x; scanf(%d,&x); printf(%d,fun(x);若输入x的值为8,则程序的输出结果为( 36 )。36 (A) 16(B) 36(C) 30(D) 20与函数fun等价的非递归程序为( 37 )。37 (A) int fun(int n) (B)int fun(int n) int i,s=0; for(i=1;i=1;i=i-2) s=s+i; return s;int fun(int n) int i,s=0; for(i=1;i=1;i-) s=s+i; return s; 9. 有如下程序:(考点:数组、函数、静态存储类型)# include int fun(int *x,int n) static int s=0,i; / static型变量具有继承性 for(i=0;in;i+) s=s+xi; /累加x指针指向的数组元素值 return s;void main() int x5=1,2,3,4,5,y4=6,7,8,9,s; s=fun(x,5)+fun(y,4); printf(%dn,s); (1) 程序的运行结果为( 38 )。38 (A) 15(B) 30(C) 45(D) 60 (2) 若将fun函数中的static去掉,则程序的运行结果为( 39 )。39 (A) 15(B) 30(C) 45(D) 6010. 有如下程序:(考点:循环、switch语句)# include void main() char ch; while(ch=getchar()!=n) switch(ch) case 1: case 2: putchar(ch+2); case 3: case 4: putchar(ch+2); break; default: putchar(ch+2); 若输入135,程序的运行结果为( 40 )。40 (A) 135(B) 357(C) 3357(D) 3333557 注意: 请把下面“程序填空”中各小题答案写在主观题答题纸上 每一个空只填一个语句或一个语句所缺的部分内容三、程序填空 ( 每空2分,共30分 ) 1. 函数fun的功能是:将nn(1n=10)方阵的下三角(包括对角线元素)m,例如:1 2 3 若m=2,则处理后的方阵为: 2 2 34 5 6 8 10 67 8 9 14 16 18在main函数中调用fun函数,并分行输出处理后的方阵。请填空。(考点:矩阵处理算法)# include void fun(int a10,int n,int m) int i,j; for(i=0;in;i+) for(j=0;j= i ;j+) aij=aij*m;void main() int w1010=1,2,3,4,5,6,7,8,9,m,i,j; scanf(%d,&m); fun( w ,3,m); for(i=0;i3;i+) for(j=0;j3;j+) printf(%4d,wij); printf( “n” ); 2. 下面程序的功能是输出所有的5位4倍反序数。请填空。说明:当一个5位整数的4倍刚好是其反序数,则称其为5位4倍反序数。例如21978的反序数是87912,而87912=4*21978,所以21978就是一个5位4倍反序数。输出结果为:21978 87912(考点:循环、逆置整数算法)# include void main() long n,k,t,m,j=0; for(n=10000;n=99999;n+) /穷举所有的5位整数 m=0; t=n; for(k=1;k= 5 ;k+) / while( t!=0 ) m=m*10+t%10 ; t=t/10 ; if(m=4*n) j+; printf(%ld %ldn,n,m); 3. 下面程序的功能是:对一整型数组中下标是3的倍数的元素进行升序排序,其余元素保持不变。请填空。(考点:数组、排序算法)# include void main() int a16=16,15,14,13,12,11,10,9,8,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论