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

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

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

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

目录

一、填空,共20题 (共计20分)

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

三、程序填空   共2题 (共计15分)

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

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


一、填空,共20题 (共计20分)

第1题 (1.0分)

若有以下定义,则计算表达式 y+=y-=m*=y 后的y值是【1】.

     int m=5,y=2;

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

-16

第2题 (1.0分)

在C语言中,格式化输入操作是由库函数 【1】完成的,格式化输出操作是由库函数【2】完成的.

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

scanf

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

printf

第3题 (1.0分)

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

 #include
 void main()        
{  
    int y=3,x=3,z=1;
    printf("%d%d\n",(++x,y++),z+2);  
}

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

33

第4题 (1.0分)

int x=2,y=3,z=4;

则表达式x+y&&(x=y)的值为【1】.

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

1

第5题 (1.0分)

下列程序的输出是【1】

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

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

10

第6题 (1.0分)

下面程序段中循环体的执行次数是【1】 .

 a=10;
 b=0;
 do{
    b+=2;
    a-=2+b;
}while(a>=0);

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

3

第7题 (1.0分)

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

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

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

2

第8题 (1.0分)

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

s=7;
while ( --s );
s -= 2;
printf("%d\n",s);

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

-2

第9题 (1.0分)

C语言的三种基本结构是【1】结构、选择结构、循环结构.

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

顺序

第10题 (1.0分) 

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

#include "stdio.h"
main()
{
    int x=2,y=4,z=40;
    x*=3+2;
    x=y=z;
   pritnf("%d\n",x);
}

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

40

第11题 (1.0分)

以下程序输出的结果是【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

第12题 (1.0分)

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

#include
double sub(double x,double y,double z)
{
    y-=1.0;
    z=z+x;
    return z; 
}

void main()
{
    double a=2.5,b=9.0;
    printf("%f\n",sub(b-a,a,a));
}

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

9.000000

第13题 (1.0分)

函数的定义不可以嵌套,但函数的调用【1】嵌套.

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

可以

第14题 (1.0分)

下列程序的输出结果是【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

第15题 (1.0分)  

有如下程序:

 #include
 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

第16题 (1.0分)

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

 void f(int b[])
 {
    int i;
    for(i=2;i<6;i++)
       b[i]*=2; 
}

 void  main()
 {
    int a[10]={1,2,3,4,5,6,7,8,9,10},i;
    f(a);
    for(i=0;i<10;i++)
       printf("%d,",a[i]);
 }

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

1,2,6,8,10,12,7,8,9,10,

第17题 (1.0分)

C语言中,数组元素的下标下限为【1】.

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

0

第18题 (1.0分)

下列程序的输出结果是【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

第19题 (1.0分)

程序运行结果是【1】.

main()
{
    int oddadd(int pt[],int n);
    static int a[10]={1,2,3,4,5,6,7,8,9,10};
    int total;
    total=oddadd(a+1,9);
    printf("%d\n",total);
}

oddadd(int pt[],int n)
{
    int i,sum=0;
    for(i=0;i

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

30

第20题 (1.0分)

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

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

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

abc

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

第1题 (1.0分)

C语言程序中必须有的函数是().

A:#include "stdio.h"

B:main

C:printf

D:scanf

答案:B

第2题 (1.0分)

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

A:C语言比其他语言高级

B:C语言可以不用编译就能被计算机识别执行

C:C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D:C语言出现的最晚,具有其他语言的一切优点

答案:C

第3题 (1.0分)

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

A:C语言程序总是从第一个定义的函数开始执行

B:在C语言程序中,要调用的函数必须在main()函数中定义

C:C语言程序总是从main()函数开始执行

D:C语言程序中的main()函数必须放在程序的开始部分

答案:C

第4题 (1.0分)

一个C语言程序总是从()开始执行的.

A:主过程

B:主函数

C:子程序

D:主程序

答案:B

第5题 (1.0分)

一个C语言程序是由().

A:一个主程序和若干子程序组成

B:函数组成

C:若干过程组成

D:若干子程序组成

答案:B

第6题 (1.0分)

以下数据中,不正确的数值或字符常量是().

A:8.9e1.2

B:10

C:0xff00

D:82.5

答案:A

第7题 (1.0分)

设a为整型变量,初值为12,执行完语句 a+=a-=a*a 后,a的值是().

A:552

B:144

C:264

D:-264

答案:D

第8题 (1.0分)

下列四个选项中,均是C语言关键字的选项是().

A:auto   enum    include

B:switch  typedef   continue

C:signed  union   scanf

D:if  struct   type

答案:B

第9题 (1.0分)

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

int a=7,b=9,t;

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

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

B:9

C:63

D:49

答案:C

第10题 (1.0分)

下列语句的结果是().

main()
{
    int j;
    j=3;
    printf("%d,",++j);
    printf("%d",j++);
}
A:3,3

B:3,4

C:4,3

D:4,4

答案:D

第11题 (1.0分)

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

#include 
void main( )
{
    int a =-1,b =4,k;
    k =(++a<0)&&!(b--<= 0);
    printf(" %d%d%d \n",k,a,b);
}
A:104

B:103

C:003

D:004

答案:D

第12题 (1.0分)

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

#include
void main()
{ 
    int x=8;
    for(;x>0;x--)
    {
        if(x%3)
        {
            printf("%d,",x--);
            continue;
        }
        printf("%d,",--x);
    }
}
A:7,4,2

B:8,7,5,2

C:9,7,6,4

D:8,5,4,2

答案:D

第13题 (1.0分)

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

#include
void main()
{
    int x=10,y=10,i;
    for(i=0;x>8;y=++i)
        printf("%d %d",x--,y);
}
A:10 19 2

B:9 87 6

C:10 99 0

D:10 109 1

答案:D

第14题 (1.0分)

以下不正确的 if 语句形式是().

A:if(x>y&&x!=y);

B:if(x==y) x+=y;

C:if(x!=y) scanf("%d",&x) else scanf("%d",&y);

D:if(x

答案:C

第15题 (1.0分)

以下程序中,while循环的循环次数是().

main()
{
    int i=0;
    while(i<10)
    {
        if(i<1)   continue;
        if(i==5)  break;
        i++;
    }
}
A:1

B:4

C:6

D:死循环,不能确定次数

答案:D

第16题 (1.0分)

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

A:全局变量的作用域一定比局部变量的作用域范围大

B:静态(static)类别变量的生存期贯穿于整个程序的运行期间

C:函数的形参都属于全局变量

D:未在定义语句中赋初值的auto变量和static变量的初值都是随机值

答案:B

第17题 (1.0分)

C语言中的函数().

A:可以嵌套定义

B:不可以嵌套调用

C:可以嵌套调用,但不能调用自己

D:嵌套调用和调用自己均可

答案:D

第18题 (1.0分)

以下说法中正确的是().

A:宏替换是在程序编译时进行的

B:函数调用是在程序编译时进行的

C:宏替换时,如果实参是表达式,应先求表达式的值,再替换

D:函数调用时,如果实参是表达式,应将表达式的值传递给形参

答案:D

第19题 (1.0分)

C语言允许函数值类型缺省定义,此时该函数值隐含的类型是().

A:float型

B:int型

C:long型

D:double型

答案:B

第20题 (1.0分)

C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是().

A:地址传递

B:单向值传递

C:由实参传给形参,再由形参传回给实参

D:由用户指定的传递方式

答案:B

第21题 (1.0分)

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

A:4个字节

B:5个字节

C:6个字节

D:7个字节

答案:C

第22题 (1.0分)

假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,

则数组x在内存中所占字节数是().

A:3

B:6

C:10

D:20

答案:D

第23题 (1.0分)

以下能对二维数组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

第24题 (1.0分)

以下程序中函数reverse()的功能是将a所指数组中的内容进行逆置.     

程序运行后的输出结果是().

#include
void reverse(int a[ ],int n)
{
    int i,t;
    for(i=0;i
A:22

B:10

C:34

D:30

答案:A

第25题 (1.0分)

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

#include
void main()
{
    char arr[2][4];
    strcpy(arr,"you");  
    strcpy(arr[1],"me");
    arr[0][3]='&';
    printf("%s\n",arr);
}
A:you&me

B:you

C:me

D:err

答案:A

三、程序填空   共2题 (共计15分)

第1题 (5.0分)

说明:下面程序的功能是打印出所有的“水仙花数”,请填写
      程序所缺内容。
注:水仙花数是指一个三位数的各位数字的立方和是这个数本身。
#include"stdio.h"

void f(int n)
{
	int i, j, k;
	i = n / 100;
	/***********SPACE***********/
	j = 【 ? 】;
	k = n % 10;
	/***********SPACE***********/
	if (【 ? 】)
	{
		printf("%5d\n", n);
	}
}

void main()
{
	void f(int n);
	int i;
	for (i = 100; i < 1000; i++)
		f(i);
}

答案:

=======(答案1)=======
n/10%10
=========或=========
(n/10)%10

=======(答案2)=======
i*100 + j*10 + k == i*i*i + j*j*j + k*k*k
=========或=========
n== i*i*i + j*j*j + k*k*k
=========或=========
i*i*i + j*j*j + k*k*k ==n

第2题 (10.0分)

功能:将十进制数转换成十六进制数。
#include 
#include "string.h"
void c10_16(char p[], int b)
{
	int j, i = 0;
	/***********SPACE***********/
	while (【 ? 】)
	{
		j = b % 16;
		if (j >= 0 && j <= 9)
		/***********SPACE***********/
			【 ? 】;
		else p[i] = j + 55;
		b = b / 16;
		i++;
	}
	/***********SPACE***********/
	【 ? 】;
}

main()
{
	int a, i;
	char s[20];
	printf("input a integer:\n");
	scanf("%d", &a);
	c10_16(s, a);
	/***********SPACE***********/
	for (【 ? 】; i >= 0; i--)
		printf("%c", s[i]);
	printf("\n");
}

答案:

=======(答案1)=======
b>0
=========或=========
0

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

第1题 (10.0分)

题目:下列给定程序的功能是:读入一个整数k(2≤k≤10000),输出它的所有质因
      子(即所有为素数的因子)。
例如:若输入整数2310,则应输出:2,3,5,7,11。
#include
#include
int IsPrime(itn n)
{
	int i, m;
	m = 1;
	for (i = 2; i < n; i++)
		if!(n % i)
		{
			m = 0;
			break;
		}
	return(m);
}

main()
{
	int j, k;
	printf("\nPlease enter an interger number between 2 and 10000: ");
	scanf("%d", &k);
	printf("\nThe prime factor(s) of %d is(are): ", k);
	for (j = 2; j < k; j++)
		if ((!(k % j)) && (IsPrime(j)))
			printf("%4d,", j);
	printf("\n");
}

答案:

=======(答案1)=======
IsPrime(int n)

=======(答案2)=======
if(!(n%i))

第2题 (10.0分)

题目:下列给定程序中,函数fun的功能是:求出数组中的最大数和次最大数,并把最
      大数和a[0]中的数对调、次最大数和 a[1] 中的数对调。
#include
#include
#define N 20

void fun(int a, int n);
{
	int i, m, t, k;
	for (i = 0; i < 2; i++)
	{
		m = 0;
		for (k = i + 1; k < n; k++)
			if (a[k] > a[m])
				m = k;
		t = a[i];
		a[i] = a[m];
		a[m] = t;
	}
}

int main()
{
	int b[N] = { 11,5,12,0,3,6,9,7,10,8 }, n = 10, i;
	system("CLS");
	for (i = 0; i < n; i++)
		printf("%d ", b[i]);
	printf("\n");
	fun(b, n);
	for (i = 0; i < n; i++)
		printf("%d ", b[i]);
	printf("\n");
}

答案:

=======(答案1)=======
void fun(int *a, int n)
=========或=========
void fun(int a[], int n)

=======(答案2)=======
m=i;

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

第1题 (10.0分)

题目:请编写函数fun,该函数的功能是:求出二维数组周边元素之和,
      作为函数值返回。二维数组中的值在主函数中赋予。

例如:若二维数组中的值为:                  
                          1 3 5 7 9                       

                          2 9 9 9 4                

                          6 9 9 9 8                

                          1 3 5 7 0
      则函数值为61。

注意:请勿改主动函数main和其他函数中的任何内容,
      仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#include
#define M 4
#define N 5

int fun(int a[M][N])
{
	/**********Program**********/


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

void main()
{
	int aa[M][N] = { {1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0} };
	int i, j, y;
	system("CLS");
	printf("The original data is :\n ");
	for (i = 0; i < M; i++)
	{
		for (j = 0; j < N; j++)
			printf("%6d ", aa[i][j]);
		printf("\n ");
	}
	y = fun(aa);
	printf("\nThe sun: %d\n ", y);
	printf("\n ");
}

答案:

int i, j, sum = 0;
for (i = 0; i < M; i++)
	for (j = 0; j < N; j++)
		if (i == 0 || i == M - 1 || j == 0 || j == N - 1)
			sum = sum + a[i][j];
return sum;

第2题 (10.0分)

题目:输入一个正整数 repeat (0
#include 
void main()
{
	int i, n;
	int repeat, ri;
	double denominator, numerator, sum, temp;
	scanf("%d", &repeat);
	for (ri = 1; ri <= repeat; ri++)
	{
		scanf("%d", &n);
		/**********Program**********/



		/**********  End  **********/
		printf("sum = %.2f\n", sum);
	}
}

答案:

numerator = 2;
denominator = 1;
sum = 0;
for (i = 1; i <= n; i++)
{
	sum = sum + numerator / denominator;
	temp = numerator;
	numerator = numerator + denominator;
	denominator = temp;
}

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

你可能感兴趣的:(C语言,c语言,c++,算法,数据结构,C语言计算机二级)