版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、四川省普通高等学校计算机应用知识和能力第二十六次等级考试二级(c与c+语言) 笔 试 试 卷时间: 2007年4月 14 日 上午 9:0011:00第一部分软件技术基础(共15分)一、是非判断题(每小题1分,共10分)( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选a,否则选b )1. windows是多用户多任务操作系统。( 1 )2. 在程序设计中,常用一维数组来表示线性表的顺序存储空间。( 2 )3. 在面向对象的软件开发方法中,类可以创建对象,类是对象的实例,对象是生成类的模板。( 3 )4. 在计算机系统中,操作系统是处于裸机之上的第一层软件。( 4 )5. 数据的存储结
2、构与数据的处理效率无关。( 5 )6. 提供没有错误的程序是提高软件的可维护性的基本措施。( 6 )7. 中断控制方式适用于外设同cpu之间进行大量数据交换。( 7 )8. 在软件工程中,结构化软件开发方法是一种自顶向下分阶段实现的软件开发方法。( 8 )9. 进程把程序作为它的运行实体,没有程序也就没有进程。 ( 9 )10.软件工程的目的是最终解决软件的生产工程化。( 10 )二、选择题(每小题1分,共5分)1. 以下哪种测试方法不属于白盒测试技术 ( 11 )。 11 (a) 基本路径测试(b) 边界值分析测试 (c) 循环覆盖测试(d) 逻辑覆盖测试2. 若进栈序列为1,2,3,4,进
3、栈过程中可以出栈,则下列不可能的一个出栈序列是 ( 12 )。 12 (a) 1,4,3,2(b) 2,3,4,1(c) 3,1,4,2(d) 3,4,2,13. 在多道程序设计系统中,处于后备状态的作业要经过 ( 13 )调度后才能真正执行。 13 (a) 作业调度 (b) 作业调度和设备调度 (c) 进程调度 (d) 作业调度和进程调度4. 检查软件产品是否符合需求定义的过程称为 ( 14 )。 14 (a) 确认测试 (b) 集成测试(c) 验证测试 (d) 验收测试5. 数据字典是结构化软件开发方法中用于描述 ( 15 ) 工作阶段的工具。 15 (a) 需求分析 (b) 程序编码 (
4、c) 详细设计 (d) 可行性分析第二部分c与c+语言程序设计(共85分)一、单项选择题 ( 每小题1分,共10分 ) 1. 在下列枚举定义中, ( 16 ) 是正确的。(考点:枚举类型)16 (a) enum em1 my,your=4,his,her=his+10; (b) enum em2 no,yes;(c) enum em3 1,one=4,two,8;(d) enum em4 a,d,e+1,k; 2. 共用体(联合)类型变量在任何给定时刻( 17 )。(考点:结构体、共用体)17 (a) 所有成员一直驻留在各自的内存中(b) 只有一个成员驻留在内存中(c) 部分成员(1)驻留在内
5、存中(d) 没有成员驻留在内存中 3. 以下对结构体变量td的定义中,错误的是 ( 18 )。(考点:结构体)18 (a) typedef struct aa(b) struct aa int n; int n; float m; float m; aa; ; aa td; struct aa td; (c) struct (d) struct int n; int n; float m; float m; aa; td; struct aa td; (考点:一维数组中指针及运算) 4. 以下程序的运行结果是( 19 )。# include void main() int a10=1,2,3,
6、4,5,6,7,8,9,10,*p=&a3,*q=p+2; printf(%dn,*p+*q);19 (a) 16(b) 10(c) 8(d) 6 5. 若有定义int a=1,b=3,c=5,d=4; 则执行以下程序段后x的值为 ( 20 )。(考点:条件语句)if(ab) if(cd) x=1; else if(ac) if(bd) x=2; else x=3; else x=6; else x=7;20 (a) 1 (b) 3(c) 6(d) 2 6. 已知int a=5,b=9; 将a+b的值输出到屏幕上,下列实现方法中,正确的是( 21 )。(*考点:c+)21 (a) couta+
7、bendl (b) couta+bendl(c) couta+bendl(d) cout%dn,a+b 7. 以下程序的输出结果是( 22 )。(考点:宏定义、函数)# include # define p 3int f(int x) return(p*x*x); void main() printf(%dn,f(3+5); 22 (a) 192 (b) 29 (c) 25 (d) 编译出错 8. 以下程序输出的结果是 ( 23 )。(考点:数组及其运算)# include void main() char p=a,b,c,q=abc; printf(%d,%dn,sizeof(p),size
8、of(q);23 (a) 4,4 (b) 3,3(c) 4,3(d) 3,4 9. 下面哪个是合法的数组定义 ( 24 )。 (考点:数组)24 (a) char a=h,e,l,l,o;(b) char a5=h,e,l,l,o;(c) char a5=h,e,l,l,o;(d) char a5=hello; 10. 表达式0x13&0x17的值是 ( 25 ) 。(考点:位运算)25 (a) 0x17 (b) 0x13(c) 0x18(d) 0xec二、读程序回答问题 ( 每个选择3分,共45分 ) 1. 读程序,回答问题。(考点:ifelse条件语句)# include void mai
9、n() int x,y; scanf(%d,%d,&x,&y); if(xy) x=y;y=x; else x+;y+; printf(%d,%dn,x,y); getch();程序的输出结果是( 26 )。26 (a) 有语法错误,不能通过编译(b) 若输入数据3和4,则输出4和5(c) 若输入数据4和3,则输出3和4(d) 若输入数据4和3,则输出4和4 程序中getch()函数的作用是( 27 )。27 (a) 输出结束字符(b) 输入开始字符(c) 方便看运行结果(d) 没有任何作用 2. 以下程序的运行结果为( 28 )。(考点:二维数组、指针数组)# include void ma
10、in() char ch210=693,825,*p2; int i,j,s=0; for(i=0;i2;i+) pi=chi; for(i=0;i2;i+) for(j=0;pij!=0&pij=9;j+=2) s=10*s+pij-0; printf(%dn,s);28 (a) 92(b)6982(c) 9325 (d) 6385 3. 阅读如下程序:(考点:switch语句)# include void main() int a=0,b=2,c=3; switch(a) case 0: switch(b=2) case 1: putchar(&);break; case 2: putch
11、ar(%);break; case 1: switch(c) case 1: putchar($); case 2: putchar(*);break; default: putchar(#); 29 (a) &%(b) if(x=0)|(x=1) return 3; p=x-fun(x-2); return p;void main() int a; printf(n enter a positive integer:); scanf(%d,&a); if(a0) printf(input errorn); else printf(%dn,fun(a); 该函数的功能是( 30 )。30 (a
12、) 利用递归函数f(x)=x-f(x-2)(b) 计算数学函数f(x)=f(x-2)(c) 计算x的阶乘(d) 以上都不是 如果从键盘输入a的值为9,则运行的结果是( 31 )。31 (a) 9 (b) 7(c) 3(d) 1 5. 以下程序的输出结果是( 32 )。(考点:全局变量的作用范围)# include void fun() extern int x,y; int a=15,b=10; x=a-b; y=a+b; printf(%d,%dn,x,y); int x,y;void main() int a=7,b=5; x=a+b; y=a-b; fun(); printf(%d,%d
13、n,x,y);32 (a) 5,25 (b) 12,2 (c) 2,12 (d) 25,5 5,25 12,2 2,12 25,5 6. 读程序,回答问题。(考点:结构体数组、结构体指针、函数(指针参数)# include struct stu int num; char name10; int age;void fun(struct stu *p) printf(%sn,(*p).name ); void main() struct stu students3=9801,zhang,20,9802,wang,21,9803,zhao,19; fun(students+2); fun函数的功能
14、是( 33 )。33 (a) 结构体数组排序(b) 输出结构体的name成员(c) 输入结构体数组的数据 (d) 计算students数组加2后的值 运行该程序,输出的结果是( 34 )。34 (a) zhang (b) wang(c) zhao(d) 9801 7. 读程序,回答问题。(考点:函数(指针参数)、指针运算)# include char func(char *s) char *p=s; while(*p!=0) p+; return p-s;void main() printf(n%dn,func(hello!); getch(); 程序的运行结果是( 35 )。35 (a) 3
15、(b) hello!6(c) 无输出 (d) 6 指针变量不可以进行的运算是( 36 )。36 (a)指针变量加整型常量(b) 指印变量减整型常量(c) 指针变量加变量指针变量 (d) 指针变量减指针变量 8. 读程序,回答问题。(考点:命令行参数)void main(int argc,char *argv) while(-argc0) printf(%s,argvargc); printf(n); 若以上程序经编译连接后生成可执行文件2-8.exe,运行时输入命令行:2-8 abcdefghijkl 则输出结果为( 37 )。37 (a) abcdefg(b) l(c) lkjihgfedc
16、ba(d) abcdefghijkl 9. 读程序,回答问题。(考点:共用体及指针)# include union pw int i; char c2;*p,a;void main() p=&a; p-i=5; p-c0=10; p-c1=1; printf(%dn,a.i);程序的运行结果为( 38 )。38 (a) 266 (b)1 (c) 10 (d) 5若将程序中的union改为struct ,则程序的运行结果为( 39 )。39 (a) 266 (b)1 (c) 10 (d) 5 10. 读程序,回答问题。(考点:变量的作用范围)# include void main() int m
17、=1,n=2,t=3; +m; t+=+n; int n=10,t; t=n*2; m+=t; printf(%d,%d,%dn,m,n,t); printf(%d,%d,%dn,m,n,t);程序的运行结果是( 40 )。40 (a) 22,11,5(b) 22,10,20(c) 32,9,5(d) 16,21,6 22,3,9 22,3,6 18,5,6 22,3,6注意: 请把下面“程序填空”中各小题答案写在主观题答题纸上 每一个空只填一个语句或一个语句所缺的部分内容三、程序填空 ( 每空2分,共30分 ) 1. 下面程序的功能是:统计c语言源程序(file3-1.c)文件中的“”和“”
18、是否配对,即“”和“”的数目是否相等。如果配对,则输出“ok!”否则输出“error!”。(考点:文件、字符配对算法)# include # include void main() file *fp; ; int ch1=0,ch2=0; if(fp=fopen(file3-1.c, )=null) printf(file open error!n); exit(0); while(!feof(fp) =fgetc(fp); if(ch1=) ch1+; if(ch2=) ch2+; fclose(fp); if(ch1=ch2) printf(ok!n); else printf(error
19、!n); 2. 下面程序的功能是:将一个数插入到一个有序数组(从小到大)中,使插入以后的数组仍然有序。采用的算法是:确定要插入数的位置,然后将比这个数大的数后移一个位置,在空出的位置上将该数插入。(考点:数组、插入排序算法)# include void main() int a11=1,3,6,7,9,12,14,18,19,20,x; int i,p; printf(input a data:n); scanf(%d,&x); for(i=0,p=10;i10;i+) if(xai) ; break; for(i=9; ;i-) ai+1=ai; ; printf(the array:n);
20、 for(i=0;i11;i+) printf(%4d,ai); printf(n); 3. 以下程序能统计一个英文句子(以 . 号结束)中最长单词的长度。(考点:字符数组、函数(指针参数)、单词长度处理算法)# include int count(char *p) int word=0,max=0; while(*p!=.) while(*p=a)|(*p=a) ; p+; if( ) max=word; ; p+; return max;void main() char str80; gets(str); printf(max=%dn,count(str); 4. 下面程序中,函数sumc
21、olummin的功能是:求出m行n列二维数组每列元素中的最小值,并计算它们的和值。主函数中输出和值。(考点:二维数组、函数(指针参数)、二维数组最值求和算法)# include # define m 2# define n 4void sumcolummin(int amn,int *sum) int i,j,k,s=0; for(i=0;in;i+) k=0; for(j=0;jaji) k=j; s+= ; =s;void main() int xmn=3,2,5,1,4,1,8,3,s; sumcolummin( ); printf(%dn,s); 5. 以下程序采用直接选择法对数组a中
22、的10个数进行降序排列,然后按每行5个数的格式输出。(考点:数组、选择排序算法)# include void main() int i,j,k,t,a10=1,4,3,5,7,9,2,0,6,8; for(j=0;j9;j+) k=j; for(i=j+1;i ) k=i; t=aj; *(a+j)= ; *(a+k)=t; for(i=0;i10;i+) printf( (i%5) ? %4d : , *(a+i) ); printf(n);(第一套)(60分钟)一、程序调试(文件名为test1-1.c 40分)下列程序其功能是:计算并输出m以内最大的10个素数之和,m由主函数传给fun函数
23、。例如:当m的值为100,则函数的值为732。请修改程序中的错误,使之能输出正确的结果。注意:不得增加行或删行,不得更改原程序结构。#includeint fun(int m) int sum=0,n=0,j,yes; while(m=2)|(n10) yes=0; for(j=2;j=m/2;j+) if(m%j=0) yes=0; break; if(yes) sum+=m; n+; m+; return;void main() int m; printf(enter m:n); scanf(%d,m); printf(%dn,fun(m);二、编写程序(文件取名为test1-2.c 60
24、分)磁盘上的test1-2.txt文件中以文本形式存放有10名学生的记录,每条记录由学号和一门课程成绩组成。用函数调用方式编写程序,要求实现:在main函数中读入10名学生记录,存入结构数组s,调用fun函数,把平均成绩和分数最低的学生记录输出到屏幕上。被调函数fun求出10名学生的平均成绩并统计分数最低的学生记录(注意:分数最低的学生可能不止一个),fun的参数是数组s的首地址和数组h的首地址(h中存放分数最低的学生记录),fun的返回值是分数最低的学生的人数。一个学生记录放在如下结构中:struct student char num10;int s;(第二套)(60分钟)一、程序调试(文件
25、名为test2-1.c 40分)下列程序其功能是:程序中fun函数的功能是在一个字符数组中查找一个指定的字符,若数组中含有该字符则返回该字符在数组中第一次出现的位置(下标值);否则返回1,查询结果在main函数中输出。请修改程序中的错误,使之能输出正确的结果。注意:不得增加行或删行,不得更改原程序结构。#includevoid fun(char *a,char ch) int i,j; for(i=0;i+) if(*(a+i)=ch) j=i; continue; else i=-1; return j;void main() char str100,ch; int k; printf(en
26、ter a string:); ges(str100); printf(enter a character:); ch=getchar(); k=fun(); if(k=-1) printf(not found!n); else printf(found=%dn,k);二、编写程序(文件取名为test2-2.c 60分)已有一数据文件test2-2.dat,文件中的数据依次由:准考证号、笔试成绩、上机成绩三项组成,中间由空格分开。编程统计及格(笔试成绩和上机成绩均大于等于60分的为及格)的考生人数,以及及格率(即及格考生在总人数中占的百分比),并将获得及格的考生信息(准考证号、笔试成绩、上机成
27、绩),考生总人数,获得及格的考生的考生人数和及格率输出到屏幕上同时写入到文件test2-2.out中。(第三套)(60分钟)一、程序调试(文件名为test3-1.c 40分)下列程序其功能是:在程序中有一fun函数,其功能是:在字符串s中的数字字符(不超过8个)取出,按原来顺序组成整数后输出。例如:当s中的字符串为:“a12c9d76ef”,由取出的正整数为12976。请改正程序中的错误,使程序能得出正确的结果。注意:不得增加行或删行,不得更改原程序结构。#include#includevoid fun(char *s,char *t,int k) int i; k=0; for(i=0;si
28、;i+) if(0=si&si=9) t*k=si; *k+=1; void main() char s100,t9; long int n; int i,k; printf(nplease entet string s:); scanf(%s,s); fun(s,t,&k); for(i=0,ik;i+) n+=(tk-1-i-0*pow(10,i); printf(the result is:%d:,n); 二、编写程序(文件取名为test3-2.c 60分)已有一数据文件test3-2.dat,内容是9位评委为位艺术考生的艺术表演按考生编号的评分结果(第一行的第一列为考生编号,后9列为9
29、位评委的打分),编写程序实现:结考生考试成绩进行统计,去掉一个最高分和一个最低分作为最后得分,将7位评委打分的平均值作为考生的最后成绩。将结果按test3-2.dat文件的格式,在第一行的最后加上平均分输出到屏幕上。 要求数据文件中的考生信息输入到如下结构数组中:struct defen char ksbh10;int cj9;ks10;(第四套)(60分钟)一、程序调试(文件名为test4-1.c 40分)下列程序其功能是:在字符串中找出asii码值最大的字符,将其放在第一个位置上,并将该字符前的字符向后顺序移动。例如:输入字符串abcedefg,调用fun函数后输出的字符串为:eabcdf
30、g.。请改正程序中的错误,使程序能得出正确的结果。注意:不得增行或删行,不得更改原程序的结构。#includevoid fun(char p) char max,*q; int i=0; max=pi; while(pi!=0) if(maxpi) max=pi; p=q+i; i+; while(qp) *q=*(q-1); q+; p0=max;void main() char str80; printf(enter a string:); gets(str); printf(nthe original string:); puts(str); fun(str); printf(nthe
31、string after moving:); puts(str);二、编写程序编写程序求表达式的值:s=a+aa+aaa+.+aaa(此处aaa表示n个a,a和n的值均在1至9之间)。例如:a=3,n=4时,s=3+33+333+33333其值为3702。要求用函数调用方式编写程序:main函数中输入a和n,调用函数fun完成表达式值的计算(a和n作为fun函数的参数,表达式的值作为fun函数的返回值),然后main函数将结果显示在屏幕上,同时存放在test4-2.txt文件中。四川省普通高等学校计算机应用知识和能力第二十四次等级考试二级(c与c+语言) 笔 试 试 卷时间: 2006年4月
32、15 日 上午 9:0011:00第一部分软件技术基础(共15分)一、是非判断题(每小题1分,共10分)( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选a,否则选b )1. 顺序表和线性链表的物理存贮形式都是顺序存贮。( 1 )2. 数据类型是某种程序设计语言中已实现的数据结构。( 2 )3. 如果通过软件测试没有发现错误,则说明软件是完全正确的。( 3 )4. 快速原型模型可以有效地适应用户需求的动态变化。( 4 )5. 不同进程之间的动作在时间上不能重叠。( 5 )6. 分区式存储管理能够进行存储空间共享。( 6 )7. 链接文件和索引文件都可以非连续存放。( 7 )8. 中断处
33、理一般分为中断响应和中断处理两个步骤。前者由软件实施,后者主要由硬件实施。( 8 )9. 在c+语言中,“重载”表达了最简单的多态性。 ( 9 )10.进程调度根据一定的调度算法,从等待队列中挑选出合适的进程。( 10 )二、选择题(每小题1分,共5分)1. 在数据结构中,一个存储结点存放一个 ( 11 )。 11 (a) 数据项 (b) 数据元素 (c) 数据结构(d) 数据类型2. 把逻辑地址转变为存储的物理地址的过程称作 ( 12 )。 12 (a) 编译(b) 连接 (c) 运行(d) 重定位3. spooling技术可以实现设备的 ( 13 )分配。 13 (a) 虚拟 (b) 共享
34、 (c) 独占 (d) 物理4. 允许用户把若干作业提交计算机系统集中处理的操作系统称为 ( 14 )。 14 (a) 分时操作系统 (b) 实时操作系统 (c) 网络操作系统 (d) 批处理操作系统5. 进程从运行状态进入就绪状态的原因可能是 ( 15 )。 15 (a) 被选中占有处理机 (b) 时间片用完 (c) 等待的事件已发生 (d) 等待某一事件第二部分c与c+语言程序设计(共85分)一、单项选择题 ( 每小题1分,共10分 ) 1. 以下能正确进行字符串赋值的是 ( 16 )。16 (a) char s5=a,e,i,o,u;(b) char s5; s=good;(c) cha
35、r s5=abcd;(d) char s5; s =good; 2. 有下面的说明和语句,则输出的结果是( 17 )。char a=9,b=020;printf(%on,a&b1);17 (a) 0377(b) 040(c) 32 (d)以上答案均不对 3. 若有float x; 则sizeof ( x ) 和sizeof ( float ) 两种描述 ( 18 )。18 (a) 都正确 (b) 都不正确 (c) 前者正确,后者不正确 (d) 后者正确,前者不正确 4. 若有代数式,则不正确的c语言表达式是( 19 )。19 (a) 3*a*e/b*c (b) 3*a*e/b/c(c) a/b
36、/c*e*3(d) a*e/c/b*3 5.下列程序运行的结果是 ( 20 )。 main() struct cmplx int x; int y; cnum2=1,3,2,7; printf(%dn,cnum0.y/cnum0.x*cnum1.x);20 (a) 0 (b) 1(c) 3(d) 6 6. 若有以下说明和语句,且0=iy)?x:y; z=(xy)?x:y; return z; return z; (c) int fun(int x,int y)(d) fun(int x,int y,int *z) return ( (xy) ? x : y ); *z = (xy) ? x :
37、 y ; 9. 下面c+的语句 ( 24 )能实现printf(%d,%dn,a,b); 的功能。 24 (a) cina,b(b) cinab(c) couta,b(d) couta,bendl 10. 在如下程序段中的while循环 ( 25 ) 。int k=0;while(k=1) k+;25 (a) 有语法错,不能执行 (b) 无限循环 (c) 一次都不执行 (d) 执行一次二、读程序回答问题 ( 每个选择3分,共45分 ) 1. 下列程序运行的结果为( 26 )。# include main() int k=0; char c=a; do switch(c+) case a: k+
38、;break; case b: k-; case c: k+=2;break; case d: k=k%2;continue; case e: k=k*10; break; default : k=k/3; k+; while(cg); printf(k=%d,k);26 (a) k=1 (b) k=2 (c) k=3 (d) k=4 2. 读程序并回答问题。# include void fun(char *p,int n) int i; if( (i=n/10) != 0 ) fun(p+1,i); *p=n%10+0;void main() int num; char str10= ; s
39、canf(%d,&num); fun(str,num); puts(str);若输入整数3567,请回答下列两个问题。 (1) 程序中的fun函数被调用的次数为( 27 )。27 (a) 3 (b) 4 (c) 5 (d) 6(2) 程序的运行结果为( 28 )。28 (a) 3567(b)5673(c) 6753 (d) 7653 3. 阅读如下程序:# include abc(s,t,k)int *s,t,*k; int p; for(p=0,*k=p;ps*k) *k=p;main() int a10,i,k; for(i=0;i10;i+) scanf(%d,&ai); abc(a,1
40、0,&k); printf(%d,%dn,k,ak);以上程序的功能是( 29 ): 29 (a) 查询并输出数组中最大值的位置及最大值(b) 查询并输出数组中最小值的位置及最小值(c) 计算数组中各元素之和 (d) 计算数组中各元素之乘积 4. 读下列程序并回答问题。# include void main(int argc,char *argv) char ch; file *in,*out; if(argc!=3) exit(1); if(out=fopen(argv1,r)=null) printf(cannot open the file.n); exit(0); if(in=fope
41、n(argv2,w)=null) printf(cannot open the file.n); fclose(out); exit(0); while(ch=fgetc(out)!=eof) if(ch=a&ch=z) ch=a+ch-a; fputc(ch,in); else fputc(ch,in); fclose(in); fclose(out);上述c程序经编译、连接后生成一个可执行文件,文件名为myfile.exe。假设磁盘上有一个文件file1.dat,其内容为this is an example,若在dos提示符下键入:myfile file1.dat file2.dat,请回答下面两个问题。 (1) 按上述要求运行后,文件file1.dat的内容为( 30 )。30 (a) this is an example (b) this is an example(c) this is an ex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论