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语言期末考试 刷题(十四)指针专题


目录

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

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

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

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

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

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


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

第1题

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

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

函数

第2题

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

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

函数

第3题

C程序执行过程称生成的3种文件及扩展名为【1】、【2】和【3】。

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

源程序文件.c  或.cpp

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

目标程序文件.obj

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

可执行程序文件.exe

第4题

C语言中一个函数由函数首部和【1】两部分组成.

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

函数体

第5题

C语言源程序文件的后缀是.C,经过编译之后,生成后缀为.OBJ的【1】文件,经连接生成后缀.EXE的可执行文件.

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

目标

第6题使用强制转换方法将正整数转换成字符.若输入100,则本程序的执行结果是【1】.        

#include<stdio.h>  
void main()
{
	char c; int i;
	printf("输入一个正整数(小于255):");
	scanf("%d", &i);
	c = (char)i;
	printf("%c的ASCII码为%d\n", c, i);
}

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

d的ASCⅡ码为100

第7题

设a,b,t 为整型变量,初值为a=7,b=9,执行完语句t=(a>b)?a:b后,t 的值是【1】.

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

9

第8题

程序运行的结果是【1】.

main()
{
	int a = 3, b = 4;
	printf("%d\n", (a < b) ? a : b);
}

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

3

第9题

下列程序的输出是【1】,

 main()
{
     int a=011;
     printf("%d\n",++a);
}

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

10

第10题

程序运行的结果是【1】.

#include "stdio.h"
main()
{
   char c;
   c = 'B' ;
   putchar(c) ;
}

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

B

第11题

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

#include<stdiio.h>     
void main()      
 {
    int i=10,j=0;         
    do          
    {
        j=j+i;
        i--;
    }while(i>2);
    printf("%d\n",j);
}

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

52

第12题

设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【1】.

   for(i=0,j=10; i<=j; i++,j--)
         k=i+j;

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

10

第13题

程序填空:用递归方法求n!

float fac(int  n)
{
	float f;
	if (n < 0)
		printf(" n<0,data error! ");
	else
		if (n == 0 || n == 1)
			f = 1;
		else
			f = n * (【1】);
	return (f);
}

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

fac( n-1 )

第14题

若所用变量都已正确定义,请填写以下程序段的输出结果【1】.

for(i=1;i<=5;i++);  
printf("OK\n");

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

OK

第15题

以下程序运行结果是【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

第16题

若在程序中用到strlen()函数时,应在程序开头写上包含命令# include  "【1】".

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

string.h

第17题

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

#include<stdio.h>
long fun(int n)
{
	long s;
	if (n == 1 || n == 2)
		s = 2;
	else
		s = n + fun(n - 1);
	return s;
}
void main()
{
	printf("\n%d", fun(4));
}

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

9

第18题

请选择下列程序的运行结果【1】 .

#include<stdio.h>
int try()
{
	static int x = 3;
	x++;
	return (x);
}

void main()
{
	int i, x;
	for (i = 0; i <= 2; i++)
		x = try();
	printf("%d\n", x);
}

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

6

第19题

有如下程序:

#include<stdio.h>
int max(int x, int y)
{
	int z;
	if (x > y) z = x;
	else z = y;
	return(z);
}

void main()
{
	int a = 3, b = 5;
	printf("%d\n", max(a, b));
}

运行结果为【1】 .

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

5

第20题

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

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

第21题

若有以下数组a,数组元素:a[0]~a[9],其值为

9  4  12  8  2  10  7  5  1  3

该数组可用的最大下标值是【1】.

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

9

第22题

数组在内存中占一段连续的存储区,由【1】代表它的首地址.

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

数组名

第23题

按内存排列顺序, 数组char a[2]中的所有元素是a[1]和【1】.

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

a[0]

第24题

在C程序中.只能给指针变量赋【1】值和【2】值.

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

地址

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

确定地址

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

NULL

第25题

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

main()
{
	int x, * p, ** q;
	x = 10;
	p = &x;
	q = &p;
	printf("%d\n", **q);
}

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

10

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

第1题

c程序总是从程序的第一条语句开始执行.

答案:N

第2题

表达式 (j=3, j++) 的值是4.

答案:N

第3题

十进制数15的二进制数是1111.

答案:Y

第4题

for(;;);是错误的.

答案:N

第5题

for(i=0;i<9;i++)能控制循环10次.

答案:N

第6题

在调用函数时,实参把值传送给对应位置上的形参,形参的值不能传给实参.

答案:Y

第7题

C程序在执行过程中对预处理命令进行处理.

答案:N

第8题

static char str[]="China";没有定义数组元素个数.

答案:N

第9题

数组名是一个不可变的地址常量,不能对它进行赋值运算.

答案:Y

第10题

char *s1="hello",*s2;s2=s1;是正确的.

答案:Y

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

第1题

以下叙述中正确的是 ().

A:C程序中注释部分可以出现在程序中任意合适的地方

B:花括号"{"和"}"只能作为函数体的定界符

C:构成C程序的基本单位是函数,所有函数名都可以由用户命名

D:分号是C语句之间的分隔符,不是语句的一部分

答案:A

第2题

下列程序的运行结果是().

#include<stdio.h>
void main()
{
	int i, j, m = 55;
	for (i = 1; i <= 3; i++)
		for (j = 3; j <= i; j++) m = m % j;
	printf("%d\n", m);
}
A:0

B:1

C:2

D:3

答案:B

第3题

结构化程序的三种控制结构分别是().

A:循环、分支、递归

B:顺序、循环、嵌套

C:循环、递归、选择

D:顺序、选择、循环

答案:D

第4题

在while(x)语句中的x与下面条件表达式等价的是().

A:x= =0

B:x= =1

C:x!=1

D:x!=0

答案:D

第5题

下面有关 for 循环的正确描述是().

A:for 循环只能用于循环次数已经确定的情况

B:for 循环是先执行循环循环体语句,后判断表达式

C:在 for 循环中,不能用 break 语句跳出循环体

D:for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

答案:D

第6题

对下述程序,()是正确的判断.

#include<stdio.h>
void main()
{
	int x, y;
	scanf("%d,%d", &x, &y);
	if (x > y)
		x = y; y = x;
	else
		x++; y++;
	printf("%d,%d", x, y);
}
A:语法错误,不能通过编译

B:输入数据3和4,则输入4和5

C:输入数据4和3,则输入3和4

D:输入数据4和3,则输出4和4

答案:A

第7题

以下叙述中错误的是().

A:用户所定义的标识符允许使用关键字

B:用户所定义的标识符应尽量做到"见名知意"

C:用户所定义的标识符必须以字母或下划线开头

D:用户定义的标识符中,大、小写字母代表不同标识

答案:A

第8题

如果int a=2,b=3,c=0,下列描述正确的是().

A:a>b!=c和a>(b!=c)的执行顺序是一样的

B:!a!=(b!=c)表达式的值为1

C:a||(b=c)执行后b的值为0

D:a&&b>c的结果为假

答案:B

第9题

能正确表示逻辑关系"a≥10或a≤0"的C语言表达式是().

A:a>=10 or a<=0

B:a>=0|a<=10

C:a>=10&&a<=0

D:a>=10||a<=0

答案:D

第10题

执行下列语句后,a和b的值分别为().

int a,b;

a=1+'a';

b=2+7%-4-'A';
A:-63,-64

B:98,-60

C:1,-60

D:79,78

答案:B

第11题

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

int a=7,b=9,t;
t=a*=a>b?a:b;
printf("%d",t);
A:7

B:9

C:63

D:49

答案:C

第12题

以下叙述中正确的是().

A:构成C程序的基本单位是函数

B:可以在一个函数中定义另一个函数

C:main()函数必须放在其它函数之前

D:所有被调用的函数一定要在调用之前进行定义

答案:A

第13题

以下叙述正确的是().

A:在C程序中,main函数必须位于程序的最前面

B:C程序的每行中只能写一条语句

C:C语言本身没有输入输出语句

D:在对一个C程序进行编译的过程中,可发现注释中的拼写错误

答案:C

第14题

以下正确的说法是:在C语言中().

A:实参和与其对应的形参各占用独立的存储单元

B:实参和与其对应的形参共占用一个存储单元

C:只有当实参和与其对应的形参同名时才共占用存储单元

D:形参是虚拟的,不占用存储单元

答案:A

第15题

以下函数调用语句中实参的个数是(). 

exce((v1,v2),(v3,v4,v5),v6);

A:3

B:4

C:5

D:6

答案:A

第16题

数组名作为实参数传递给函数时,数组名被处理为().

A:该数组的长度

B:该数组的元素个数

C:该数组的首地址

D:该数组中各元素的值

答案:C

第17题

C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是().

A:void

B:int

C:float

D:double

答案:B

第18题

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

#include<stdio.h>
fun(int a, int b, int c)
{
	c = a * b;
}
void main()
{
	int c;
	fun(2, 3, c);
	printf("%d\n", c);
}
A:0

B:1

C:6

D:无定值

答案:D

第19题

int a[10];

给数组a的所有元素分别赋值为1、2、3、……的语句是().

A:for(i=1;i<11;i++)a[i]=i;

B:for(i=1;i<11;i++)a[i-1]=i;

C:for(i=1;i<11;i++)a[i+1]=i;

D:for(i=1;i<11;i++)a[0]=1;

答案:B

第20题

设有数组定义:char array[ ]="China";,则数组array所占的空间为().

A:4个字节

B:5个字节

C:6个字节

D:7个字节

答案:C

第21题

有下面的程序段:

char a[3],b[ ]="china";
a=b;
printf("%s",a);

则().

A:运行后将输出china

B:运行后将输出ch

C:运行后将输出chi

D:编译出错

答案:D

第22题

若有说明:int a[ ][3]={1,2,3,4,5,6,7};,则a数组第一维的大小是().

A:2

B:3

C:4

D:无确定值

答案:B

第23题

若有说明 int a[][4]={0,0};则下面不正确的叙述是().

A:数组a的每个元素都可得到初值0

B:二维数组a的第一维大小为1

C:因为二维数组a中第二维大小的值除经初值个数的商为1,故数组a的行数为1

D:有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

答案:D

第24题

若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是().

A:p=q;

B:*p=*q;

C:n=*q;

D:p=n;

答案:D

第25题

设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是().

A:p=1;

B:*q=2;

C:q=p;

D:*p=5;

答案:D

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

第1题

题目:下列程序从键盘输入所需数据,求出z的值并输出,要求输出结果保留2位小数。
#include <stdio.h>
【 ? 】     
main()
{
	int x;
	double y, z;
	scanf("【?】", &x, &y);
	z = 2 * x * sqrt(y);
	printf("z=【?】", z);
}

答案:

=======(答案1)=======
#include<math.h>
=========或=========
#include "math.h"

=======(答案2)=======
%d%f

=======(答案3)=======
%.2f

第2题

功能:输出Fibonacci数列的前15项,要求每行输出5项。
     Fibonacci数列:1,1,2,3,5,8,13...........
#include <stdio.h>
main()
{
	int 【 ? 】[14], i;
	fib[0] = 1; fib[1] = 1;
	for (i = 2; i < 15; i++)
		fib[i] = 【 ? 】;
	for (i = 0; i < 15; i++)
	{
		printf("%d\t", fib[i]);
		if (【 ? 】) printf("\n");
	}
}

答案:

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

=======(答案2)=======
fib[i-2]+fib[i-1]
=========或=========
fib[i-2] + fib[i-1]

=======(答案3)=======
i%5 == 4

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

第1题

功能:输入一个圆的半径,计算圆的周长和面积并输出。
#include<stdio.h>
#define PI 3.1415926
void main()
{
	double r, l, s;
	scanf("%lf", r);
	l = 2 * PI * r;
	s = PI * r * r;
	printf("%6.2f,%6.2f\n", l, s);
}

答案:

=======(答案1)=======
void main()

=======(答案2)=======
scanf("%lf",&r);

第2题

在主函数中从键盘输入若干个数放入数组中,用0结束输入并放
在最后一个元素中。下列给定程序中,函数fun()的功能是计算
数组元素中值为负数的平均值(不包括0)。

例如:数组中元素的值依次为43,-47,-21,53,-8,12,0,
则程序的运行结果为-25.333333。

请改正程序中的错误,使它能得到正确结果。
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
double fun(int x[])
{
	double sum = 0.0;
	int c = 0, i = 0;
	while (x[i] == 0)
	{
		if (x[i] < 0)
		{
			sum = sum + x[i];
			c++;
		}
		i++;
	}
	sum = sum\c;
	return sum;
}
void main()
{
	int x[1000];
	int i = 0;
	system("CLS");
	printf("\nPlease enter some data(end with 0) :");
	do
	{
		scanf("%d", &x[i]);
	} while (x[i++] != 0);
	printf("%f\n", fun(x));
}

答案:

=======(答案1)=======
while(x[i]!=0)

=======(答案2)=======
sum=sum/c;

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

第1题

题目:下面的公式可以用来计算圆周率PI的近似值:
      pi/8=1/(1*3)+1/(5*7)+1/(9*11)+……
      请编程序计算公式的前15项,并输出pi值。

要求:循环控制变量用i,中间项存于变量p中,若使用其他变量用n。
#include <stdio.h>
void main()
{
	/**********Program**********/




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

答案:

答案一: 
int i;
float n, pi = 0, p;
for (i = 1; i <= 60; i += 4)
{
	p = 1.0 / (i * (i + 2));
	pi = pi + p;
}
printf("PI=%8.3f\n", pi * 8);

答案二:
int i;
float n, pi = 0, p;
for (i = 1; i <= 15; i++)
{
	n = 4 * i - 3;
	p = 1.0 / (n * (n + 2));
	pi = pi + p;
}
printf("PI=%8.3f\n", pi * 8);

第2题

题目:编写函数fun,w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求
      出w的后n-1位的数作为函数值返回。

例如:w值为5923,则函数返回923;若w值为923,则函数返回23。
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
unsigned fun(unsigned w)
{
	/**********Program**********/



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

void main()
{
	unsigned x;
	printf("Enter a unsigned integer number: ");
	scanf("%u", &x);
	printf("The original data is:%u\n", x);
	if (x < 10)
		printf("Data error! ");
	else
		printf("The result :%u\n", fun(x));
}

答案: 

    int n = 1, j, s = 1;
	unsigned t;
	t = w;
	/*首先确定w的位数,用变量n保存*/
	while (t >= 10)
	{
		/*每次循环使s的位数减1,同时n加1*/
		t = t / 10;
		n++;
	}

	/*求10的n-1次方*/ 
	for (j = 1; j < n; j++)
		s = s * 10;
	    /*用w对10的n-1次方求余即可得到所求*/
	return w % s;

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

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

juechen333

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

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

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

打赏作者

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

抵扣说明:

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

余额充值