1、二级 C 语言笔试-182 及答案解析(总分:104.00,做题时间:90 分钟)一、选择题(总题数:30,分数:60.00)1.以下只有在使用时才为该类型变量分配内存的存储类说明是_。(分数:2.00)A.auto 和 staticB.auto 和 registetC.register 和 staticD.extern 和 register2.执行下面的语句后,表达式*(p0+1)+*(q+2)的值为_。int a=5,4,3,2,1,*p=a+3,a+2,a+1,a,*q=p;(分数:2.00)A.8B.7C.6D.53.下列程序的输出结果是_。main()int n;(n=6*4,n+6
2、),n*2;printf(“n=%d/n“,n);(分数:2.00)A.22B.23C.24D.254.设 p1 和 p2 是指向同一个 int 型一维数组的指针变量,k 为 int 型变量,则不能正确执行的语句是_。(分数:2.00)A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);5.下列描述中,错误的一条是_。(分数:2.00)A.C 语言中,二维数组或多维数组的排列顺序是按行存放的B.赋值表达式 b12=a23/2*a00是正确的C.表达式 3=42!=52 的值为 0D.数组名后的方括弧内可以为常量表达式,也可以为变量6.与“for(i=0;i10;i
3、+)putchar(a+i);”功能不同的语句是_。(分数:2.00)A.for(i=0;i10;)putchar(a+(+i);B.for(i=0;i10;)putchar(a+(i+);C.for(i=0;i10;putchar(a+i),i+);D.for(i=0;i=9;i+)putchar(a+i);7.下列程序的执行结果是_。main()int x=23;doprintf(“%d“,x-);while(!x);(分数:2.00)A.321B.23C.不输出任何内容D.陷入死循环8.当执行下面的程序时,如果输入“ABC”,则输出结果是_。#include“stdio.h“#inclu
4、de“string.h“main()char ss10=“1,2,3,4,5“;gets(ss);strcat(ss,“6789“);printf(“%s/n“,ss);(分数:2.00)A.ABC6789B.ABC67C.12345ABC6D.ABC4567899.下列程序的输出结果是_。int func(int a,int b)return(a+b);main()int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%/d/n“,r);(分数:2.00)A.12B.13C.14D.1510.下列程序(注意:ch0在低字节,ch1在高字节)的输出结果是_
5、。#includestdio.hunion pwint i;char ch2;a;main ()a.ch0=13;a.ch1=0;printf(“%d/n“,(分数:2.00)A.;A13B14C11.下列程序的输出结果是_。main()char ch25=“6937“,“8254“,*p2;int i,j,s=0;for(i=0;i2;i+) pi=chi;for(i=0;i2;i+)for(j=0;pij/0;j+=2)s=10*s+pij-0;printf(“%d/n“,s);(分数:2.00)A.69825B.63825C.6385D.69382512.下列程序的输出结果是_。main
6、()int i;for(i=A;iI;i+) printf(“%c“,i+32);printf(“/n“);(分数:2.00)A.编译不通过,无输出B.acegC.acegiD.abcdefghi13.下列程序的输出结果是_。#includemain()char *a=“abcdefghi“;int k;fun(a);puts(a);fun(char*s)int x,y;char c;for(x=0,y=strlen(s)-1;xy;x+,y-)c=sy;sy=sx;sx=c;(分数:2.00)A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi14.设有系
7、和学生 2 个实体集,一个学生只能在一个系里注册,而一个系有很多学生。系和学生的关系是_。(分数:2.00)A.多对多联系B.多对一联系C.一对多联系D.一对一联系15.下列程序的输出结果是_。main()int n=4;while(n-)printf(“%d“,-n);(分数:2.00)A.2 0B.3 1C.3 2 1D.2 1 016.一个存储结点存放一个_。(分数:2.00)A.数据项B.数据元素C.数据结构D.数据类型17.在执行以下程序时,如果从键盘上输入 ABCdef回车,则输出为_。#include stdio.hmain ()char ch;while (ch=getchar
8、()!=“/n“)if (ch=A;);C.int k=1000;do+k;while(k=1000);D.int s=36:while(s);-s;二、填空题(总题数:11,分数:44.00)31.当线性表的元素总数基本稳定,且很少进行插入和删除操作,并要求以很快的速度存取线性表中的数据元素时,应采用 【1】 存储结构。(分数:4.00)填空项 1:_32.软件的可移植性是用来衡量软件 【2】 的重要尺度之一。(分数:4.00)填空项 1:_33.下列语句使指针 p 指向一个 double 类型的动态存储单元。p= 【3】 malloc(sizeof(double);(分数:4.00)填空项
9、 1:_34.当输入的数据为 2、5 时,则下列程序的运行结果为 【4】 。#include stdio.h#define max 100main()int fmax,i,j,k,m;scanf(“%d%d“,char a=“I love china!“,b20,*p1,*p2;p1=a;p2=b;while(*p1)*p2=*p1;p1+;p2+;*p2=/0;printf(“string b is: %s/n“,b);(分数:4.00)填空项 1:_38.若输入 tc,则程序的运行结果为 【8】 。#include stdio.hmain()char str40;fscanf(stdin,
10、“%s“,str);fprintf(stdout,“%s/n“,str);(分数:4.00)填空项 1:_39.当输入 19、2 时,下列程序的运行结果为 【9】 ;输入 254、16 时,则程序的运行结果是 【10】 。main()char data_symbols17=“0123456789abcdefghijklmnopqrstuvwxyz“;int i=0,t,subscript,data_converted32;long number;while (1)scanf(“%ld,%d“,;);C.int k=1000;do+k;while(k=1000); D.int s=36:whil
11、e(s);-s;解析:二、填空题(总题数:11,分数:44.00)31.当线性表的元素总数基本稳定,且很少进行插入和删除操作,并要求以很快的速度存取线性表中的数据元素时,应采用 【1】 存储结构。(分数:4.00)填空项 1:_ (正确答案:顺序)解析:32.软件的可移植性是用来衡量软件 【2】 的重要尺度之一。(分数:4.00)填空项 1:_ (正确答案:质量)解析:33.下列语句使指针 p 指向一个 double 类型的动态存储单元。p= 【3】 malloc(sizeof(double);(分数:4.00)填空项 1:_ (正确答案:(double*))解析:34.当输入的数据为 2、5
12、 时,则下列程序的运行结果为 【4】 。#include stdio.h#define max 100main()int fmax,i,j,k,m;scanf(“%d%d“,char a=“I love china!“,b20,*p1,*p2;p1=a;p2=b;while(*p1)*p2=*p1;p1+;p2+;*p2=/0;printf(“string b is: %s/n“,b);(分数:4.00)填空项 1:_ (正确答案:string b is: I love china!)解析:38.若输入 tc,则程序的运行结果为 【8】 。#include stdio.hmain()char
13、str40;fscanf(stdin,“%s“,str);fprintf(stdout,“%s/n“,str);(分数:4.00)填空项 1:_ (正确答案:tc)解析:39.当输入 19、2 时,下列程序的运行结果为 【9】 ;输入 254、16 时,则程序的运行结果是 【10】 。main()char data_symbols17=“0123456789abcdefghijklmnopqrstuvwxyz“;int i=0,t,subscript,data_converted32;long number;while (1)scanf(“%ld,%d“,&number,&t);if (num
14、ber=O & t=2&t=16) break;dodata convertedi+=number%t;number=number/t;while(number!=0);for(-i;i=0;-i)subscript=data_convertedi;printf(“%c“,data_symbolssubscript);printf(“/n“);(分数:4.00)填空项 1:_ (正确答案:9 10011 10 fe)解析:40.下列程序的功能是计算数的阶乘。main()iht i,n;nlong np;scanf(“%d“,&n);np= 【11】 ;for(i=2;i=n;i+)【12】 ;
15、printf(“n=%d n!=%ld/n“,n,np);(分数:4.00)填空项 1:_ (正确答案:11 1 12 np*=i 或 np=np*i)解析:41.请用位运算实现下述目标(设 16 位二进制数的最低位为零位):(1)输出无符号正整数 m 的第 i 个二进制位的数值。(2)将 m 的第 i 个二进制位置 1,其余的位不变,然后输出 m。#include “stdio.h“【13】 main()unsigned k,i,m=0;scanf(“%d%d“,&m,&i);k= 【14】 ;printf(“%d/n“,k);k=pow(2,i);m= 【15】 ;printf(“%d/n“,m);(分数:4.00)填空项 1:_ (正确答案:13 #include “math.h“ 14 mi&1 15 m|k)解析: