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

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

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

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

 系列文章:

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

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

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

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

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

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

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

目录

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

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

三、单选   共30题 (共计60分)

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

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

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


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

第1题

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

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

函数

第2题

getchar()函数只能接收一个【1】.

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

字符

第3题

若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为【1】.

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

1

第4题

int x=2,y=2,z=0; 则表达式x= =y>z的值为【1】.

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

0

第5题

在C语言中的实型变量分为两种类型,它们是float型和【1】型.

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

double

第6题

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

 #include

 void main()        

{  int y=3,x=3,z=1;      

   printf("%d%d\n",(++x,y++),z+2);  }

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

33

第7题

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

    if (a>c) 

          b=a;

    a=c;

    c=b;

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

2

第8题

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

 while((ch=getchar())=='e')

           printf("*");

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

0

第9题

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

 #include

 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

第10题

读程序,填运行结果【1】.

main()

{   char c[10]={'I',' ','a','m',' ','a',' ','b','o','y'};

    int i;

    for(i=0;i<10;i++)

        printf("%c",c[i]);

    printf("\n");

}

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

I am a boy

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

第1题

参加逻辑运算的数据可以是任何类型的数据.

答案:Y

第2题

putchar('\n');与printf("\n");作用相同.

答案:Y

第3题

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

答案:N

第4题

C语言程序中,当调用函数时实参和形参各占一个独立的存储单元.

答案:Y

第5题

数组说明 int a[3][3]={1,2,3,4,5}; 是正确的.

答案:Y

三、单选   共30题 (共计60分)

第1题

以下叙述正确的是().

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

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

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

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

答案:C

第2题

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

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

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

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

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

答案:A

第3题

下列()表达式的值为真,其中a=5;b=8;c=10;d=0

A:a*2>8+2

B:a&&d

C:(a*2-c)||d

D:a-b

答案:D

第4题

若变量已正确定义,执行语句scanf("%d,%d,%d ",&k1,&k2,&k3);时,()是正确的输入.

A:2030,40

B:20 30 40

C:20, 30 40

D:20,30,40

答案:D

第5题

以下选项中合法的C语言赋值语句是().

A:a=b=34

B:a=34,b=34

C:--i

D:m=(int)(x+y)

答案:D

第6题

printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式().

A:从左起输出该字符串,右补空格

B:按原字符长从左向右全部输出

C:右对齐输出该字串,左补空格

D:输出错误信息

答案:B

第7题

以下关于long、int和short类型数据占用内存大小的叙述中正确的是().

A:均占4个字节

B:根据数据的大小来决定所占内存的字节数

C:由用户自己定义

D:由C语言编译系统决定

答案:D

第8题

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

A:循环、分支、递归

B:顺序、循环、嵌套

C:循环、递归、选择

D:顺序、选择、循环

答案:D

第9题

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

        #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

第10题

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

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

第11题

以下不正确的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

第12题

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

        #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

第13题

对建立良好的程序设计风格,下面描述正确的是().

A:程序应简单、清晰、可读性好

B:符号名的命名要符合语法

C:充分考虑程序的执行效率

D:程序的注释可有可无

答案:A

第14题

C语言中while和do—while循环的主要区别是().

A:While的循环控制条件比do—while的循环控制条件严格

B:do—while的循环体至少无条件执行一次

C:do—while允许从外部转到循环体内

D:do—while循环体不能是复合语句

答案:B

第15题

假定所有变量以正确说明,下列程序段运行后x的值是().

        a=b=c=0;x =35;

        if(!a)x--;

              else if(b);

        if(c) x=3;

              else x=4;
A:34

B:4

C:35

D:3

答案:B

第16题

以下程序段中,能够正确地执行循环的是().

A、
for(i = 1; i > 10; i++)

B、
static int a;
while (a)

C、
int s = 6;
do {
	s -= 2;
} while (s);

D、
int s = 6;
m:if (s < 100)
	exit(0);
else s -= 2;
goto m:

答案:C

第17题

有下列程序段:

        int n,t=1,s=0;

        scanf("%d",&n) ;

        do{s=s+t ;t=t-2 ;}while(t !=n) ;

为使此程序段不陷入死循环,从键盘输入的数据应该是().

A:任意正奇数

B:任意负偶数

C:任意正偶数

D:任意负奇数

答案:D

第18题

以下正确的函数形式是().

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

第19题

C程序的基本结构单位是().

A:文件

B:语句

C:函数

D:表达式

答案:C

第20题

C语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为().

A:void

B:double

C:int

D:char

答案:C

第21题

表达式18/4*sqrt(4.0)/8值的数据类型为().

A:int

B:float

C:double

D:不确定

答案:C

第22题

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

A:预处理命令行都必须以#号开始

B:在程序中凡是以#号开始的语句行都是预处理命令行

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

D:以下是正确的宏定义       #define IBM_PC

答案:C

第23题

下面程序中的错误的行是().

(1)main()

(2){

(3)int a[3]={1};

(4)int i;

(5)scanf("%d",&a);

(6)for(i=1;i<3;i++) a[0]=a[0]+a[i];

(7)printf("%f\n",a[0]);

(8)}
A:3

B:6

C:7

D:5

答案:D

第24题

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

        #include

        f(int b[ ],int m,int n)

        {  int i,s=0;

           for(i=m;i
A:10

B:18

C:8

D:15

答案:A

第25题

下列数组说明中,正确的是().

A:static char str[]="China";

B:static char str[]; str="China";

C:static char str1[5],str2[]={"China"}; str1=str2;

D:static char str1[],str2[];str2={"China"}; strcpy(str1,str2);

答案:A

第26题

当调用函数时,实参是一个数组名,则向函数传送的是().

A:数组的长度

B:数组的首地址

C:数组每一个元素的地址

D:数组每个元素中的值

答案:B

第27题

int a[10];合法的数组元素的最小下标值为().

A:10

B:9

C:1

D:0

答案:D

第28题

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

A:p=1;

B:*q=2;

C:q=p;

D:*p=5;

答案:D

第29题

char *match(char c)是().

A:函数定义的头部

B:函数预说明

C:函数调用

D:指针变量说明

答案:A

第30题

若有下列定义和语句,则对a数组元素的非法引用是().

int a[2][3], (*pt)[3]; pt=a;

A:pt[0][0]

B:*(pt+1)[2]

C:*(pt[1]+2)

D:*(a[0]+2)

答案:B

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

第1题

题目: 以下程序按每行5个数的格式输出1至n范围内能被7或17 整除的整数,并求出其和。
       如输入:50  则输出:

       7       14      17      21      28

       34      35      42      49

       Sum=247
#include 
void main()
{
	int i, n, ct = 0, sum = 0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
		if (【 ? 】)
		{
			printf("%d\t", i);
			【 ? 】;
			ct++;
			if (【 ? 】)
				printf("\n");
		}
	printf("\nSum=%d\n", sum);
}

答案:

=======(答案1)=======
i%7==0 || i%17==0

=======(答案2)=======
sum+=i
=========或=========
sum=sum+i

=======(答案3)=======
ct%5==0

第2题

功能:将一个数组中的元素按逆序存放。
#include 
#define N 7
main()
{
	static int a[N] = { 12,9,16,5,7,2,1 }, k, s;
	printf("\n the origanal array:\n");
	for (k = 0; k < N; k++)
		printf("%4d", a[k]);
	for (k = 0; k < N / 2; 【 ? 】)
	{
		s = a[k];
		【 ? 】;
		【 ? 】;
	}
	printf("\n the changed array:\n");
	for (k = 0; k < N; k++)
		【 ? 】 ("%4d", a[k]);
}

答案:

=======(答案1)=======
k++
=========或=========
k= k + 1
=========或=========
k+=1
=========或=========
++k

=======(答案2)=======
a[k]=a[N-k-1]
=========或=========
a[k]=a[N-1-k]
=========或=========
a[k]=a[6-k]
=========或=========
*(a+k)=*(a+N-k-1)
=========或=========
*(a+k)=*(a+N-1-k]
=========或=========
a[k]=a[-1+N-k]
=========或=========
a[k]=a[-1-k+N]
=========或=========
a[k]=a[-k-1+N]
=========或=========
a[k]=a[-k+N-1]
=========或=========
*(a+k)=*(a+N-k-1)
=========或=========
a[6-k]=s

=======(答案3)=======
a[N-k-1]=s
=========或=========
a[N-1-k]=s
=========或=========
a[6-k]=s
=========或=========
a[N -k -1]=s
=========或=========
*(a +N -k -1)=s

=======(答案4)=======
printf

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

第1题

功能:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果

     为两位数,9*??的结果为3位数。求??代表的两位数,及809*??

     后的结果。
#include
output(long b, long i)
{
	printf("\n%ld=800*%ld+9*%ld+1\n", b, i, i);
	printf("??代表的两位数: %d", i);
	printf("\n809*??后的结果:%d", b);
	getch();
}
main()
{
	long int a; b; i;
	a = 809;
	for (i = 10; i < 100, i++)
	{
		b = i / a + 1;
		if (b >= 1000 && b <= 10000 && 8 * i < 100 && 9 * i >= 100)
			output(b, i);
	}
}

答案:

=======(答案1)=======
long int a,b,i;

=======(答案2)=======
for(i=10;i<100;i++)
=========或=========
for(i=10;i<=99;i++)

=======(答案3)=======
b=i*a+1;
=========或=========
b=a*i+1;

第2题

题目:编写函数fun求整数n以内(不包括n)3的倍数之和,

     在main函数中由键盘输入n值,并输出运算结果。

     例如:若n值为500时,则结果为41583。

     请改正程序中的错误,使它能得出正确的结果。
#include 
long fun(int n)
{
	int i;
	int s = 0;
	for (i = 1; i < n; i++)
		if (i % 3 = 0)
			s += i;
	return s;
}
void main()
{
	int n;
	long int result;
	printf("Enter n: ");
	scanf("%d", &n);
	result = fun(n);
	printf("Result=%ld\n", result);
}

答案:

=======(答案1)=======
long int s=0;
=========或=========
long s=0;

=======(答案2)=======
if(i%3==0)

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

第1题

功能:求一组数中大于平均值的数的个数。

例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函
     数值为3。
#include 
int fun(int a[], int n)
{
	/**********Program**********/
	//要求:用for,循环变量用i,平均值用ave,个数统计用k,和用s



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

main()
{
	int a[10] = { 1,3,6,9,4,23,35,67,12,88 };
	int y;
	y = fun(a, 10);
	printf("y=%d\n", y);
}

答案:

int i, k = 0;
float s = 0, ave;
for (i = 0; i < n; i++)
	s += a[i];
ave = s / n;
printf("%f  ", ave);
for (i = 0; i < n; i++)
	if (a[i] > ave)k++;
return k;

第2题

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



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

答案:

if (x != 0)
y = 1 / x;
else
y = 0;

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

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