C语言计算机二级/C语言期末考试 刷题
Posted juechen333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言计算机二级/C语言期末考试 刷题相关的知识,希望对你有一定的参考价值。
在空闲时间整理了一些C语言计算机二级和C语言期末考试题库
整理不易,大家点赞收藏支持一下
祝大家计算机二级和期末考试都高分过
系列文章:
目录
一、填空 共13题 (共计13分)
第1题
若有定义:char c='\\010';则变量c中包含的字符个数为【1】.
=======(答案1)=======
1
第2题
int x=2,y=3,z=4; 则表达式x||y+z的值为【1】.
=======(答案1)=======
1
第3题
C语言中的标识符只能由3种字符组成,它们是【1】、【2】和【3】.
=======(答案1)=======
字母
=========或=========
无序
=======(答案2)=======
数字
=========或=========
无序
=======(答案3)=======
下划线
=========或=========
无序
第4题
以下程序的输出结果是【1】.
#include<stdio.h>
void main()
int i = 010, j = 10;
printf("%d,%d\\n", ++i, j--);
=======(答案1)=======
9,10
第5题
若s是int型变量,且s=6,则下面表达式的值是【1】.
s%2+(s+1)%2
=======(答案1)=======
1
第6题
若输入字符串:abcde<回车>,则以下while循环体将执行 【1】 次.
while((ch = getchar()) == 'e')
printf("*");
=======(答案1)=======
0
第7题
以下程序运行结果是【1】.
void main()
int a = 4, b = 3, c = 5, t = 0;
if (a < b) t = a; a = b; b = t;
if (a < c) t = a; a = c; c = t;
printf("%d %d %d\\n", a, b, c);
=======(答案1)=======
5 0 3
第8题
c语言程序的三种基本结构是:顺序结构,选择结构,【1】结构.
=======(答案1)=======
循环
第9题
下面程序的输出是【1】 .
#include<stdio.h>
fun(int x)
static int a = 3;
a += x;
return(a);
void main()
int k = 2, m = 1, n;
n = fun(k);
n = fun(m);
printf("%d", n);
=======(答案1)=======
6
第10题
下列程序的输出结果是【1】 .
#define MIN(x,y) (x)<(y)?(x):(y)
void main()
int i, j, k;
i = 10; j = 20;
k = 2 * MIN(i, j);
printf("%d\\n", k);
=======(答案1)=======
20
第11题
按内存排列顺序, 数组char a[2]中的所有元素是a[1]和【1】.
=======(答案1)=======
a[0]
第12题
求字符串长度的库函数是【1】,只写函数名即可.
=======(答案1)=======
strlen
第13题
若有以下定义和语句:
int a[4] = 0,1,2,3 , * p;
p = &a[2];
则*--p的值是【1】.
=======(答案1)=======
1
二、判断 共10题 (共计10分)
第1题
一个C程序中至少有一对大花括号.
答案:Y
第2题
7&&3+12的值是13.
答案:N
第3题
若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28.
答案:N
第4题
for(i=0;i<9;i++)能控制循环10次.
答案:N
第5题
while 和for循环都是先判断表达式的值,后执行循环体语句.
答案:Y
第6题
将函数的返回值类型说明成空值型(void),则调用时不可做表达式用.
答案:Y
第7题
变量根据其作用域的范围可以分作局部变量和全局变量.
答案:Y
第8题
当调用函数时,实参是一个数组名,则向函数传送的是数组的长度.
答案:N
第9题
static char s[]; s="China"; 是正确的.
答案:N
第10题
char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl".
答案:N
三、单选 共25题 (共计25分)
第1题
以下叙述中正确的是().
A:构成C程序的基本单位是函数
B:可以在一个函数中定义另一个函数
C:main()函数必须放在其它函数之前
D:所有被调用的函数一定要在调用之前进行定义
答案:A
第2题
C语言程序的基本单位是().
A:函数
B:过程
C:子程序
D:子例程
答案:A
第3题
C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符().
A:必须为字母
B:必须为下划线
C:必须为字母或下划线
D:可以是字母,数字和下划线中任一字符
答案:C
第4题
若int a=3,则执行完表达式a-=a+=a*a后,a的值是().
A:-15
B:-9
C:-3
D:0
答案:D
第5题
判断char型变量cl是否为小写字母的正确表达式是().
A:'a'<=cl<='z'
B:(cl>=a)&&(cl<=z)
C:('a'>=cl)||('z'<=cl)
D:(cl>='a')&&(cl<='z')
答案:D
第6题
若k为int型变量,则以下程序段的执行结果是().k=-8567; printf("|%06D|\\n",k);
A:格式描述符不合法,输出无定值
B:输出为|%06D|
C:输出为|0-8567|
D:输出为|-8567|
答案:B
第7题
若x=2,y=3则x&y的结果是().
A、0
B、2
C、3
D、5
答案:B
第8题
若有如下语句,则程序段().
int x = 6;
do
printf("%d\\n", x -= 2);
while (--x);
A:输出的是1
B:输出的是4和1
C:输出的是3和0
D:是死循环
答案:B
第9题
int a=1,b=2,c=3;
if(a>c)b=a;a=c;c=b;则c的值为().
A:1
B:2
C:3
D:不一定
答案:B
第10题
以下语句中,循环次数不为10次的语句是().
A:for(i=1;i<10;i++);
B:i=1;doi++;while(i<=10);
C:i=10;while(i>0)--i;
D:i=1;m:if(i<=10)i++;goto m;
答案:A
第11题
以下程序的执行结果是().
main()
int num = 0;
while (num <= 2)
num++;
printf("%d,", num);
A:0,1,2
B:1,2,
C:1,2,3,
D:1,2,3,4,
答案:C
第12题
C语言中 while 和 do-while 循环的主要区别是().
A:do-while 的循环体至少无条件执行一次
B:while的循环控制条件比 do-while的循环控制条件更严格
C:do-while 允许从外部转到循环体内
D:do-while 的循环体不能是复合语句
答案:A
第13题
凡是函数中未指定存储类别的局部变量,其隐含的存储类别为().
A:自动(auto)
B:静态(static)
C:外部(extern)
D:寄存器(register)
答案:A
第14题
以下正确的函数形式是().
A:
double fun(int x, int y)
z = x + y; return z;
B:
fun(int x, y)
int z; return z;
C:
fun(x, y)
int x, y; double z; z = x + y; return z;
D:
double fun(int x, int y)
double z; z = x + y; return z;
答案:D
第15题
C语言程序中,当调用函数时().
A:实参和虚参各占一个独立的存储单元
B:实参和虚参可以共用存储单元
C:可以由用户指定是否共用存储单元
D:计算机系统自动确定是否共用存储单元
答案:A
第16题
数组名作为实参数传递给函数时,数组名被处理为().
A:该数组的长度
B:该数组的元素个数
C:该数组的首地址
D:该数组中各元素的值
答案:C
第17题
表达式18/4*sqrt(4.0)/8值的数据类型为().
A:int
B:float
C:double
D:不确定
答案:C
第18题
以下能对二维数组a进行正确初始化的语句是().
A:int a[2][] = 1,0,1,5,2,3 ;
B:int a[][3] = 1,2,3,4,5,6 ;
C:int a[2][4] = 1,2,3,4,5,6 ;
D:int a[][3] = 1,0,1 ,1,1 ;
答案:B
第19题
若char a[10];已正确定义,以下语句中不能从键盘上给a数组的所有元素输入值的语句是().
A:gets(a);
B:scanf("%s", a);
C:for (i = 0; i < 10; i++)a[i] = getchar();
D:a = getchar();
答案:D
第20题
设有数组定义:char array[ ]="China";,则数组array所占的空间为().
A :4个字节
B : 5个字节
C : 6个字节
D : 7个字节
答案:C
第21题
char a[10];不能将字符串"abc"存储在数组中的是().
A:strcpy(a,"abc");
B:a[0]=0;strcat(a,"abc");
C:a="abc";
D:int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;
答案:C
第22题
下列字符数组长度为5的是().
A:char a[] = 'h', 'a', 'b', 'c', '\\0' ;
B:char b[] = 'h', 'a', 'b', 'c', 'd', '\\0' ;
C:char c[10] = 'h', 'a', 'b', 'c', 'd' ;
D:char d[6] = 'h', 'a', 'b', 'c', '\\0' ;
答案:A
第23题
若有说明 int *p,m=5,n;以下正确的程序段是().
A:p=&n;scanf("%d",&p);
B:p=&n;scanf("%d",*p)
C:scanf("%d",&n);*p=n;
D:p=&n;*p=m;
答案:D
第24题
若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是().
A:p1=&m;p2=&p1
B:p1=&m;p2=&n;*p1=*p2;
C:p1=&m;p2=p1;
D:p1=&m;*p2=*p1;
答案:C
第25题
若有int *p,a; p=&a,下列说法不正确的是().
A:&*p==&a
B:*&a==a
C:(*p)++==a++
D:*(p++)==a++
答案:D
四、程序填空 共2题 (共计10分)
第1题
功能:输出9*9口诀。
#include<stdio.h>
main()
int i, j, result;
printf("\\n");
for (i = 1; 【 ? 】; i++)
for (j = 1; j < 10; 【 ? 】)
result = i * j;
printf("%d*%d=%-3d", i, j, 【 ? 】);
printf("\\n");
答案:
=======(答案1)=======
i<10
=========或=========
10>i
=======(答案2)=======
j++
=========或=========
++j
=========或=========
j=j+1
=======(答案3)=======
result
第2题
功能:用等分法在有序的循环数组中,找到最小元素的位置。
#include <stdio.h>
int cyclic_min(int x[], int n)
int left = 0;
int right = n - 1;
int mid;
while (【 ? 】)
mid = (left + right) / 2;
if (x[mid] < x[right])
【 ? 】;
else
【 ? 】;
return left;
void main(void)
int x[] = 20, 23, 28, 35, 39, 40, 42, 8, 10, 15, 17, 19 ;
int n = sizeof(x) / sizeof(int);
int loc, i;
printf("\\nFind Cyclic Minimum");
printf("\\n===================");
printf("\\n\\nGiven Array Sorted in Cyclic Fashion :\\n");
for (i = 0; i < n; i++)
printf("%3d", x[i]);
loc = cyclic_min(x, n);
printf("\\n\\nMinimum is located at x[%d] = %d", loc, x[loc]);
答案:
=======(答案1)=======
left < right
=========或=========
right>left
=======(答案2)=======
right = mid
=======(答案3)=======
left = mid + 1
=========或=========
left = 1+mid
五、程序改错 共2题 (共计10分)
第1题
题目:函数fun的功能是:求1到20的阶乘的和。
请改正程序中的错误,使它能得出正确的结果。
fun()
int n, j;
float s = 0.0, t = 1.0;
for (n = 1; n <= 20; n++)
t = 1;
for (j = 1; j <= n; j++)
t = t * j;
s + t = s;
printf("jiecheng=%d\\n", s);
main()
fun();
答案:
=======(答案1)=======
s=s+t;
=========或=========
s+=t;
=======(答案2)=======
printf("jiecheng=%f\\n",s);
第2题
功能:求1到10的阶乘的和。
#include <stdio.h>
main()
int i;
float s = 0;
float fac(int n);
for (i = 1; i < 10; i++)
s = fac(i);
printf("%f\\n", s);
float fac(int n)
int y = 1;
int i;
for (i = 1; i <= n; i++)
y = y * i;
return;
答案:
=======(答案1)=======
for(i=1;i<=10;i++)
=========或=========
for(i=1;10>=i;i++)
=========或=========
for(i=1;i<11;i++)
=========或=========
for(i=1;11>i;i++)
=======(答案2)=======
s=s+fac(i);
=========或=========
s+=fac(i);
=========或=========
s=fac(i)+s;
=======(答案3)=======
float y=1.0;
=========或=========
float y=1;
=======(答案4)=======
return y;
=========或=========
return(y);
=========或=========
return (y);
六、程序设计 共2题 (共计32分)
第1题
题目:编程输出1~200之间所有能被12整除的整数。
要求:循环控制变量用i。
#include <stdio.h>
void main()
/**********Program**********/
/********** End **********/
答案:
int i;
for (i = 1; i <= 200; i++)
if (i % 12 == 0)
printf("%d ", i);
printf("\\n");
第2题
题目:编写程序,从键盘输入2个字符串,分别存入字符数组s和t中
(数组大小为40),比较这两个字符串,如果两个字符串相同,
直接输出"Two strings are equal.",否则将较大的字符串之
后与较小的字符串和字符串"end."连接后存入字符数组r中
(数组大小为100),输出连接后的字符串r。
提示:程序应包含头文件 <string.h>
/**********Program**********/
/********** End **********/
答案:
#include <stdio.h>
#include <string.h> //1分
main()
char s[40] = "", t[40] = "", r[100] = ""; //1分
gets(s); //1分
gets(t); //1分
if (strcmp(s, t) == 0) //1分(含puts)
puts("Two strings are equal.");
else if (strcmp(s, t) > 0) //2分(含 分数)
strcpy(r, s); //1分
strcat(r, t); //1分
strcat(r, "end."); //1分
puts(r); //1分
else
strcpy(r, t); //1分
strcat(r, s); //1分
strcat(r, "end."); //1分
puts(r); //1分
若有错误或疑问,欢迎评论区留言讨论。
二级C语言考试选择真题分类练习讲解——C语言基本语法
01
全国计算机等级考试二级C语言 选择题题库分类练习讲解
C语言基本语法【共41题】
1、不合法的十六进制数是()
A.oxff
B.0xabc
C.0X11
D.0x19
2、合法的八进制数是()
A.0
B.028
C.-077
D.01.0
3、VS 2010 C++中int类型变量所占字节数是()
A.2
B.4
C.8
D.16
4、以下叙述中正确的是()
A.在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示
B.C程序由主函数组成
C.C程序由若干函数组成
D.C程序中只允许包含一个函数
5、以下叙述中正确的是()
A.a是实型变量,c允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值
B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式
C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值.b的值由原值变为0
D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3
1-5题视频讲解
6、若变量已正确定义并赋值,以下符合C语言语法的表达式是()
A.a=a+7;
B.a=7+b+c,a++
C.int(12.3%4)
D.a=a+7=c+b
7、可在C程序中用作用户标识符的一组标识符是()
A.as_b3、_123、If
B.void、define、WORD
C.For、-abc、case
D.2c、DO、SIG
8、以下选项中不合法的用户标识符是()
A.A$
B.Dim
C.printf
D._123
9、以下选项中不合法的用户标识符是()
A.abc.c
B.file
C.Main
D.PRINT
10、以下选项中不正确的实型常量是()
A.2.607E-1
B.0.8103e 2
C.-77.77
D.456e-2
6-10题视频讲解
11、以下选项中正确的实型常量是()
A. 0
B. .871
C. 3. 1415
D. 0.329×102
12. 以下选项中正确的整型常量是()
A.12.
B.-20
C.1,000
D.4 5 6
13. 结构化程序设计不包括以下哪项()
A.顺序结构
B.选择结构
C.循环结构
D.模块结构
14. 语句:x++;执行后能使变量x中的值增1,下列选项中哪条赋值语句不属于同一功能()
A.++x;
B.x=x+1
C.x=1+x;
D.x+=1;
15. 设a、b、c为整型数,且a=2、b=3、c=4,则执行完以下语句: a*=16+(b++)-(++c); 后,a的值是()
A.28
B.32
C.31
D.34
11-15题视频讲解
16. 设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为()
A.1
B.1.0
C.1.5
D.2
17. 若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是()
c=(a-=(b-5));
c=(a%11)+(b=3);
A.1
B.2
C.3
D.4
18.【单选题】C语言程序的基本单位是()
A.程序行
B.语句
C.函数
D.字符
19.在C语言中,合法的长整型常数是( )
A.0L
B.4962710
C.0.054838743
D.2.1869e10
20. 设x和y均为int型变量,则以下语句的功能是( )
x+=y;y=x-y;x-=y;
A.把x和y按从大到小排列
B.把x和y按从小到大排列
C.无确定结果
D.交换x和y中的值
16-20题视频讲解
21.【单选题】在C语言中,不正确的int类型的常数是( )
A.-012
B.0
C.037
D.0xAF
22. 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是( )
A.1
B.2
C.2.0
D.2.5
23. C语言中运算对象必须是整型的运算符是( )
A.%=
B./
C.=
D.<=
24、若a为int类型,且其值为3,则执行完表达式
a+=a-=a*a后,a的值是 ( )
A.-3
B.9
C.-12
D.6
25. 以下程序的输出结果是( )
main()
{
int a=3;
printf("%d\n",(a+a-=a*a));
}
A.-6
B.12
C.0
D.-12
21-25题视频讲解
26. 设int x、y,且x=10,y=3,则以下语句的输出结果是( )
printf("%d,%d\n",x--,--y);
A.10,3
B.9,3
C.9,2
D.10,2
27.【单选题】以下选项中,与k=n++完全等价的表达式是( )
A.k=n,n=n+1
B.n=n+1,k=n
C.k=++n
D.k+=n+1
28.【单选题】以下非法的赋值语句是()
A.n=(i=2,++i);
B.j++;
C.++(i+1);
D.x=j>0;
29、下列关于单目运算符++、--的叙述中正确的是()
A.它们的运算对象可以是任何变量和常量
B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D.它们的运算对象可以是char型变量、int型变量和float型变量
30. 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是()
A.x=x*100+0.5/100.0;
B.x=(x*100+0.5)/100.0;
C.x=(int)(x*100+0.5)/100.0;
D.x=(x/100+0.5)*100.0;
26-30题视频讲解
31. 以下叙述中正确的是()
A.C程序中注释部分可以出现在程序中任意合适的地方
B.花括号"{"和"}"只能作为函数体的定界符
C.构成C程序的基本单位是函数,所有函数名都可以由用户命名
D.分号是C语句之间的分隔符,不是语句的一部分
32. 若以下选项中的变量已正确定义,则正确的赋值语句是()
A.x1=26.8%3;
B.1+2=x2;
C.x3=0x12;
D.x4=1+2=3;
33. 以下4组用户定义标识符中,全部合法的一组是()
A._main、Include、Sin
B.If、-max、turbo
C.txt、REAL、3COM
D.int、k_2、 _001
34. 下列选项中,不能用作标识符的是()
A._1234_
B._1_2
C.int_2_
D.2_int_
35.有以下程序
main()
{ int m=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是()
A.12353514
B.12353513
C.12343514
D.12343513
31-35题视频讲解
36.【单选题】以下选项中,不能作为合法常量的是()
A.1.234e04
B.1.234e0.4
C.1.234e+4
D.1.234e0
37.【单选题】以下不能定义为用户标识符的是
A.Main
B._0
C._int
D.sizeof
38、以下选项中可作为C语言合法常量的是()
A.-80
B.-080
C.-8e1.0
D.-80.0e
39、以下不能正确计算代数式值的C语言表达式是()
A.1/3*sin(1/2)*sin(1/2)
B.sin(0.5)*sin(0.5)/3
C.pow(sin(0.5),2)/3
D.1/3.0*pow(sin(1.0/2),2)
40、以下叙述中错误的是()
A.C语句必须以分号结束
B.复合语句在语法上被看作一条语句
C.空语句出现在任何位置都不会影响程序运行
D.赋值表达式末尾加分号就构成赋值语句
41、以下叙述中错误的是()
A.用户所定义的标识符允许使用关键字
B.用户所定义的标识符应尽量做到"见名知意"
C.用户所定义的标识符必须以字母或下划线开头
D.用户定义的标识符中,大、小写字母代表不同标识
36-41题视频讲解
关于版权声明
本文教学内容为李亚飞老师编辑、授课内容,任何个人或组织不得在未经许可的情况下复制、转录、编辑、传播视频中的任何内容。
长按二维码
关注李亚飞老师计算机学堂
我们一起成长!
以上是关于C语言计算机二级/C语言期末考试 刷题的主要内容,如果未能解决你的问题,请参考以下文章