C语言计算机二级/C语言期末考试 刷题(七)

收集了一些经典C语言计算机二级和C语言期末考试题库

整理不易,大家点赞收藏支持一下

祝大家计算机二级和期末考试都高分过

系列文章:

C语言计算机二级/C语言期末考试 刷题(一)

C语言计算机二级/C语言期末考试 刷题(二)

C语言计算机二级/C语言期末考试 刷题(三)

C语言计算机二级/C语言期末考试 刷题(四)

C语言计算机二级/C语言期末考试 刷题(五)

C语言计算机二级/C语言期末考试 刷题(六)

C语言计算机二级/C语言期末考试 刷题(七)

C语言计算机二级/C语言期末考试 刷题(八)

C语言计算机二级/C语言期末考试 刷题(九)

C语言计算机二级/C语言期末考试 刷题(十)函数专题

C语言计算机二级/C语言期末考试 刷题(十一)数据类型及输入输出专题

C语言计算机二级/C语言期末考试 刷题(十二)数组专题一

C语言计算机二级/C语言期末考试 刷题(十三)数组专题二

C语言计算机二级/C语言期末考试 刷题(十四)指针专题


目录

一、填空   共15题 (共计15分)

二、判断   共8题 (共计8分)

三、单选   共20题 (共计20分)

四、程序填空   共2题 (共计20分)

五、程序改错   共2题 (共计20分)

六、程序设计   共2题 (共计17分)


一、填空   共15题 (共计15分)

第1题

已知 i=5;写出语句 a=--i; 执行后整型变量 a 的值是【1】.

=======(答案1)=======

4

第2题

C语言中的标识符只能由3种字符组成,它们是【1】、【2】和【3】.

=======(答案1)=======

字母

=========或=========

{{无序}}

=======(答案2)=======

数字

=========或=========

{{无序}}

=======(答案3)=======

下划线

=========或=========

{{无序}}

第3题

设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是【1】.

=======(答案1)=======

0

第4题

表达式 a+=b 相当于表达式【1】.

=======(答案1)=======

a=a+b

=========或=========

a=b+a

第5题

已知 a=10,b=15,c=1,则表达式  a*b&&c  的值为【1】.

=======(答案1)=======

1

第6题

当a=1,b=2,c=3时,执行以下程序段后a=【1】.

if (a > c)
b = a;
a = c;

=======(答案1)=======

3

第7题

若输入字符串:abcde<回车>,则以下while循环体将执行 【1】 次.

while ((ch = getchar()) == 'e')
	printf("*");

=======(答案1)=======

0

第8题

下列程序运行结果为【1】.

#define PI 3.14
#define S(r) PI * r * r
main()
{
	float a, area;
	a = 2;
	area = S(a);
	printf("%5.2f\n", area);
}

=======(答案1)=======

12.56

第9题

下面程序的运行结果是【1】

#include<stdio.h>
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

第10题

下列程序的输出结果是【1】.

max_value(int array[][4])
{
	int i, j, max;
	max = array[0][0];
	for (i = 0; i < 3; i++)
		for (j = 0; j < 4; j++)
			if (array[i][j] > max)
				max = array[i][j];
	return(max);
}

main()
{
	static int a[3][4] = { {1,3,5,7},{2,4,6,8},{15,17,34,12} };
	pritnf("%d\n", max_value(a));
}

=======(答案1)=======

34

第11题

以下程序的输出结果是【1】.

#include<stdio.h>
void main()
{
	char s[] = "abcdef";
	s[3] = '\0';
	printf("%s\n", s);
}

=======(答案1)=======

abc

第12题

将函数funl 的入口地址赋给指针变量p的语句是【1】.

=======(答案1)=======

p=funl;

第13题

程序运行时若依次输入2,3,40,则输出结果是【1】.

main()
{
	int* p1, * p2, * p3;
	int i, j, k, t;
	scanf("%d%d%d", &i, &j, &k);
	p1 = &i;
	p2 = &j;
	p3 = &k;
	if (*p1 < *p2)
	{
		t = *p1; *p1 = *p2; *p2 = t;
	}
	if (*p1 < *p3)
	{
		t = *p1; *p1 = *p3; *p3 = t;
	}
	if (*p2 < *p3)
	{
		t = *p2; *p2 = *p3; *p3 = t;
	}
	printf("%d\n", *p1);
}

=======(答案1)=======

40

第14题

C语言源程序的基本单位是【1】.

=======(答案1)=======

函数

第15题

C语言中,【1】是程序的基本组成部分.

=======(答案1)=======

函数

二、判断   共8题 (共计8分)

第1题

若a是实型变量,C程序中允许以下赋值a=10;因此,实型变量中允许存放整型数据.

答案:N

第2题

语句 printf("%f%%",1.0/3);输出为 0.333333.

答案:N

第3题

for(i=0,k=-1;k=1;k++,i++)printf("*\n");

循环结束的条件不合法.

答案:N

第4题

若i =3,则printf("%d",-i++);输出的值为 -4.

答案:N

第5题

在C语言中,形参的缺省存储类别是auto.

答案:Y

第6题

C语言中函数调用的方式只有函数做表达式一种.

答案:N

第7题

调用scanf()函数进行字符数组输入时,空格和换行符都可以作为字符串的一部分而能读入.

答案:N

第8题

对数组各元素的存取完全可以不用下标变量而用指针来代替.

答案:Y

三、单选   共20题 (共计20分)

第1题

任何一个C语言的可执行程序都是从()开始执行的.

A:程序中的第一个函数

B:main( )函数的入口处

C:程序中的第一条语句

D:编译预处理语句

答案:B

第2题

在C语言中,下列合法的字符常量是().

A:'\039'

B:'\x76'

C:'ab'

D:'\o'

答案:B

第3题

下列程序段的输出结果为().

int a = 7, b = 9, t;

t = a *= a > b ? a : b;

printf("%d", t);
A:7

B:9

C:63

D:49

答案:C

第4题

设变量定义为"int a, b;",执行下列语句时,输入(),则a和b的值都是10.

scanf("a=%d, b=%d", &a, &b);
A:10 10

B:10, 10

C:a=10  b=10

D:a=10, b=10

答案:D

第5题

若已定义x和y为double类型,则表达式"x=1,y=x+3/2"的值是().

A:1

B:2

C:2.0

D:2.5

答案:C

第6题

while (fabs(t) < 1e-5)if (!s / 10)break;

循环结束的条件是().

A:t>=1e-5&&t<=-1e-5&&s>-10&&s<10

B:fabs(t)<1e-5&&!s/10

C:fabs(t)<1e-5

D:s/10==0

答案:A

第7题

下列程序的输出结果是().

main()
{
	int x = 1, y = 0, a = 0, b = 0;
	switch (x)
	{
	case 1:switch (y)
	{
		case 0:a++; break;
		case 1:b++; break;
	}
	case 2:a++; b++; break;
	case 3:a++; b++; break;
	}
	printf("a=%d,b=%d\n", a, b);
}
A:a=1,b=0

B:a=2,b=1

C:a=1,b=1

D:a=2,b=2

答案:B

第8题

若变量已经正确定义,有下列程序段输出结果是().

i = 0;
do printf("%d,", i);
while (i++);
printf("%d\n", i);
A:0,0

B:0,1

C:1,1

D:程序进入无限循环

答案:B

第9题

设j和k都是int类型,则for循环语句().

for (j = 0, k = -1; k = 1; j++, k++) printf("****\n");
A:循环结束的条件不合法

B:是无限循环

C:循环体一次也不执行

D:循环体只执行一次

答案:B

第10题

下列程序执行后的输出结果是().

void main()
{
	int k = 5;
	while (--k)
		printf("%d", k -= 3);
	printf("\n");
}
A:1

B:2

C:4

D:死循环

答案:A

第11题

以下程序的输出结果为().

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:函数调用出错

答案:B

第12题

函数的形式参数隐含的存储类型说明是().

A:extern

B:static

C:register

D:auto

答案:D

第13题

为了提高程序的运行速度,在函数中对于整型或指针可以使用()型的变量.

A:auto

B:register

C:static

D:extern

答案:B

第14题

下列说法不正确的是().

A:主函数main中定义的变量在整个文件或程序中有效

B:不同函数中,可以使用相同名字的变量

C:形式参数是局部变量

D:在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效

答案:A

第15题

已知函数abc的定义为:void abc(){ ……}则函数定义中void的含义是().

A:执行函数abc后,函数没有返回值

B:执行函数abc后,函数不再返回

C:执行函数abc后,可以返回任意类型

D:以上三个答案都是错误的

答案:A

第16题

下列说法中错误的是().

A:一个数组只允许存储同种类型的变量

B:如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时,
多余的数组元素会被自动初始化为最后一个给定元素的值

C:数组的名称其实是数组在内存中的首地址

D:当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改

答案:B

第17题

判断字符串s1是否大于字符串s2,应使用().

A:if(s1>s2)

B:if(strcmp(s1,s2))

C:if(strcmp(s2,s1)>0)

D:if(strcmp(s1,s2)>0)

答案:D

第18题

若有说明:int *p, m=5, n;以下正确的程序段是().

A:
p = &n;
scanf("%d", &p);

B:
p = &n;
scanf("%d,*p);

C:
scanf("%d", &p);
*p = n;

D:
p = &n;
*p = m;

答案:D

第19题

若有下列定义,则对a数组元素地址的正确引用是().

int a[5],*p=a;
A:&a[5]

B:p+2

C:a++

D:&a

答案:B

第20题

以下程序的输出结果是().

main()
{
	char s[] = "123", * p;
	p = s;
	printf("%c%c%c\n", *p++, *p++, *p++);
}
A:123

B:321

C:213

D:312

答案:B

四、程序填空   共2题 (共计20分)

第1题

题目:下列给定程序中,函数fun的功能是:找出100~999之间(含100和999)所有整数中各
     位上数字之和为x(x为正整数)的整数,并输出;符合条件的整数个数作为函数值返回。

例如:当x值为5时,100~999之间各位上数字之和为5的整数有:104、113、122、131、
     140、203、212、221、230、302、311、320、401、410、500,共有15个。
     当x值为27时,各位数字之和为27的整数是:999,只有1个。
#include <stdio.h>
int fun(int x)
{
	int n, s1, s2, s3, t;
	n = 0;
	t = 100;
	while (t <= 【 ? 】)
	{
		s1 = t % 10;
		s2 = (【 ? 】) % 10;
		s3 = t / 100;
		if (s1 + s2 + s3 == 【 ? 】)
		{
			printf("%d ", t);
			n++;
		}
		t++;
	}
	return n;
}

main()
{
	int x = -1;
	while (x < 0)
	{
		printf("Please input(x>0): ");
		scanf("%d", &x);
	}
	printf("\nThe result is: %d\n", fun(x));
}

答案:

=======(答案1)=======
999

=======(答案2)=======
t/10

=======(答案3)=======
x

第2题

功能:统计一个字符串中的字母、数字、空格和其它字符的个数。
#include <stdio.h>
void fun(char s[], int b[])
{
	int i;
	for (i = 0; s[i] != '\0'; i++)
		if ('a' <= s[i] && s[i] <= 'z' || 'A' <= s[i] && s[i] <= 'Z')
			b[0]++;
		else if (【 ? 】)
			b[1]++;
		else if (【 ? 】)

			b[2]++;
		else
			b[3]++;
}

main()
{
	char s1[80];
	int a[4] = { 0 };
	int k;
	【 ? 】;
	gets(s1);
	【 ? 】;
	puts(s1);
	for (k = 0; k < 4; k++)
		printf("%4d", a[k]);
}

答案:

=======(答案1)=======
'0'<=s[i] && s[i]<='9'
=========或=========
s[i]>='0' && s[i]<='9'
=========或=========
'0'<=s[i] && '9'>=s[i]
=========或=========
s[i]>='0' && '9'>=s[i]
=========或=========
48<=s[i] && s[i]<=57
=========或=========
s[i]>=48 && s[i]<=57
=========或=========
48<=s[i] && 57>=s[i]
=========或=========
s[i]>=48 && 57>=s[i]
=========或=========
!( s[i] < 48 || s[i] > 57 )
=========或=========
!( s[i] < '0' || s[i] > '9' )

=======(答案2)=======
s[i] == ' '
=========或=========
s[i] == 32

=======(答案3)=======
void fun(char s[],int b[])

=======(答案4)=======
fun(s1,a)

五、程序改错   共2题 (共计20分)

第1题

功能:在一个一维整型数组中找出其中最大的数及其下标。
#include <stdio.h>
#define N 10
float fun(int* a, int* b, int n)
{
	int* c, max = *a;
	for (c = a + 1; c < a + n; c++)
		if (*c > max)
		{
			max = *c;
			b = c - a;
		}
	return max;
}

void main()
{
	int a[N], i, max, p = 0;
	printf("please enter 10 integers:\n");
	for (i = 0; i < N; i++)
		get("%d", a[i]);
	m = fun(a, p, N);
	printf("max=%d,position=%d", max, p);
}

答案:

=======(答案1)=======
int fun(int *a,int *b,int n)

=======(答案2)=======
*b=c-a;

=======(答案3)=======
scanf("%d",&a[i]);
=========或=========
scanf("%d", a + i );

=======(答案4)=======
max=fun(a,&p,N);

第2题

题目:fun函数的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作
     为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数
     中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中
     输出。

例如:有10个正整数如下:初始数列为:6 5 7 23 18 5 8 21 45 38 第1组数为:6 5 7 
     中值为:6   替换后的数列为:6 6 7 23 18 5 8 21 45 38 第2组数为:5 7 23 
     中值为:7   替换后的数列为:6 6 7 23 18 5 8 21 45 38第3组数为:7 23 18  
     中值为:18  替换后的数列为:6 6 7 18 18 5 8 21 45 38第4组数为:23 18 5  
     中值为:18  替换后的数列为:6 6 7 18 18 5 8 21 45 38第5组数为:18 5 8  
     中值为:8   替换后的数列为:6 6 7 18 18 8 8 21 45 38第6组数为:5 8 21    
     中值为:8   替换后的数列为:6 6 7 18 18 8 8 21 45 38第7组数为:8 21 45 
     中值为:21  替换后的数列为:6 6 7 18 18 8 8 21 45 38第8组数为:21 45 38
     中值为:38  替换后的数列为:6 6 7 18 18 8 8 21 38 38                                 
     最终结果为:6 6 7 18 18 8 8 21 38 38
#include<stdio.h>
#define N 10
int findmid(int a, int b, int c)
{
	int t;
	t = (a > b) ? (b > c ? b : (a > c ? c : a)) : ((a > c) ? a : ((b > c) ? c : b));
	return b;
}

void fun(int x[])
{
	int i, a, b, c, t[N];
	for (i = 0; i < N; i++) t[i] = x[i]
		for (i = 0; i < N - 2; i++)
		{
			a = t[i];
			b = t[i + 1];
			c = t[i + 2];
			t[i + 1] = findmid(a, b, c);
		}
}

main()
{
	int i, x[N] = { 6,5,7,23,18,5,8,21,45,38 };
	for (i = 0; i < N; i++)
		printf("%d ", x[i]);
	printf("\n");
	fun(x);
	for (i = 0; i < N; i++)
		printf("%d ", x[i]);
	printf("\n");
}

答案:

=======(答案1)=======
return  t;

=======(答案2)=======
for(i=0;i<N;i++) t[i]=x[i];

=======(答案3)=======
x[i+1]=findmid(a,b,c);

六、程序设计   共2题 (共计17分)

第1题

功能:编写函数求1~100中奇数的平方和。
     结果为166650.000000。
#include <stdio.h>
float sum(int n)
{
	/**********Program**********/



	 /**********  End  **********/
}

main()
{
	printf("sum=%f\n", sum(100));
}

答案:

float s = 0;
int i;
for (i = 1; i <= n; i = i + 2)
	s = s + i * i;
return(s);

第2题

题目:编程将字符数组s2中的全部字符拷贝到字符数组s1中。

要求:不能调用字符串库函数strcpy()。
#include <stdio.h>
#include <string.h>
#define N 80
void main()
{
	int i;
	char s1[N];
	char s2[N];
	scanf("%s", s2);
	/**********Program**********/




	/**********  End  **********/
	printf("%s", s1);
}

答案:

for (i = 0; i < strlen(s2); i++)
	s1[i] = s2[i];
s1[i] = '\0'; //字符串末尾的'\0'

若有错误或疑问,欢迎评论区留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

juechen333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值