在空闲时间整理了一些C语言计算机二级和C语言期末考试题库
整理不易,大家点赞收藏支持一下
祝大家计算机二级和期末考试都高分过
系列文章:
C语言计算机二级/C语言期末考试 刷题(一)
C语言计算机二级/C语言期末考试 刷题(二)
目录
一、填空 共25题 (共计25分)
二、判断 共10题 (共计10分)
三、单选 共35题 (共计35分)
四、程序填空 共2题 (共计10分)
五、程序改错 共2题 (共计10分)
六、程序设计 共2题 (共计10分)
第1题
int x=2;z=x++-1; 则z的值为【1】.
=======(答案1)=======
1
第2题
int x=2,y=3,z=4; 则表达式!x+y>z的值为【1】.
=======(答案1)=======
0
第3题
C语言中的字符变量用保留字【1】来说明.
=======(答案1)=======
char
第4题
设k=(a=2,b=3,a*b),则k 的值为【1】.
=======(答案1)=======
6
第5题
int x=2,y=3,z=4; 则表达式!(x+y)>z的值为【1】.
=======(答案1)=======
0
第6题
输入整型变量a的值
int a;
scanf("%d", 【1】);
=======(答案1)=======
&a
第7题
int x=4,y=z=2;z=x==(y=z); 则z的值为【1】.
=======(答案1)=======
0
第8题
已知a=12,写出表达式 (0的值是【1】.
=======(答案1)=======
0
第9题
当a=3,b=2,c=1;时,执行以下程序段后 c=【1】.
if (a > b) a = b;
if (b > c) b = c;
else c = b;
c = a;
=======(答案1)=======
2
第10题
当a=3,b=2,c=1;时,执行以下程序段后 b=【1】.
if (a > b) a = b;
if (b > c) b = c;
else c = b;
c = a;
=======(答案1)=======
1
第11题
下面程序的运行结果是【1】 .
#include
void main()
{
int y, a;
y = 2; a = 1;
while (y-- != -1)
{
do
{
a *= y; a++;
} while (y--);
}
printf("%d,%d", a, y);
}
=======(答案1)=======
1,-2
第12题
若int i=10;,则执行下列程序后,变量 i 的正确结果是【1】.
switch (i)
{
case 9:i += 1;
case 10:i += 1;
case 11:i += 1;
default:i += 1;
}
=======(答案1)=======
13
第13题
为了避免嵌套条件语句的二义性,C语言规定else与其前面最近的并没有与其他else配过对的【1】语句配对.
=======(答案1)=======
if
第14题
下面程序的运行结果是【1】
#include
int a = 5; int b = 7;
void main()
{
int a = 4, b = 5, c;
c = plus(a, b);
printf("A+B=%d\n", c);
}
plus(int x, int y)
{
int z;
z = x + y;
return(z);
}
=======(答案1)=======
A+B=9
第15题
以下程序的输出结果是【1】 .
#include
int x = 3;
void incre();
void main()
{
int i;
for (i = 1; i < x; i++)
incre();
}
void incre()
{
static int x = 1;
x *= x + 1;
printf("%d", x);
}
=======(答案1)=======
26
第16题
函数调用语句func((e1,e2),(e3,e4,e5))中含有【1】个实参.
=======(答案1)=======
2
第17题
以下程序输出的结果是【1】 .
#include
int func(int a, int b)
{
return(a + b);
}
void main()
{
int x = 2, y = 5, z = 8, r;
r = func(func(x, y), z);
printf("%d\n", r);
}
=======(答案1)=======
15
第18题
函数的【1】调用是一个函数直接或间接地调用它自身.
=======(答案1)=======
递归
第19题
以下程序可求出所有水仙花数(提示:所谓水仙花数是指一个3位正整数,其各位数字的立方之和等于该正整数.如407=4*4*4+0*0*0+7*7*7,故407是一个水仙花数).请填空.
#include
void main()
{
int x, y, z, a[8], m, i = 0;
printf("the special number are(in the arrange of 1000):\n");
for (【1】; m++)
{
x = m / 100;
y = 【2】;
z = m % 10;
if (x * 100 + y * 10 + z = = x * x * x + y * y * y + z * z * z)
{
【3】; i++;
}
}
for (x = 0; x < i; x++)
printf("%6d", a[x]);
}
=======(答案1)=======
m=100;m<1000
=======(答案2)=======
m/10%10
=========或=========
m%100/10
=========或=========
(m-m/100*100)/10
=========或=========
m/10-m/100*10
=======(答案3)=======
a[i]=m
第20题
下列程序的输出结果是【1】 .
#define N 20
fun(int a[], int n, int m)
{
int i, j;
for (i = m; i > n; i--)
a[i + 1] = a[i];
}
void main()
{
int i, a[N] = { 1,2,3,4,5,6,7,8,9,10 };
fun(a, 2, 9);
for (i = 0; i < 5; i++)
printf("%d", a[i]);
}
=======(答案1)=======
1 2 3 4 4
第21题
复制字符串的库函数是【1】,只写函数名即可.
=======(答案1)=======
strcpy
第22题
从键盘输入 1 2 3 4 5 6 7 8 9 执行后输出的结果是【1】.
main()
{
int a[3][3], i, sum = 0;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
scanf("%d", &a[i][j]);
printf("\n");
for (i = 0; i < 3; i++)
sum = sum + a[i][i];
printf("%d\n", sum);
}
=======(答案1)=======
15
第23题
C语言中,二维数组在内存中的存放方式为按【1】优先存放
=======(答案1)=======
行
第24题
在c程序中,只能给指针赋NULL值和【1】值.
=======(答案1)=======
地址
第25题
若有以下定义和语句:
int a[4] = { 0,1,2,3 }, * p;
p = &a[2];
则*--p的值是【1】.
=======(答案1)=======
1
第1题
在C程序中,语句之间必须要用分号";"分隔.
答案:Y
第2题
关系运算符<= 与 == 的优先级相同.
答案:N
第3题
在C语言中,4种基本数据类型的存储空间长度的排列顺序为:char 答案:Y 第4题 循环体一次也不执行. 答案:N 第5题 while 和for循环都是先判断表达式的值,后执行循环体语句. 答案:Y 第6题 函数的定义和函数的调用均可以嵌套. 答案:N 第7题 若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的. 答案:N 第8题 当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址. 答案:Y 第9题 int n; scanf("%d",&n); int a[n]; 是不合法的. 答案:Y 第10题 数组说明 int a[3][3]={1,2,3,4,5,6,7} ;是正确的. 答案:Y 第1题 C语言程序一行写不下时,应该(). 答案:B 第2题 以下叙述不正确的是(). 答案:D 第3题 以下叙述中正确的是(). 答案:A 第4题 C语言中标识符只能由字母、数字和下划线3种字符组成,且第一个字符(). 答案:C 第5题 C语言的注释定界符是(). 答案:D 第6题 若变量x、y、z均为double类型且已经正确赋值,不能正确表示x/(y×z)的C语言表达式是(). 答案:A 第7题 以下选项中合法的实型常数是(). 答案:C 第8题 若变量a与i已正确定义,且i已正确赋值,合法的语句是(). 答案:B 第9题 以下程序不用第三个变量,实现将两个数进行对调的操作,请填空(). 答案:B 第10题 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为(). 答案:C 第11题 有定义语句:int a =1 ,b =2,c =3,x;,则以下选项中各程序段执行后,x的值不等于3的是(). 答案:C 第12题 以下程序的执行结果是(). 答案:C 第13题 执行语句 for(i=1;i++<4;); 后变量 i 的值是(). 答案:C 第14题 C语言中while和do—while循环的主要区别是(). 答案:B 第15题 以下for循环的执行次数是(). 答案:C 第16题 以下程序中,while循环的循环次数是(). 答案:D 第17题 判断两个字符串是否相等,正确的表达方式是(). 答案:C 第18题 则c的值为(). 答案:B 第19题 以下程序的运行结果是(). 答案:D 第20题 下面程序段的输出结果是(). 答案:A 第21题 表达式18/4*sqrt(4.0)/8值的数据类型为(). 答案:C 第22题 为了提高程序的运行速度,在函数中对于整型或指针可以使用()型的变量. 答案:B 第23题 C语言程序中,当调用函数时(). 答案:A 第24题 以下程序的输出结果为(). 答案:B 第25题 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(). 答案:A 第26题 下列定义数组的语句中不正确的是(). 答案:D 第27题 以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序. 程序运行后的输出结果是(). 答案:C 第28题 若有说明:int a[10];则对a数组元素的正确引用是(). 答案:D 第29题 有下面的程序段: 则(). 答案:D 第30题 以下程序段 char *alp[]={"ABC","DEF","GHI"}; int j; puts(alp[1]);的输出结果是(). 答案:D 第31题 若有定义:char *p1,*p2,*p3,*p4,ch;则不能正确赋值的程序语句为(). 答案:C 第32题 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(). 答案:D 第33题 下面说明不正确的是(). 答案:D 第34题 若有int *p,a; p=&a,下列说法不正确的是(). 答案:D 第35题 设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是(). 答案:B 第1题 答案: 第2题 答案: 第1题 答案: 第2题 答案: 第1题 答案: 第2题 答案: 若有错误或疑问,欢迎评论区留言讨论。for(i = 0, k = -1; k = 1; k++, i++)
printf("*\n");
三、单选 共35题 (共计35分)
A:用回车换行
B:在任意空格处换行
C:用分号换行
D:用逗号换行
A:一个C源程序可由一个或多个函数组成
B:一个C源程序必须包含一个main()函数
C:C程序的基本组成单位是函数
D:在C程序中,注释说明只能位于一条语句的后面
A:构成C程序的基本单位是函数
B:可以在一个函数中定义另一个函数
C:main()函数必须放在其它函数之前
D:所有被调用的函数一定要在调用之前进行定义
A:必须为字母
B:必须为下划线
C:必须为字母或下划线
D:可以是字母、数字和下划线中任意一种字符
A:{ }
B:[ ]
C:\* *\
D:/* */
A:x/y*z
B:x*(1/(y*z))
C:x/y*1/z
D:x/y/z
A:5E2.0
B:E-3
C:.2E0
D:1.3E
A:a==1
B:++i;
C:a=a++=5;
D:a=int(i);
#include
A:a=b
B:a-b
C:b*a
D:a/b
A:不定值
B:4
C:3
D:1
A:
if (c < a) x = 1;
else if (b < a) x = 2;
else x = 3;
B:
if (a < 3) x = 3;
else if (a < 2) x = 2;
else x = 1;
C:
if (a < 3) x = 3;
if (a < 2) x = 2;
if (a < 1) x = 1;
D:
if (a < b) x = b;
if (b < c) x = c;
if (c < a) x = a;
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,
A:3
B:4
C:5
D:不定
A:While的循环控制条件比do—while的循环控制条件严格
B:do—while的循环体至少无条件执行一次
C:do—while允许从外部转到循环体内
D:do—while循环体不能是复合语句
for (x = 0, y = 0; (y = 123) && (x < 4); x++);
A:是无限循环
B:循环次数不定
C:4次
D:3次
main()
{
int i = 0;
while (i < 10)
{
if (i < 1)continue;
if (i == 5)break;
i++;
}
}
A:1
B:4
C:6
D:死循环,不能确定次数
A:while(s1= =s2)
B:while(s1=s2)
C:while(strcmp(s1,s2)= =0)
D:while(strcmp(s1,s2)=0)
int a = 1, b = 2, c = 3;
if (a > c)b = a; a = c; c = b;
A:1
B:2
C:3
D:不一定
main()
{
int i = 1, sum = 0;
while (i < 10)
sum = sum + 1; i++;
printf("i=%d,sum=%d", i, sum);
}
A:i=10,sum=9
B:i=9,sum=9
C:i=2,sum=1
D:无限循环(死循环)
a = 1; b = 2; c = 2;
while (a < b < c)
{
t = a;
a = b;
b = t;
c--;
}
printf("%d,%d,%d", a, b, c);
A、1,2,0
B、2,1,0
C、1,2,1
D、2,1,1
A:int
B:float
C:double
D:不确定
A:auto
B:register
C:static
D:extern
A:实参和虚参各占一个独立的存储单元
B:实参和虚参可以共用存储单元
C:可以由用户指定是否共用存储单元
D:计算机系统自动确定是否共用存储单元
main()
{
int a = 1, b = 2, c = 3, d = 4, e = 5;
printf("%d\n", func((a + b, b + c, c + a), (d + e)));
}
int func(int x, int y)
{
return(x + y);
}
A:15
B:13
C:9
D:函数调用出错
A:自动(auto)
B:静态(static)
C:外部(extern)
D:寄存器(register)
A:static int a[2][3]={1,2,3,4,5,6};
B:static int a[2][3]={{1},{4,5}};
C:static int a[][3]={{1},{4}};
D:static int a[][]={{1,2,3},{4,5,6}};
#include
A:1,2,3,4,5,6,7,8,9,10
B:10,9,8,7,6,5,4,3,2,1
C:1,2,3,8,7,6,5,4,9,10,
D:1,2,10,9,8,7,6,5,4,3
A:a[10]
B:a[3,5]
C:a(5)
D:a[10-10]
char a[3], b[] = "china";
a = b;
printf("%s", a);
A:运行后将输出china
B:运行后将输出ch
C:运行后将输出chi
D:编译出错
A:A
B:B
C:D
D:DEF
A:p1=&ch; scanf("%c",p1);
B:p2=(char *)malloc(1);scanf("%c",p2);
C:*p3=getchar();
D:p4=&ch;*p4=getchar();
A:p=q;
B:*p=*q;
C:n=*q;
D:p=n;
A:char a[10]="china";
B:char a[10],*p=a;p="china"
C:char *a;a="china";
D:char a[10],*p;p=a="china"
A:&*p==&a
B:*&a==a
C:(*p)++==a++
D:*(p++)==a++
A:c=*p1+*p2;
B:p2=c;
C:p1=p2;
D:c=*p1*(*p2);
四、程序填空 共2题 (共计10分)
题目:函数fun的功能是:计算如“图片1”直到“图片2” 。
若x=2.5,函数值为1.917915。
#include
=======(答案1)=======
x
=======(答案2)=======
n
=======(答案3)=======
fabs(t)
题目:输入一字符串,检查字符串是否满足以下条件:
(1)字符串s中左括号“(”的个数与右括号“)”的个数相同;
(2)从字符串s的首字符起顺序查找右括号“)”的个数在
任何时候均不超过所遇到的左括号“(”的个数。若字
符串同时满足上述两个条件,函数返回1,否则返回0。
#include
=======(答案1)=======
c2>c1
=========或=========
c1
五、程序改错 共2题 (共计10分)
功能:输入两个实数,按代数值由小到大输出它们,并在fun()
函数中输出。(输出的数据都保留2位小数)
#include
=======(答案1)=======
float t;
=======(答案2)=======
if(a>b)
=========或=========
if(a>=b)
=========或=========
if(b
调用优化的sort函数,完成对数组a的冒泡降序排序。
下面给定的程序存在错误,请改正。
#include
=======(答案1)=======
sort(a, n);
=========或=========
sort(&a[0], n);
=======(答案2)=======
for(j=n-1;j>i;j--)
=========或=========
for(j=n-1;j>i;--j)
=========或=========
for(j=n-1;j>i;j=j-1)
=======(答案3)=======
if(!swap)break;
=========或=========
if(swap ==0)break;
六、程序设计 共2题 (共计10分)
题目:输入一个正整数repeat (0
#include
sum = 0;
flag = 1;
for (i = 1; i <= n; i++)
{
item = flag * 1.0 * i / (2 * i - 1);
sum = sum + item;
flag = -flag;
}
请编写函数sum,其功能是:用for循环语句求1到n之间所有偶数之和(若n为偶数包括n)
并将结果返回给主函数。(n值由主函数传入)
运行程序后若输入:10,则输出为:sum=30。
#include
int i, s = 0;
for (i = 0; i <= n; i = i + 2)
s = s + i;
return s;