1、二级 C语言笔试-312 及答案解析(总分:90.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.判断 char型变量 c1是否为大写字母的正确表达式是(分数:1.00)A.A=c1=ZB.(c1=A)for(i=0;i3;i)pi=i9;i+)gethchar(stri);C.gets(str);D.for(i=0;i9;i+)scanf(“%s“,t=MAX(a+b,c+d);PRINT(t);A) Y=3B) 存在语C.Y=7D.Y=027.下面程序的运行结果是includestdio.hmain()int a=28,b;char s10,*p;p=s;dob
2、=a%16;if(b10) *p=b+48;else*p=b+55;p+;a=a/5;while(a0);*p=/0;puts(s);(分数:1.00)A.10B.C2C.C51D./028.以下不正确的定义语句是(分数:1.00)A.double x5=2.0,4.0,6.0,8.0,10.0;B.int y5=0,1,3,5,7,9;C.char c1=1,2,3,4,5;D.char c2=/x10,/xa,/x8;29.以下程序执行后 x的值是main()int x,y=252,i=386,*m=i4;i+)sub(a,x);printf(“%d“,x);printf(“/n“);su
3、b(s,y)int*s,y;static int t=3;y=st;t-; (分数:1.00)A.1 2 3 4B.4 3 2 1C.0000D.4444二、填空题(总题数:18,分数:40.00)51.栈和队列通常采用的存储结构是 【1】 。(分数:2.00)填空项 1:_52.在程序设计阶段应该采取 【2】 和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。(分数:2.00)填空项 1:_53.软件结构是以 【3】 为基础而组成的一种控制层次结构。(分数:2.00)填空项 1:_54.数据库系统阶段的数据具有较高独立性,数据独立性包括物理独
4、立性和 【4】 两个含义。(分数:2.00)填空项 1:_55.数据库保护分为:安全性控制、 【5】 、并发性控制和数据的恢复。(分数:2.00)填空项 1:_56.将以下程序写成三目运算表达式是 【6】 。if(ab)max=a;else max=b;(分数:2.00)填空项 1:_57.若有以下定义:char a;int b;float c;double d;则表达式 a*b+d-c值的类型为 【7】 。(分数:2.00)填空项 1:_58.下面程序的输出结果是 【8】 。unsigned fun6(unsigned num)unsigned k=1;do k*=hum%10;num/=1
5、0;while(num);return(k); main()unsigned n=26;printf(“%d/n“,fun6(n);(分数:2.00)填空项 1:_59.设 x和 y均为 int型变量,且 x=1,y=2,则表达式 double(1+x/y)的值为 【9】 。(分数:2.00)填空项 1:_60.下面程序的运行结果是 【10】 。main()int i=0,j=10,k=2,s=0;for(;)i+=k;if(ij)printf(“%d/n“,s);break;s+=i; (分数:2.00)填空项 1:_61.在内存中,存储字符x要占用 1个字节,存储字符串“x“要占用 【11
6、】 个字节。(分数:2.00)填空项 1:_62.以下程序的运行结果是 【12】 。#includestdio.hmain()int a=1,b=2,c; c=max(a,b);printf(“max is%d/n“,c);max(int x,int y)int z;z=(xy)? x:y;return(z);(分数:2.00)填空项 1:_63.下面的函数 fun的功能是将形参 x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为 0的元素中,其他依次类推,请填空。fun(int x,int b)int k=0,r;do r=x% 【13】 ;bk+=r;x
7、/= 【14】 ;while(x);(分数:4.00)填空项 1:_64.以下程序是用递归方法求数组中的最大值及其下标值。请填空。#define M 10void findmax(int *a,int n,int i,int *pk)if(in)if(aia *pk) 【15】 ;findmax(a,n,i+1,i+)scanf(“%d“ ,a+i);findmax(a,M,0,for(i=0;i3;i)pi=i9;i+)gethchar(stri);C.gets(str); D.for(i=0;i9;i+)scanf(“%s“,t=MAX(a+b,c+d);PRINT(t);A) Y=3B)
8、 存在语C.Y=7 D.Y=0解析:命题目的 考查带参数的宏替换。解题要点 宏替换不像函数调用要进行参数值的计算、传递等,而只是简单按照原格式进行字符串的替换。考点链接 宏定义的命令格式。27.下面程序的运行结果是includestdio.hmain()int a=28,b;char s10,*p;p=s;dob=a%16;if(b10) *p=b+48;else*p=b+55;p+;a=a/5;while(a0);*p=/0;puts(s);(分数:1.00)A.10B.C2C.C51 D./0解析:命题目的 考查用字符指针处理字符串的方法。解题要点 语句“p=s;”是使指针 p指向字符数组
9、 s。*p 则引用了 p所指位置的数组元素。考点链接 通过指针来引用一维数组元素。28.以下不正确的定义语句是(分数:1.00)A.double x5=2.0,4.0,6.0,8.0,10.0;B.int y5=0,1,3,5,7,9; C.char c1=1,2,3,4,5;D.char c2=/x10,/xa,/x8;解析:命题目的 考查一维数组的定义和初始化。解题要点 选项 B定义的数组长度为 5,而初始化时却赋予了 6个变量值,越界了,所以错误。考点链接 数组中元素的引用。29.以下程序执行后 x的值是main()int x,y=252,i=386,*m=i4;i+)sub(a,x);
10、printf(“%d“,x);printf(“/n“);sub(s,y)int*s,y;static int t=3;y=st;t-; (分数:1.00)A.1 2 3 4B.4 3 2 1C.0000 D.4444解析:命题目的 考查通过指针来引用一维数组元素的方法。解题要点 若指针 s指向数组 a,则 st可以引用数组 a中下标为 t的元素。考点链接 通过数组的首地址引用数组元素。二、填空题(总题数:18,分数:40.00)51.栈和队列通常采用的存储结构是 【1】 。(分数:2.00)填空项 1:_ (正确答案:链式存储和顺序存储)解析:命题目的 考查考生对数据结构基本知识的了解。解题要点 栈和队列都属于线性表,它们一般采用顺序存储结构,也可以对它们采用链式存储结构。考点链接 栈、数组、表采用的存储结构,各种存储结构的定义和区别。52.在程序设计阶段应该采取 【2】 和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。(分数:2.00)填空项 1:_ (正确答案:自顶而下)