![]() ![]() |
|
计算机等级考试二级C语言考前密卷(6) | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:12:04 文章录入:杜斌 责任编辑:杜斌 | |
|
|
一、选择题 (1)循环链表的主要优点是
(26)下列选项可以正确表示字符型常量的是 A)′\r′ B)"a" C)"\897" D)296 (27)下面对C语言的描述中,正确的是 A)函数一定有返回值,否则无法使用函数 B)C语言函数既可以嵌套定义又可以递归调用 C)在C语言中,调用函数时,只能将实参的值传递给形参 D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中 (28)阅读下面程序段,则执行后的结果为 #include "stdio.h" main() {int m=4,n=2,k; k=fun(m,n); printf("%d\n",k);} fun(int m,int n) {return(m*m*m-n*n*n);} A)64 B)8 C)56 D)0 (29)阅读下面程序段,则执行后输出的结果是 #include "stdio.h" main() { char fun(char,int); char a=′A′; int b=13; a=fun(a,b); putchar(a);} char fun(char a,int b) {char k; k=a+b; return k;} A)A B)M C)N D)L (30)编写求两个双精度数之和的函数,选项中正确的是 A)double add(double a,double b) {double s; s=a+b; return s; } B)double add(double a,b) {double s; s=a+b; return (s);} C)double add(double a double b) {double s; s=a+b; returns;} D)double add(a,b) {double a,b,s; s=a+b; return (s);} (31)已知int a;则下面的说明指针变量p的语句正确的是 A)int p=&a B)int *p=a C)int *p=&a D)int *p=*a (32)已知char **t;则变量t是 A)指向char变量的指针 B)指向指针的char变量 C)指向指针的指针 D)以上说法都不对 (33)阅读下面程序,执行后的结果为 #include "stdio.h" void fun(int *a,int *b) { int k; k=5; *a=k; *b=*a+k;} main() { int *a,*b,x=10,y=15; a=&x; b=&y; fun(a,b); printf("%d,%d\n",*a,*b);} A)10,15 B)5,15 C)5,10 D)15,10 (34)阅读下面程序,在程序执行后的结果为 #include "stdio.h" int *fun(int *a,int *b) { int m; m=*a; m+=*b-3; return(&m);} main() {int x=21,y=35,*a=&x,*b=&y; int *k; k=fun(a,b); printf("%d\n",*k);} A)53 B)21 C)35 D)14 (35)已知int a[10];则对a数组元素的正确引用是 A)a[10] B)a C)a+5 D)a[10-10] (36)在C语言中,一维数组的定义方法为 类型说明符 数组名 A)[常量表达式] B)[整型常量] C)[整型变量] D)[整型常量]或[整型表达式] (37)阅读下列程序,则运行结果为 #include "stdio.h" fun() { static int x=5; x++; return x;} main() { int i,x; for(i=0;i<3;i++) x=fun(); printf("%d\n",x);} A)5 B)6 C)7 D)8 (38)下列程序的输出结果是 #include "stdio.h" #defineM(x,y)x%y main() { int a,m=12,n=100; a=M(n,m); printf("%d\n",a--);} A)2 B)3 C)4 D)5 (39)阅读下面程序,则程序段的功能是 #include "stdio.h" main() { int c[]={23,1,56,234,7,0,34},i,j,t; for(i=1;i<7;i++) { t=c[i];j=i-1; while(j>=0 && t>c[j]) {c[j+1]=c[j];j--;} c[j+1]=t;} for(i=0;i<7;i++) printf("%d ",c[i]); putchar(′\n′);} A)对数组元素的升序排列 B)对数组元素的降序排列 C)对数组元素的倒序排列 D)对数组元素的随机排列 (40)阅读下列程序,则执行后的结果为 #include "stdio.h" main() { int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56}; printf("%x,%x\n",c[2][2],*(*(c+1)+1));} A)3e,6 B)62,5 C)56,5 D)3E,6 (41)下列选项中错误的说明语句是 A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′}; B)char a[]={"toyou\0"}; C)char a[]="toyou\0"; D)char a[]=′toyou\0′; (42)下述对C语言字符数组的描述中错误的是 A)字符数组的下标从0开始 B)字符数组中的字符串可以进行整体输入/输出 C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D)字符数组可以存放字符串 (43)阅读下列程序,则在执行后,程序的运行结果为 #include "stdio.h" #include "string.h" main() {char a[30]="nice to meet you!"; strcpy(a+strlen(a)/2,"you"); printf("%s\n",a);} A)nice to meet you you B)nice to C)meet you you D)nice to you (44)阅读下面程序,则执行后的结果是 #include "stdio.h" main() {char str[]="tomeetme",*p; for(p=str;p A)tomeetme B)tmem C)oete D)tome (45)下面程序的文件名为t.exe,在DOS下输入的命令行参数如下:t to meet me<回车> 则程序输出的结果是 #include "stdio.h" main(argc,argv) int argc;char *argv[]; {int i; printf("%d\n",argc);} A)3 B)4 C)2 D)以上答案都不正确 (46)阅读下面程序,则执行后的结果为 #include "stdio.h" long fun(int n) {if(n>2) return(fun(n-1)+fun(n-2)); else return(2);} main() {printf("%ld\n",fun(5));} A)10 B)15 C)20 D)以上3个答案都不正确 (47)已知如下定义,则sizeof(a)的值是 struct{int i; char c; double a; } a; A)8 B)9 C)10 D)11 (48)已知函数的原形如下,其中结构体a为已经定义过的结构,且有下列变量定义 struct a *f(int t1,int *t2,strcut a t3,struct a *t4) struct a p,*p1;int i; 则正确的函数调用语句为 A)&p=f(10,&i,p,p1); B)p1=f(i++,(int *)p1,p,&p); C)p=f(i+1,&(i+2),*p,p); D)f(i+1,&i,p,p); (49)下面程序段的输出为 #include "stdio.h" main() { printf("%d\n",12<<2);} A)0 B)47 C)48 D)24 (50)假定当前盘符下有两个文本文件,如下 文件名 a1.txt a2.txt 内容 123# 321# 则下面程序段执行后的结果为 #include "stdio.h" void fc(FILE *p) { char c; while((c=fgetc(p))!=′#′)putchar(c);} main() { FILE *fp; fp=fopen("a1.txt","r"); fc(fp); fclose(fp); fp=fopen("a2.txt","r"); fc(fp); fclose(fp); putchar(′\n′);} A)123321 B)123 C)321 D)以上答案都不正确 二、填空题 (1)常用的黑箱测试有等价分类法、 【1】 、因果图法和错误推测法4种。 解析: 黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法4种。 (2)测试的目的是暴露错误,评价程序的可靠性;而 【2】 的目的是发现错误的位置并改正错误。 解析: 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。 (3)软件维护活动包括以下几类:改正性维护、适应性维护、 【3】 维护和预防性维护。 解析: 软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;适应性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。 (4)在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【4】 。 解析: 在面向对象技术中,主要用到对象(object)、类(class)、方法(method)、消息(message)、继承(inheritance)、封装(encapsulation)等基本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。 (5)关键字ASC和DESC分别表示 【5】 的含义。 解析: ASC表示升序排列,DESC表示降序排列,多用在索引定义和SELECT语句中的ORDER子句中。 (6)定义int a=5,b;,则执行表达式b=++a*--a之后,变量b的值为 【6】 。 【命题目的】考查对于基本运算符的掌握情况。 【解题要点】++和--做前缀使用的时候,先对变量进行增1或减1,之后进行其他的运算。 【考点链接】赋值运算符的优先级仅仅高于逗号运算符。 (7)以下程序的输出结果是 【7】 。 #include "stdio.h" main() {int a=065; printf("%d\n",--a); } 【命题目的】考查对于数据的格式化输出的掌握情况。 【解题要点】八进制的65转换为十进制的53之后减1输出。 【考点链接】0开头的是八进制整数。 (8)阅读下面程序,则执行后的输出结果是 【8】 。 #include "stdio.h" main() {int x,y,z; x=1;y=2;z=3; if(x>y)if(x>z)printf("%d",x); else printf("%d",y); printf("%d\n",z); } 【命题目的】考查对于if语句的掌握情况。 【解题要点】C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf("%d\n",z);语句。 (9)如下语句printf("%c\n",′B′+40);在执行后的输出结果是 【9】 。 【命题目的】考查对于字符常量运算的掌握情况。 【解题要点】在C程序中的字符量可参与任何整数运算。 【考点链接】%c是以字符的形式输出。 (10)阅读下面程序,则程序的执行结果为 【10】 。 #include "stdio.h" main() {int a=30,b=20,z; z=fun(a+b,a-b); printf("%d\n",z); } fun(int a,int b) {int z; z=a/b; return z; } 【命题目的】考查对于函数的调用和返回值的掌握情况。 【解题要点】函数调用的时候,函数名字必须与所调用的函数名完全一致,形参与实参类型要一致,在没有给出函数返回值类型的情况下,默认为整形,当返回值为整型的函数放到主函数后面时,可以不需要事先说明就调用这个函数。 【考点链接】retrun既可以返回一个普通常量,也可以返回一个指针变量。 (11)下面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。 fun(int *p,int n) {int *q; int max,min; max=min=*p; for(q=p; 【11】 ;q++) if( 【12】 )max=*q; else if( 【13】 )min=*q; } 【命题目的】考查对于函数的地址传递的掌握情况。 【解题要点】通过地址传递可以在被调函数中对调用函数中的变量进行引用。 (12)下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,请填空。 fun(int x,int b[]) { int k=0,r; do{ r=x% 【14】 ; b[ 【15】 ]=r; x/= 【16】 ; }while(x); } 【命题目的】考查对于数组操作的综合运用。 【解题要点】深刻理解十进制转化为二进制的方法,即取余法;数组名作为实参,在函数内部可以直接修改调用函数中定义的数组的值。 【考点链接】do…while循环,先执行循环体,后判断循环条件。 (13)下面函数的功能是将一个字符串的内容颠倒过来,请填空。 void fun(char str[]) {int i,j, 【17】 ; for(i=0,j= 【18】 ;i str[i]=str[j]; str[j]=k; } } (14)阅读下面程序,则程序的执行结果为【19】。 #include "stdio.h" fun(int k,int *p) { int a,b; if(k==1||k==2) *p=1; else{ fun(k-1,&a); fun(k-2,&b); *p=a+b; } } main() { int x; fun(6,&x); printf("%d\n",x); } (14)阅读下面程序,则程序的执行结果为【19】。 #include "stdio.h" fun(int k,int *p) { int a,b; if(k==1||k==2) *p=1; else{ fun(k-1,&a); fun(k-2,&b); *p=a+b; } } main() { int x; fun(6,&x); printf("%d\n",x); } (15)阅读下列程序,则程序的输出结果为【20】。 #include "stdio.h" struct ty {int data; char c; }; main() { struct ty a={30,′x′}; fun(a); printf("%d%c",a.data,a.c); } fun(struct ty b) { b.data=20; b.c=′y′; } 【命题目的】考查对于结构体的掌握情况。 【解题要点】本题的参数传递属于值传递,所以函数内不能改变调用函数中的数据。 |
|
![]() ![]() |