计算机类 二级 C
2007年9月全国计算机等级考试二级笔试试卷(C语言程序设计) 66 题 含答案 C
1 单选题 1 / 66
软件是指
A 程序 B 程序和文档 C 算法加数据结构 D 程序、数据与相关文档的完整集合
查看答案 D. 程序、数据与相关文档的完整集合
2 单选题 2 / 66
软件调试的目的是
A 发现错误 B 改正错误 C 改善软件的性能 D 验证软件的正确性
查看答案 B. 改正错误
3 单选题 3 / 66
在面向对象中,实现信息隐蔽是依靠
A 对象的继承 B 对象的多态 C 对象的封装 D 对象的分类
查看答案 C. 对象的封装
4 单选题 4 / 66
下列叙述中,不符合良好程序设计风格要求的是
A 程序的效率第一,清晰第二 B 程序的可读性好 C 程序中要有必要的注释 D 输入数据前要有提示信息
查看答案 A. 程序的效率第一,清晰第二
5 单选题 5 / 66
下列叙述中正确的是
A 程序执行的效率与数据的存储结构密切相关 B 程序执行的效率只取决于程序的控制结构 C 程序执行的效率只取决于所处理的数据量 D 以上三种说法都不对
查看答案 A. 程序执行的效率与数据的存储结构密切相关
6 单选题 6 / 66
下列叙述中正确的是
A 数据的逻辑结构与存储结构必定是一一对应的 B 由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 C 程序设计语言中的数组一般是顺序存储的,因此,利用数组只能处理线性结构 D 以上三种说法都不对
查看答案 D. 以上三种说法都不对
7 单选题 7 / 66
冒泡排序在最坏情况下的比较次数是
A n(n+1)/2 B nlog2n C n(n-1)/2 D n/2
查看答案 C. n(n-1)/2
8 单选题 8 / 66
一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为
A 219 B 221 C 229 D 231
查看答案 A. 219
9 单选题 9 / 66
下列叙述正确的是
A 数据系统是一个独立的系统,不需要操作系统的支持 B 数据库技术的根本目标是要解决数据的共享问题 C 数据库管理系统就是数据库系统 D 以上三种说法都不对
查看答案 B. 数据库技术的根本目标是要解决数据的共享问题
10 单选题 10 / 66
下列叙述中正确的是
A 为了建立一个关系,首先要构造数据的逻辑关系 B 表示关系二维表中各元组的每一个分量还可以分成若干数据项 C 一个关系的属性名表称为关系模式 D 一个关系可以包括多个二维表
查看答案 A. 为了建立一个关系,首先要构造数据的逻辑关系
11 单选题 11 / 66
C语言源程序名的后缀是
A .exe B .C C .obj D .cp
查看答案 B. .C
12 单选题 12 / 66
可在C程序中用作用户标识符的一组标识符是
A and 2007 B Date y-m-d C Hi Dr. Tom D case Bigl
查看答案 A. and 2007
13 单选题 13 / 66
以下选项中,合法的一组C语言数值常量是
A 028 .5e-3 B 12 OXa23 C 177 4c1.5 D 0x8A 10,000
查看答案 B. 12 OXa23
14 单选题 14 / 66
以下叙述正确的是
A C语言程序将从源程序中第一个函数开始执行 B 可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C C语言规定必须用min作为主函数名,程序将从开始执行,在此结束 D min可作为用户标识符,用以命名任意一个函数作为主函数
查看答案 C. C语言规定必须用min作为主函数名,程序将从开始执行,在此结束
15 单选题 15 / 66
若在定义语句:int a,b,c*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是
A scanf(“%d”,a,b,c); B scanf(“%d%d%d”,a,b,c); C scanf(“%d”,p); D scanf(“%d”,&p)
查看答案 C. scanf(“%d”,p);
16 单选题 16 / 66
以下关于long、int和short类型数据占用内存大小的叙述中正确的是
A 均占4个字节 B 根据数据的大小来决定所占内存的字节表 C 由用户自己定义 D 由C语言编译系统决定
查看答案 D. 由C语言编译系统决定
17 单选题 17 / 66
若变量均已正确定义并赋值,以下合法的C语言赋值语句是
A x=y=5; B x=n%2.5; C x+n=l; D x=5=4+1
查看答案 A. x=y=5;
18 单选题 18 / 66
有以下程序段 int j; float y; char name[50]; scanf(“%2d%f%s”,&j,&y,name) 当执行上述程序段,从键盘上输入55566 7777abc后,y的值为
A 55560.0 B 566.0 C 7777.0 D 566777.0
查看答案 B. 566.0
19 单选题 19 / 66
若变量已正确定义,有以下程序段 i=0; do printf(“%d,”i); while(i++); printf(“%d\n”,i); 其输出结果是
A 0,0 B 0,1 C 1,1 D 程序进入无限循环
查看答案 B. 0,1
20 单选题 20 / 66
有以下计算公式 若程序前面已在命令行中包含math.h 文件,不能够正确计算上述公式的程序段是
A if(x>=0) y=sprt(x); else y=sqrt(-x); B y=sqrt(x); if(x<0)y=sqrt(x); C if(x>=0)y=sqrt(x); if(x<0)y=sqrt(-x); D y=sqrt(x>0?x;-x);
查看答案 B. y=sqrt(x); if(x<0)y=sqrt(x);
21 单选题 21 / 66
设有条件表达式:(EXP)? i++ ; j—,则以下表达式中与(EXP)完全等价的是
A (EXP=0) B (EXP!=0) C (EXP=1) D (EXP!=1)
查看答案 B. (EXP!=0)
22 单选题 22 / 66
有以下程序 #include <stdio,h> main() ﹛inf y=9; for( ; y>0; y--) if(y%3=0) printf(“%d”, ‥y); ﹜ 程序的运行结果是
A 741 B 963 C 852 D 875421
查看答案 C. 852
23 单选题 23 / 66
已有定义:char c;,程序前面已在命令行中包含ctype. h 文件。不能用于判断c中的字符是 否为大写字母的表达式是
A isupper (c) B ‘A’<=c<=‘z’ C ‘A’=c&&c<=‘Z’ D c<=(‘z’-32)%%(‘a’-32)<=c
查看答案 B. ‘A’<=c<=‘z’
24 单选题 24 / 66
有以下程序 #includc <stdio.h> Main() ﹛int i, j,m =55 for(i=l;i<3;i++) for(j=3;j<=++) m=m%j; printf(“%d\n”,m); ﹜ 程序的运行结果是
A 0 B 1 C 2 D 3
查看答案 B. 1
25 单选题 25 / 66
若函数调用时的参数为变景时,以下关于函数形参和实参的途述中正确的是
A 函数的实参和其对应的形参共占用一存储单元 B 形参只是形式上的存在,不占用具体存储单元 C 同名的实参和形参占同一存储单元 D 函数的形参和实参分别占用不同的存储单元
查看答案 D. 函数的形参和实参分别占用不同的存储单元
26 单选题 26 / 66
已知字符‘A’的ASCII代码值是65,字符变量cl的值的‘A’,c2的值是‘D’。执行语句 printf(“%d,%d”,cl,c2-2);后,输出结果是
A A,B B A,68 C 65,66 D 65,68
查看答案 C. 65,66
27 单选题 27 / 66
以下途述中错误的是
A 改变函数形参的值,不会改变对应实参的值 B 函数可以返回地址值 C 可以给指针变量赋一个整数作为地址值 D 当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL
查看答案 C. 可以给指针变量赋一个整数作为地址值
28 单选题 28 / 66
以下正确的字符串常量是
A “╲╲╲” B ‘abc’ C Olympic D **
查看答案 D. **
29 单选题 29 / 66
设有定义:char p[]=﹛‘1’ ‘2’ ‘3’﹜、*q=p; 以下不能计算出一个char型数据所占字节数的表达式是
A sizeof(p) B sizeof(char) C sizeof(*q) D sizeof(p[0])
查看答案 A. sizeof(p)
30 单选题 30 / 66
有以下函数 int aaa(char *s) ﹛ char *t=s; while(*t++); t--; return(t-s); ﹜ 以下关于aaa函数的功能的叙述正确的是
A 求字符串s的长度 B 比较两个串的大小 C 将串s复制到串t D 求字符串s所占字节数
查看答案 A. 求字符串s的长度
31 单选题 31 / 66
若有定义语句:int a [3][6];,按在内存中的存放顺序,a数组的第10个元素是
A a[0][4] B a[1][3] C a[0][3] D a[1][4]
查看答案 B. a[1][3]
32 单选题 32 / 66
有以下程序 #include <stdio.h> void fun(char **p) {++p; printf(“%”﹨n”,*p);} main() { char *a[]={“Moming”, “Aftenoon”,“Evening”,“Night”}; fun(a) } 程序的运行结果是
A Aftemoon B ftemoon C Moming D oming
查看答案 A. Aftemoon
33 单选题 33 / 66
若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是
A p=a; B p[0]=a; C p[0]=&a[1][2]; D p[I]=&a;
查看答案 C. p[0]=&a[1][2];
34 单选题 34 / 66
有以下程序 #include <stdio.h> void fun(int *a, int n)/*fun函数的功能是将a所指数组元数从大到小排序*/ { int t,i,j; for(i=o;i<n-1;j++) for(j=j+1;j<n;j++) if(a[i]<a[j]) {t=a[i]; a[i]=a[j]; a[j]=t; } } Main() { int c[10]={1,2,3,4,5,6,7,8,9,0},i; fun(c+4,6) for(i=0;i<10,i++) printf(“%d,”,c[i]); printf(“n”); } 程序的运行结果是
A 1,2,3,4,5,6,7,8,9,0, B 0,9,8,7,6,5,1,2,3,4, C 0,9,8,7,6,5,4,3,2,1, D 1,2,3,4,9,8,7,6,5,0,
查看答案 D. 1,2,3,4,9,8,7,6,5,0,
35 单选题 35 / 66
有以下程序 #include <stdio.h> int fun(char s[]) { int n=0; while(*s<=‘9’&&*s>=‘0’) {n=[0*n+*s-‘0’;s++; } return(n); } main() { char s[10]={“6”,“1”,“*”,“4”,“*”,“9”,“*”, ‘0’,“*”} printf(“%d﹨n”,fun(s)); } 程序的运行结果是
A 9 B 61490 C 61 D 5
查看答案 C. 61
36 单选题 36 / 66
当用户要求输入的字符串中含有空格时,应使用的输入函数是
A scanf() B getchar() C gets D getc()
查看答案 C. gets
37 单选题 37 / 66
以下关于字符串的叙述中正确的是
A C语言中有字符串类型的常量和变量 B 两个字符串中的字符个数相同时才能进行字符串大小的比较 C 可以用关系运算符对字符串的大小进行比较 D 空串一定比空格打头的字符串小
查看答案 D. 空串一定比空格打头的字符串小
38 单选题 38 / 66
有以下程序 #include <stdio.h> void fun(char *t, char *s) { while(*t!=0) t++; while{(*t++=*s++)!=0}; } min() { char ss[10]=“acc”,aa[10]=“bbxxyy”; fun(ss,aa); printf(“%s,%s﹨n”,ss,aa); } 程序的运行结果是
A accxyy, bbxxyy B axx, bbxxyy C accxxyy, bbxxyy D accbbxxyy, bbxxyy
查看答案 D. accbbxxyy, bbxxyy
39 单选题 39 / 66
有以下程序 #include <stdio.h> #include <string.h> void fun(char s[][10],int n) { char t; int ij; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) /* 比较字符串的首字符大小,并交换字符串的首字符*/ if(s[i][0]>s[j][0]) {l=s[i][0];s[i][0];s[j][0]=t;} } main() { char ss[5][10]={“bcc”,“bbcc”,“xy”,“aaaacc”,“aabbc”}; Fun(ss,5); printf(“%s,%s﹨n”,ss[0],ss[4]); } 程序的运行结果是
A xy,aaaacc B aaaacc,xy C xcc,aabcc D acc,xabcc
查看答案 D. acc,xabcc
40 单选题 40 / 66
在一个C源程序文件中所定义的全局变量,其作用域为
A 所在文件的全部范围 B 所在程序的全部范围 C 所在函数的全部范围 D 由具体定义位置和extrn说明来决定范围
查看答案 D. 由具体定义位置和extrn说明来决定范围
41 单选题 41 / 66
有以下程序 #includc <stdio.h> int a=1; int f(int c) { static int a=2; c=c+1 return (a++)+c; } Main() { int i,k=0; for(i=0;i<2;i++{ int a=3; k +=f(a);} k+=a; printf(“%d﹨n”,k); } 程序的运行结果是
A 14 B (15) C 16 D 17
查看答案 A. 14
42 单选题 42 / 66
有以下程序 #include <stdio.h> void fun(int n,int*p) { int f1,f2; if(n=1||n=2) *p=1; else { fun(n-1,&f1); fun(n-2,&f2); *p=f1+f2; } } main() { int s; fun(3,&s); printf(“%d﹨n”); } 程序的运行结果是
A 2 B 3 C 4 D 5
查看答案 A. 2
43 单选题 43 / 66
若程序中有宏定义行:#define N 100 则以下叙述中正确的是
A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符N
查看答案 B. 在编译程序对C源程序进行预处理时用100替换标识符N
44 单选题 44 / 66
以下关于typedef的途述错误的是
A 用typedef可以增加新类型 B typedef是将已存在的类型用一个新的名字来代表 C 用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 D 用typedef为类型说明一个新名,通常可以增加程序的可读性
查看答案 A. 用typedef可以增加新类型
45 单选题 45 / 66
有以下程序 #include <stdio.h> struct tt { int x;struct tt*y;} *p; Struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a}; main() { int i; p=a; for(i=1;i<=2,i++) {printf(“%d,”,p->x); p=p->y;} } 程序的运行结果是
A 20,30, B 30,17 C 15,30, D 20,15
查看答案 D. 20,15
46 单选题 46 / 66
有以下程序 #include <stdio.h> #include <string.h> Typedef struct char name[9]; char sex; float score[2]; }STU; STU f(STU a) { STU b={“zhao”,‘m’,85-0,90,0}; int i; Strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b.score[i]; retum a; } main() {STU c={“Qian”,‘f’,95.0,92.0}d; d=f(c); printf(“%s,%c,%2.of,%2.of﹨n”,d.name,d.sex,d.score[0].d,score[1]); } 程序的运行结果是
A Qian,f,95,92 B Qian,m,85,90 C Zhao,m,85,90 D Zhao,f,95,92
查看答案 C. Zhao,m,85,90
47 单选题 47 / 66
设有以下定义 Union data { int dl; float d2; }demo; 则下面叙述中错误的是
A 变量demo与成员d2所占的内存字节数相同 B 变量demo中各成员的地址相同 C 变量demo和各成员的地址相同 D 若给demo.d1赋99后,demo.d2中的值是99.0
查看答案 D. 若给demo.d1赋99后,demo.d2中的值是99.0
48 单选题 48 / 66
有以下程序 #include <stdio.h> Main() { int a=1,b=2,c=3,x; x=(a^b)&c; printf(“%d\n”,x); } 程序的运行结果是
A 0 B 1 C 2 D 3
查看答案 D. 3
49 单选题 49 / 66
读取二进制文件的函数调用形式为:fread(buffer, size,count,fp);其中buffer代表的是
A 一个文件指针,指向待读取的文件 B 一个整型变量,代表待读取的数据的字节数 C 一个内存块的首地址,代表读入数据存放的地址 D 一个内存块的字节数
查看答案 C. 一个内存块的首地址,代表读入数据存放的地址
50 单选题 50 / 66
有以下程序 #include <stdio.h> Main() { FILE *fp; int a[10]={1,2,3,0,0},i; fp=fopen(“d2.dat”.”wb”) fwrite(a,sizeof(int),5,fp) fwrite(a,sizeof(int),5,fpj); fclose(fp); fp=fopen(“d2.dat”,”rb”); fread(a,sizeof(int),10,fp); fclose(fp); for (i=0;i<10;i++) printf(“%d,”,a[i]); } 程序的运行结果是
A 1,2,3,0,0,0,0,0,0,0 B 1,2,3,1,2,3,0,0,0,0. C 123,0,0,0,0,123,0,0,0,0, D 1,2,3,0,0,1,2,3,0,0.
查看答案 D. 1,2,3,0,0,1,2,3,0,0.
51 填空题 51 / 66
软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是[1] __ 。
查看答案 正确性
52 填空题 52 / 66
在两种基本测试方法中,[2] __ 测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。
查看答案 逻辑覆盖
53 填空题 53 / 66
线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表。循环队列是队列的[3] __ 存储结构。
查看答案 顺序
54 填空题 54 / 66
对下列二叉树进行中序遍历的结果为[4]
__ 。
查看答案 ACBDFEHGP
55 填空题 55 / 66
在E-R图中,矩形表示[5] __ 。
查看答案 实体
56 填空题 56 / 66
执行以下程序时输入1234567<CR>,则输出结果是[6] __ 。 #include <stdio.h> Main() { int a=1,b; Scanf(“%2d%2d”,&a,&b); printf(“%d %d\n”,a,b) }
查看答案 1234
57 填空题 57 / 66
以下程序的功能是:输出a、b、c三个变量中的最小值。请填空。 #include <stdio.h> Main ( ) { int a,b,c,t1,t2; Scanf(*%d%d%d”,&a,&b,&c); t1=a<b?[7] __ : t2=c<1?[8] __ ; printf(“%d\n”,t2);
查看答案 58 填空题 58 / 66
以下程序的输出结果是[9] __ 。 #include <stdio.h> Main () { int n=12345,d; while(n!=0){ d=n%10; printf(“%d”,d); n/=10; } }
查看答案 54321
59 填空题 59 / 66
有以下程序段,且变量已正确定义和赋值 for(S=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+)); printf(“S=%f\n\n”,s); 请填空,使下面程序段的功能与之完全相同 S=1.0;k=1; While([10] __ ) { s=s+1.0/(k*(k+1));[11] __ ; } Printf(“s=%f\n\n”,s);
查看答案 60 填空题 60 / 66
以下程序的输出结果是[12] __ 。 #include <stdio.h> main() { int i; for(i=a;j<f;i++,i++) printf(“%c”,i-‘a’+’A’); printf(“\n”); }
查看答案 ABCDE
61 填空题 61 / 66
以下程序的输出结果是[13] __ 。 #include <stdio.h> #include <string.h> Char *fun(char *t) { char *p=t; retrun (p+strlen(t)/2); } main() { char *str=”abcdefgh”; str=fun(str); puts(str); }
查看答案 efgh
62 填空题 62 / 66
以下程序中函数f的功能是在数值x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。 #include <stdio.h> void f(int x[], int n) { int p0,p1,i,j,t,m; i=j=x[0]; p0=p1=0; for(m=0;m<n;m++) { if (x[m]>i) { i=x[m]; p0=m;} Else if(x[m]<j) {j=x[m]; p1=m;} } t=x[p0]; x[p0]=x[n-1]; x[n-1]=1; t=x[p1]; x[p1]=[14] __ ;[15] __ =t; } main() { int a[10],u; for(u=0;u<10;u++) scanf(*%d,&a[u]); f(a,10); for(u=0;u<10;u++) printf(“%d”,a[u]); printf(“\n”); }
查看答案 63 填空题 63 / 66
以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推。用#号结束输入,请填空。 #include <stdio.h> #include <ctype.h> main () { int num[26]={0},i; char c; while([16] __ ) !=”#”) if(isupper(c)) num[c-‘A’]+=[17] __ ; for(i=0;i<26;i++) printf(*%c;%d\n”, i+’A’,num[i]); }
查看答案 64 填空题 64 / 66
执行以下程序的输出结果是[18] __ 。 #include <stdion.h> main() { int i, n[4]={1}; For(i=1;i<=3;i++) { n[i]=n[i-1]*2+1; printf(”%d”, n[i]); } }
查看答案 3715
65 填空题 65 / 66
以下程序的输出结果是[19] __ 。 #include <stdion.h> #define M 5 #define N M+M main() { int k; K=N*N*5; printf(“%d\n”,k); }
查看答案 55
66 填空题 66 / 66
函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空 #include <stdion.h> Struct node { int iata; Struct node *next; }; Int min(struct node *first)/* 批针first为链表头指针 */ { struct nod *p; int m; P=first->next; m=p->data; p=p->next; for(; p!=NULL; p=[20] __ next" size=20 type=text>next" size=20 type=text>next" size=20 type=text>next" size=20 type=text>next" size=20 type=text> ) if(p->data<m) m=p->data; retum m; }
查看答案 p->next