1、计算机二级(C)50 及答案解析(总分:3040.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:50,分数:3000.00)1.有以下程序: struct STU char num10; float score3; main( ) struct STU s3=“20021“,90,95,85, “20022“,95,80,75, “20023“,100,95,90 ,*p=s; int i; float sum=0; for(i=0;i3;i+) sum=sum+p-scorei; printf(“%6.2f/n“,sum); 程序运行后的输出结果
2、是( )。(分数:60.00)A.260B.270C.280D.2852.若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系|x-y|A.abs(x-y)-10B.char t =”abcdefg”,*s=t;C.char s10;s=”abcdefg”;D.char s10;strcpy(s,”abcdefg”);37.有以下程序: #include stdio.h main() FILE *fp; int i,k,n; fp=fopen(“data.dat“,“w+“);for(i=1;i6;i+) fprintf(fp,“%d “,i); if(i%3=0) fprintf(f
3、p,“/n“); rewind(fp); fscanf(fp,“%d%d“, (分数:2.00)填空项 1:_53.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于 1 测试。(分数:2.00)填空项 1:_54.下列程序中的函数 strcpy21 实现字符串两次复制,即将 t 所指字符串复制两次到 S 所指内存空间中,全并形成一个新字符串。例如。若 t 所指字符串为:efgh,调用 strcpy2 后,S 所指字符串为:ef ghefgh。请填空。 #include #include void strcpy2(char *S,char *t) char*P=t; while(*S
4、+=*t+); S= 2; while( 3=*P+); main 4 char str1100=“abcd“,str2=“efgh“; strcpy2(strl,str2);printf(“sn“,str1); (分数:2.00)填空项 1:_填空项 1:_55.计算机网络分为广域网和局域网,因特网属于 1。(分数:2.00)填空项 1:_56.已知字符 A 的 ASCII 码为 65,以下程序运行后的输出结果是 1。 main2 char a,b; a=A+5-3; b=a+6-2; printf(“%d %c/n“,a,b) ; (分数:2.00)填空项 1:_57.有以下语句段 int
5、 n1=10,n2=20; printf(“ 1”,n1.n2); 要求按以下格式输出 n1 和 n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 (分数:2.00)填空项 1:_58.当执行以下程序时,输入 1234567890,则其中 while 循环体将执行 1 次。 #include main2 char ch; while(ch=getchar3)=0)prinff(“#“); (分数:2.00)填空项 1:_59.下面程序的运行结果是: 1。 fun(int t,int n) int i,m; if(n=1)returnt 0; else if(n=2)m=fun
6、(t,n-1);return m; main2 int a=11,4,6,3,8,2,3,5,9,2; printf(“dn“,fun(a,10); (分数:2.00)填空项 1:_60.以下程序的输出结果是 1。 #include main2 prinff(“dn“,strlen(“IBMn0121“); (分数:2.00)填空项 1:_61.函数 YangHui 的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1. 其构成规律是: (1.)第 0 列元素和主对角线元素均为 1 (2.)其余元素为其左上方和正上方元素之和 (
7、3.)数据的个数每行递增 1 请将程序补充完整。 #define N 6 void yanghui(int xNN) int i,j; x00=1; for(i=1;iN;i+) xi0= 1=1; for(j=1;ji;j+) xij= 2; (分数:2.00)填空项 1:_62.从 Windows 环境进入 MS-DOS 方式后,返回 Windows 环境的 DOS 命令为 1。(分数:2.00)填空项 1:_63.有以下程序 main( ) int t=1,i=5; for(;i=0;i-) t*=i; printf(“%d/n”,t); 执行后输出结果是 1。 (分数:2.00)填空项
8、 1:_64.以下程序的输出结果是 1。 #include main2 char a=1,2,3,4,O; printf(“ddn“,sizeof(a),strlen(a); (分数:2.00)填空项 1:_65.以下程序运行后的输出结果是 1。 main2 int m=011,n=11; printf(“ddn“,+m,n+); (分数:2.00)填空项 1:_66.以下程序运行后的输出结果是 1。 main( ) int x=1,y=0,a=0,b=0; switch(x) case 1:switch(y) case 0:a+; break; case 1:b+; break; case
9、2:a+;b+; break; printf(“%d %d/n“,a,b); (分数:2.00)填空项 1:_67.对长度为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为 1。(分数:2.00)填空项 1:_68.有以下程序,若运行时从键盘输入:18,11,则程序的输出结果是 1。 main2 int a,b; printf(“Enter a,b:“);scanf(“d,d“, float sum=0; for(i=0;i3;i+) sum=sum+p-scorei; printf(“%6.2f/n“,sum); 程序运行后的输出结果是( )。(分数:60.00)A.260B.270
10、 C.280D.285解析:给结构体数组赋韧值时,由于数组中的每个元素都是一个结构体,因此要将其成员的值依次放在一对 花括号中,以便区分各元素。s0=“20021“,90,95,85 ,s1= “20022,95,80,75 ,s2:“20023“, 100,95,90 。2.若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系|x-y|A.abs(x-y)-10B.char t =”abcdefg”,*s=t;C.char s10;s=”abcdefg”; D.char s10;strcpy(s,”abcdefg”);解析:37.有以下程序: #include stdio.h mai
11、n() FILE *fp; int i,k,n; fp=fopen(“data.dat“,“w+“);for(i=1;i6;i+) fprintf(fp,“%d “,i); if(i%3=0) fprintf(fp,“/n“); rewind(fp); fscanf(fp,“%d%d“, (分数:2.00)填空项 1:_ (正确答案:3)解析:53.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于 1 测试。(分数:2.00)填空项 1:_ (正确答案:黑箱或黑盒)解析:黑箱测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑箱测试技术分为等
12、价类划分、边界分析、错误猜测以及因果图等。54.下列程序中的函数 strcpy21 实现字符串两次复制,即将 t 所指字符串复制两次到 S 所指内存空间中,全并形成一个新字符串。例如。若 t 所指字符串为:efgh,调用 strcpy2 后,S 所指字符串为:ef ghefgh。请填空。 #include #include void strcpy2(char *S,char *t) char*P=t; while(*S+=*t+); S= 2; while( 3=*P+); main 4 char str1100=“abcd“,str2=“efgh“; strcpy2(strl,str2);p
13、rintf(“sn“,str1); (分数:2.00)填空项 1:_ (正确答案:s-1)填空项 1:_ (正确答案:木 s+)解析:除去第一次复制字符串中的结束标志0。开始第二次复制字符串。55.计算机网络分为广域网和局域网,因特网属于 1。(分数:2.00)填空项 1:_ (正确答案:广域网)解析:56.已知字符 A 的 ASCII 码为 65,以下程序运行后的输出结果是 1。 main2 char a,b; a=A+5-3; b=a+6-2; printf(“%d %c/n“,a,b) ; (分数:2.00)填空项 1:_ (正确答案:67 G)解析:由于“5“和“3“的 ASCII 码
14、相差为 2,所以变量 a 经过运算,得出其值为字符“C“,又因为输出时其形式是“%d“,故输出的值是字符“C“的 ASCII 码,即 67;同理,变量 b 的值等于变量 a 的值加上字符“6“与字符“2“的 ASCII 码的差值,即得到字符“G“,输出时以“%c“的形式输出“G“。 57.有以下语句段 int n1=10,n2=20; printf(“ 1”,n1.n2); 要求按以下格式输出 n1 和 n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 (分数:2.00)填空项 1:_ (正确答案:n1=%d/nn2=%d)解析:58.当执行以下程序时,输入 12345678
15、90,则其中 while 循环体将执行 1 次。 #include main2 char ch; while(ch=getchar3)=0)prinff(“#“); (分数:2.00)填空项 1:_ (正确答案:0)解析:通过 getchar-|_|-函数来取得从键盘输入的数据,再判断其是否是字符0,如果是,则执行一次循环,因为从键盘输入的 1234567890 都是整型数,不是字符,所以 while 循环执行的条件始终不成立,循环体执行的次数为 0。59.下面程序的运行结果是: 1。 fun(int t,int n) int i,m; if(n=1)returnt 0; else if(n=
16、2)m=fun(t,n-1);return m; main2 int a=11,4,6,3,8,2,3,5,9,2; printf(“dn“,fun(a,10); (分数:2.00)填空项 1:_ (正确答案:11)解析:此题涉及函数的调用和 if 语句。程序先执行第二个 if 语句,然后在执行第一个 if 语句,最后用:return 返回数值。60.以下程序的输出结果是 1。 #include main2 prinff(“dn“,strlen(“IBMn0121“); (分数:2.00)填空项 1:_ (正确答案:9)解析:本题的字符串中共有 9 个字符,它们分别是I,B,M,n,0,1,2
17、,1,其中“n“表示换行,“表示反斜杠字符“。所以本题的最后输出结果为 9。61.函数 YangHui 的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1. 其构成规律是: (1.)第 0 列元素和主对角线元素均为 1 (2.)其余元素为其左上方和正上方元素之和 (3.)数据的个数每行递增 1 请将程序补充完整。 #define N 6 void yanghui(int xNN) int i,j; x00=1; for(i=1;iN;i+) xi0= 1=1; for(j=1;ji;j+) xij= 2; (分数:2.00)填
18、空项 1:_ (正确答案:xii)解析:62.从 Windows 环境进入 MS-DOS 方式后,返回 Windows 环境的 DOS 命令为 1。(分数:2.00)填空项 1:_ (正确答案:EXIT)解析:63.有以下程序 main( ) int t=1,i=5; for(;i=0;i-) t*=i; printf(“%d/n”,t); 执行后输出结果是 1。 (分数:2.00)填空项 1:_ (正确答案:0)解析:64.以下程序的输出结果是 1。 #include main2 char a=1,2,3,4,O; printf(“ddn“,sizeof(a),strlen(a); (分数:
19、2.00)填空项 1:_ (正确答案:5 4)解析:字符串处理函数 strlen-|_|-返回的是字符数组的实际长度,不包括字符串结束标志0。而 sizeof 运算符则计算的是字符数组的总长度,包括串末尾的结束标志。65.以下程序运行后的输出结果是 1。 main2 int m=011,n=11; printf(“ddn“,+m,n+); (分数:2.00)填空项 1:_ (正确答案:10 11)解析:(011)8 转换为十进制数其值等于 9,然后在输出语句中变量 m,n 分别自加后其值分别是 10 和 12,但“+m“和“n+“表达式的值分别为 10 和 11。所以输出结果是 10 11。6
20、6.以下程序运行后的输出结果是 1。 main( ) int x=1,y=0,a=0,b=0; switch(x) case 1:switch(y) case 0:a+; break; case 1:b+; break; case 2:a+;b+; break; printf(“%d %d/n“,a,b); (分数:2.00)填空项 1:_ (正确答案:2 1)解析:67.对长度为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为 1。(分数:2.00)填空项 1:_ (正确答案:45)解析:对长度 n 为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为 n(n-1)2=59=4
21、5。68.有以下程序,若运行时从键盘输入:18,11,则程序的输出结果是 1。 main2 int a,b; printf(“Enter a,b:“);scanf(“d,d“,&a,&b); while(a!=b) while(ab)a-=b; while(ba)b-=a; printf(“3d3dn“,a,b); (分数:2.00)填空项 1:_ (正确答案:11)解析:外层循环共执行了 4 次,最后 a 和 b 的值都等于 1 时,退出循环输出结果。69.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:2.00)填空项 1:_ (正确答案:关系)解析:在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系。 70.以下程序的输出结果是 1。 #include main2 char *sl,*s2,m; sl=s2=(char*)malloc(sizeof(char).*sl=15; *s2=20; m=*sl+*s2; printf(“dn“,m); (分数:2.00)填空项 1:_ (正确答案:40)解析:本题中指针 s1 和 s2 都指向同一个内存中的地址。因此语句“* s2=20;“执行后,*s1=* s2=20。所以 m 最后的值为 40。