admin 管理员组文章数量: 1086019
2024年4月21日发(作者:weigh后面的名词是宾语吗)
二级C语言笔试311
(总分100, 做题时间90分钟)
一、选择题
一、选择题(下列各题A)、B)、C)、D) 四个选项中,只有一个选项是正确
的。)
1.
在软件设计中,不属于过程设计工具的是 ______。
SSS_SINGLE_SEL
A PDL(过程设计语言)
B PAD图
C N-S图
D DFD图
分值: 2
答案:C
[解析] DFD(Data Flow Diagram)是数据流图结构化分析的常用工具。
软件设计中,常见的过程设计工具如下。
(1)图形工具:程序流程图,N-S,PAD,HIPO
(2)表格工具:判定表
(3)语言工具:PDL(过程设计语言)
2.
下列选项中,合法的C语言关键字是 ______。
SSS_SINGLE_SEL
A VAR
B cher
C integer
D default
分值: 2
答案:D
[解析] 本题考查C语言基本知识。本题中default是C语言的关键字。
3.
以下程序的输出结果是 ______。 # defineSQR(X)
X*X main() { int a=10,k=2,m=1; a/=
SQR(k+m)/SQR(k+m); printf("dn",a); }
SSS_SINGLE_SEL
A 16
B 2
C 9
D 1
分值: 2
答案:D
[解析] 本题考查带参数的宏调用。a/=SQR(k+m)/SQR(k+m)进行宏替换后得:
a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)
=10/(2+2+0+2+1)=10/7/1。
4.
若有以下说明和语句: int c[4][5],(*p)[5]; p=C; 能
够正确引用c数组元素的是 ______。
SSS_SINGLE_SEL
A p+1
B *(p+1)
C *(p+1)+3
D *(p[0]+2)
分值: 2
答案:D
[解析] p是指向一个一维数组的指针,选项A、B和C中都是地址,而非数组
元素。选项D正确。
5.
x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语
句是 ______。
SSS_SINGLE_SEL
A INPUT x、y、z;
B scanf("%d %d %d",&x,&y,&;
C scanf("%d %d %d",x,y,;
D read("%d %d %d",&x,&y,&;
分值: 2
答案:B
[解析] 选项A和选项D都不是C语言中的输入方法,选项C中的变量名前面缺
少取地址符“&”。
6.
若有以下程序段: int m=0,n=0;char
c='a'; scanf("%d %c %d",&m,&c,&n); printf("%d,%c,%dn"
,m,c,n); 若从键盘上输入:10A10<回车>,则输出结果是 ______。
SSS_SINGLE_SEL
A 10,A,10
B 16,a,10
C 10,a,0
D 10,A,0
分值: 2
答案:A
[解析] scanf函数为格式输入函数,执行该函数后对变量m、n和c重新赋
值,scanf的格式字符为"%d c% d",键盘输入为10A10,所以m=10、c='A'、
n=10。
7.
在16位C编译系统上,若定义long a;,则能给变量a赋值40000的正确语
句是 ______。
SSS_SINGLE_SEL
A a=20000+20000;
B a=4000*10;
C a=30000+10000;
D a=4000L*1OL;
分值: 2
答案:D
[解析] 本题中a是长整型变量,故应将一个长整型常量赋值给a,选项A、B、
C中的数值的末尾都没有加L或1,所以不正确。
8.
有以下程序: main() { int
a[3][3],*p,i; p=&a[0][0]; for(i=0;i<
9;i++)p[i]=i; for(i=0;i<
3;i++)printf("%d",a[1][i]); } 程序运行后的输出结果是
______。
SSS_SINGLE_SEL
A 0 1 2
B 1 2 3
C 2 3 4
D 3 4 5
分值: 2
答案:D
[解析] p指向的a的首地址,由于C语言是行优先存储的,一维数组p就依次
存放了a中从第0行到第2行的所有元素,因此a[1][i]就对应了p[3]~
p[5]。
9.
已有定义:int i,a[10],*p;,则合法的赋值语句是 ______。
SSS_SINGLE_SEL
A p=100;
B p=a[5];
C p=a[2]+2;
D p=a+2;
分值: 2
答案:D
[解析] 因p是指针变量,故选项D正确。
10.
下列描述中正确的是 ______。
SSS_SINGLE_SEL
A 程序就是软件
B 软件开发不受计算机系统的限制
C 软件既是逻辑实体,又是物理实体
D 软件是程序、数据与相关文档的集合
分值: 2
答案:D
[解析] 程序是软件的一部分,软件是一种逻辑实体,它的开发、运行都依赖计
算机系统,因此出现了软件的移植问题。
11.
以下程序运行后的输出结果是 ______。 main() { int
a=1,b=2,c=3; if(c=a) printf("%dn",c); else
printf("%dn",b); }
SSS_SINGLE_SEL
A 2
B 3
C 5
D 1
分值: 1
答案:B
[解析] 根据if条件,语句c=a的值为1,因此输出c值为3。
12.
数字字符0的ASCII值为48,若有以下程
序: main() { char
a='1',b='2'; printf("%c,",b++); printf("%dn",b-
a); } 程序运行后的输出结果是 ______。
SSS_SINGLE_SEL
A 3,2
B 50,2
C 2,2
D 2,50
分值: 1
答案:C
[解析] b++是先使用b再给b赋值1,因此是先输出2,再将b加1,b='3',
则第一条语句输出2,第二条语句输出2。
13.
下列叙述中正确的是 ______。
SSS_SINGLE_SEL
A 程序设计就是编制程序
B 程序测试必须由程序员自己去做
C 程序经调试改错后还应进行再测试
D 程序经调度改错后不必进行再测试
分值: 1
答案:C
[解析] 软件测试包括需求分析、结构功能模块设计、编制程序等阶段。程序的
测试可以由专门的测试人员来完成。程序经调试改错后还应进行再测试。
14.
以下能正确定义且赋初值的语句是 ______。
SSS_SINGLE_SEL
A iht=n1=n2=10;
B char c=32;
C float f=f+1.1;
D double x=12.3E2.5
分值: 1
答案:A
[解析] B选项中32应加单引号,C选项中f=f+1.1两边都是不定值,不正确;
D中E后要用整型数,且E后必须要有数字。
15.
对长度为n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为
______。
SSS_SINGLE_SEL
A
log
2
n
B n/2
C n
D n+l
分值: 1
答案:C
[解析] 顺序查找的最坏情况是所找的元素在线性表的最后,因此查找的比较次
数是线性表的长度,即n。
16.
有以下程序: main() { int
i=10,j=1; printf("%d,%dn",i--,++j); } 执行后的输出
结果是 ______。
SSS_SINGLE_SEL
A 9,2
B l0,2
C 9,1
D 10,1
分值: 1
答案:B
[解析] 本题中--运算符位于运算变量i右侧,++运算符位于变量j的左侧,所
以先输出i的当前值10,然后i再加 1;j先加1得2,然后输出。
17.
有以下程
序: main() {char al='M'a2='m'; printf("%cn",
(al,a2));} 以下叙述中正确的是 ______。
SSS_SINGLE_SEL
A 程序输出大写字母M
B 程序输出小写字母m
C 格式说明符不足,编译出错
D 程序运行时产生出错信息
分值: 1
答案:B
[解析] 输出项表是一个逗号表达式,它的值为a2,因此输出的是a2的值。
18.
已定义以下函数: fun(int*p) { return *p; } 该函数的
返回值是 ______。
SSS_SINGLE_SEL
A 不确定的值
B 形参p中存放的值
C 形参p所指存储单元中的值
D 形参p的地址值
分值: 1
答案:C
[解析] 函数fun的形参是指针变量,*p的含义是指针变量p所指存储单元的
内容,因此正确答案为C。
19.
以下程序运行后的输出结果是 ______。 main() { char
m; m='B'+32;printf("%cn",m); }
SSS_SINGLE_SEL
A a
B b
C c
D d
分值: 1
答案:B
[解析] 字符参与运算的值是其对应的ASCII码,小写英文字符的ASCII值比大
写英文字符的ASCII值大32,执行语句m='B'+32;得出结果m=66+32=98,以
“%c”的格式输出结果为b。
20.
设有定义: int k=1,m=2; float f=7; 则以下选项中错
误的表达式是 ______。
SSS_SINGLE_SEL
A k=k>=k
B -k++
C k% int(
D k>=f>=m
分值: 1
答案:C
[解析] A、D选项是关系运算表达式,在C语言中,只要关系运算符两边是合
法的表达式就可以了。C选项中,%只能对整型进行运算,其中对f进行了强制
类型转换,但是转换的表达式错了,应为:(int)(f)。
21.
有以下程序: # include<stdio.h> main() {char
c1='1',c2='2'; c1=getchar();c2=getchar();putchar(c1);putchar(c2
); } 当运行时输入:a<回车>后,以下叙述正确的是 ______。
A
B
C
D
变量c1被赋予字符a,c2被赋予回车符
程序将等待用户输入2个字符
变量c1被赋予字符a,c2中仍是原有字符2
变量c1被赋予字符a,c2中将无确定值
SSS_SINGLE_SEL
分值: 2
答案:A
[解析] getchar函数读入字符时,空格、回车符都作为字符读入,因此A正
确。
22.
有以下程序: main() { int
i=1,j=1,k=2; if((j++‖k++)&&i++)printf("%d,%d,%dn",i,
j,k); } 执行后的输出结果是 ______。
SSS_SINGLE_SEL
A 1,1,2
B 2,2,1
C 2,2,2
D 2,2,3
分值: 2
答案:C
[解析] 本题考查“逻辑或”运算的特例。本题中if语句的条件表达式为
(j++||k++)&&i++,首先计算表达式 (j++||k++)的值,++运算符位于右侧,因
此先取j、k当前值进行运算,因j=1,所以表达式(j++||k++)的值为真, k++
表达式不再执行,故执行完表达式(j++||k++)&&i++后,j=2、k=2、i=2。
23.
SSS_SINGLE_SEL
分值: 2
答案:B
[解析] 选项B错误,不符合题意。
24.
有以下程序: main() { char k: int
i; for(i=1:i<
3;i++) { scanf("%c",&k); switch(k)
{ case'0':printf("anothern"); c
ase'1':printf("numbern"); } } } 程序
运行时,从键盘输入:01<回车>,程序执行后的输出结果是 ______。
SSS_SINGLE_SEL
A another number
B another number another
C another number number
D number number
分值: 2
答案:C
[解析] 第一次执行for循环语句时,k='0',故执行case'0'语句输出
another,同时因没有break语句,继续执行case'1',语句,输出number;第
二次执行for循环语句时,k='1',故输出number。所以正确答案为C。
25.
以下程序的功能是进行位运算: main() { unsigned
chara,b; a=7^3;b= ~
4&3; printf("%d %dn",a,b); } 程序运行后的输出结果是
______。
SSS_SINGLE_SEL
A 4 3
B 7 3
C 7 0
D 4 0
分值: 2
答案:A
[解析]
a=7^3=00000111^00000011=00000100=4;
~~
b=4&3=00000100&00000011=11111011&00000011=00000011=3
26.
若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是
______。
A int*i=NULL; scanf("%d",;
B float * f=NULL *f=19.5;
C char t='m',*c=&t; *c=&t;
D long *L; L='0';
分值: 2
答案:A
[解析] 选项C中语句"*C=&t;"错误;选项D中指针"L='0'"不正确,L应指
向确定的地址单元,而不是特定的值;选项B中语句"float*f=NULL"错误,缺少
语句结束符“;”。
27.
SSS_SINGLE_SEL
SSS_SINGLE_SEL
分值: 2
答案:A
[解析] 选项B中不是变量A的地址,错误;选项C是指针pA的地址,错误;
选项D中*pA表示变量A的值,错误。
28.
有以下程序: int f (int a) { return
a%2;} main() { int
s[8]={1,3,5,2,4,6},i,d=0; for(i=0;f(s[i]);i++)d+=s[i];
printf("%dn",d); } 程序运行后的输出结果是 ______。
SSS_SINGLE_SEL
A 9
B 11
C 19
D 21
分值: 2
答案:A
[解析] 本题中d=s[0]+s[1]+s[2]=1+3+5=9。
29.
有以下定义: # include<stdio.h> char a[l0],*b=a; 不
能给a数组输入字符串的语句是 ______。
SSS_SINGLE_SEL
A gets(A)
B gets(a[0]);
C gets(&a[0]);
D gets(;
分值: 2
答案:B
[解析] a[0]是数组元素,不是数组名。
30.
设有定义语句: int x[6]={2,4,6,8,5,7},*p=x,i; 要求依次输出
x数组6个元素中的值,不能完成此操作的语句是 ______。
A for(i=0;i<6;i++)printf("%2d",*(p++));
B for(i=0;i<6;i++)printf("%2d",*(p+);
C for(i=0;i<6;i++)printf("%2d",*p++);
D for(i=0;i<6;i++)printf("%2d",(*++);
分值: 2
答案:D
[解析] 选项D中(*p)++的意思是将p所指向的存储单元的值加1,与题意不
符,错误。
31.
以下能正确定义二维数组的是 ______。
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A int a[][3];
B int a[][3]={2*3};
C int a[][3]={};
D int a[2][3]={{1},{2},{3,4}};
分值: 2
答案:B
[解析] (1)二维数组的定义
二维数组的定义方式为:类型说明符数组名[常量表达式][常量表达式]。
二维数组在内存中是按行优先的顺序存放的,即先存放第一行的元素,再
存放第二行的元素,依次类推。
(2)二维数组元素的引用
二维数组元素的表示形式为:数组名[下标][下标],下标可以是整型常量
或整型表达式其范围为:0~(常量表达式 -1)。
(3)二维数组的初始化
可以用以下方法对二维数组元素初始化:
①分行给二维数组赋初值
例如:int a[2][2]={{1,2},{3,4}};
这种赋值方式比较直观,把第1个大括号内的数据赋给第1行的元素,第
2个大括号内的数据赋给第2行的元素,即按行赋值。
②可以将所有数据写在一个大括号内,按数组排列的顺序对各个元素赋初
值。
③可以对部分元素赋初值,没有初始化的元素值为0。
④如果对全部数组元素赋初值,则定义数组时对第一维的长度可以不指
定,但第二维的长度不能省略。
32.
以下叙述中正确的是 ______。
A 用C语言实现的算法必须要有输入和输出操作
B 用C语言实现的算法可以没有输出但必须要有输入
C 用C程序实现的算法可以没有输入但必须要有输出
D 用C程序实现的算法可以既没有输入也没有输出
分值: 2
答案:C
[解析] 根据算法的特性,算法必须有。个或多个输入,和1个或多个输出。
33.
设有定义:int n=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是
______。
SSS_SINGLE_SEL
SSS_SINGLE_SEL
A p=1;
B *q=2
C q=p
D *p=5
分值: 2
答案:D
[解析] 本题中n是int型变量,p是指向int型的指针变量,q是指向指针的
指针变量,故正确答案为D。
34.
以下4个选项中,不能被看作是一条语句的是 ______。
SSS_SINGLE_SEL
A {;}
B a=0,b=0,c=0;
C if(a>;
D if(b==0)m=1;n=2;
分值: 2
答案:D
[解析] 选项D中有两条语句。
35.
有以下定义语句: double a,b; int w; long c; 若各变量已
正确赋值,则下列选项中正确的表达式是 ______。
SSS_SINGLE_SEL
A a=a+b=b++
版权声明:本文标题:二级C语言笔试311_真题(含答案与解析)-交互 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713686440a646965.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论