二级C语言备考8

发布时间:2024年01月17日

一、单选 ??共40题 (共计40分)

第1题 (1.0分) ???????题号:6014 ???????难度:易 ???????第1章

关于程序设计基本概念,以下叙述错误的是

A:计算机可以直接执行由任意高级语言编写的程序

B:高级语言都有与之对应的编译程序或解释程序

C:用于任何一种计算机高级语言都可以把算法转换为程序

D:结构化算法可以解决任何复杂的问题

答案:A

第2题 (1.0分) ???????题号:6985 ???????难度:较易 ???????第2章

已知字符'A'的ASCII代码值是65,字符变量c1的值是'A',c2的值是'D'.则执行语句

????printf("%d,%d", c1, c2-2 );

的输出结果是

A:65,68

B:A,68

C:A,B

D:65,66

答案:D

第3题 (1.0分) ???????题号:7312 ???????难度:中 ???????第2章

以下叙述中错误的是

A:数值型常量有正值和负值的区分

B:常量可以用一个符号名来代表

C:定义符号常量必须用类型名来设定常量的类型

D:常量是在程序运行过程中值不能被改变的量

答案:C

第4题 (1.0分) ???????题号:7285 ???????难度:较易 ???????第2章

有以下程序

????#include <stdio.h>

????main()

????{

????????char ?c1='A', c2='Y'; ????

????????printf( "%d, %d\n", c1,c2 );

????}

程序的输出结果是

A:输出格式不合法,输出出错信息

B:65,89

C:65,90

D:A,Y

答案:B

第5题 (1.0分) ???????题号:6286 ???????难度:难 ???????第2章

有下列程序

#include <stdio.h>

main( )

{ ?int x=3, y=5, z1, z2;

???z1 = y^x^y; ??z2 = x^y^x;

???printf("%d,%d\n", z1, z2);

}

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

A:7,7

B:5,3

C:8,8

D:3,5

答案:D

第6题 (1.0分) ???????题号:6591 ???????难度:易 ???????第3章

以下程序段中的变量已定义为int类型

sum = pad = 5; ?pAd = sum++, pAd++, ++pAd;

??????printf( "%d\n", pad );

程序段的输出结果是

A:6

B:4

C:5

D:7

答案:C

第7题 (1.0分) ???????题号:6643 ???????难度:较易 ???????第3章

有以下程序

#include <stdio.h>

main()

{ ?int ?a=3 ,b=3;

???printf("%d \n",a&b);

}

程序运行后的输出结果是

A:6

B:1

C:0

D:3

答案:D

第8题 (1.0分) ???????题号:6407 ???????难度:中 ???????第3章

若有以下程序

????#include ?<stdio.h>

????main()

????{ ?char ?a='5', ?b;

???????a++;

???????printf("%d,%d\n", a-'5'+255, b=a- '5');

????}

执行后的输出结果是( ).

A:256,1

B:1,256

C:255,1

D:256,0

答案:A

第9题 (1.0分) ???????题号:6871 ???????难度:中 ???????第4章

若变量已正确定义,在if (W) printf("%d\n" ,k ); 中,以下不可替代W的是().

A:a<>b+c

B:ch=getchar()

C:a==b+c

D:a++

答案:A

第10题 (1.0分) ???????题号:7254 ???????难度:中 ???????第4章

以下叙述中正确的是

A:if语句只能嵌套一层

B:if子句和else子句中可以是任意的合法的C语句

C:不能在else子句中再嵌套if语句

D:改变if-else语句的缩进格式,会改变程序的执行流程

答案:B

第11题 (1.0分) ???????题号:7077 ???????难度:中 ???????第4章

有以下程序

????#include <stdio.h>

????main()

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

???????if(x>y)

???????if(y<z) ?printf("%d",++z);

???????else ????printf("%d",++y);

???????printf("%d\n", x++ );

????}

程序的运行结果是

A:1

B:41

C:2

D:331

答案:A

第12题 (1.0分) ???????题号:6651 ???????难度:中 ???????第4章

有如下程序

#include <stdio.h>

main()

{

????int a = 0, b = 1;

????if (a++ && b++)

????????printf("T");

????else

????????printf("F");

????printf("a=%d,b=%d\n", a, b);

}

程序运行后的输出结果是

A:Ta=1,b=2

B:Fa=0,b=2

C:Fa=1,b=1

D:Ta=0,b=1

答案:C

第13题 (1.0分) ???????题号:6237 ???????难度:中 ???????第5章

有以下程序段 ????????????????

????char ?c1,c2;

????for(c1='0',c2='9'; c1<c2; c1++,c2--)

????????printf("%c%c",c1,c2);

程序段的执行结果是().

A:0123456789

B:0918273645

C:0123498765

D:9876543210

答案:B

第14题 (1.0分) ???????题号:6327 ???????难度:中 ???????第5章

有下列程序

#include ?<stdio.h>

main()

{ ?int a = 6, i;

???for (i=1; i<=3; i++)

???{ ?if (a<5) break;

??????if (a%2) { ?a += 2; continue; }

????a = a + 4;

???}

???printf("%d,%d", i, a);

}

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

A:4,9

B:3,18

C:4,18

D:4,2

答案:C

第15题 (1.0分) ???????题号:6816 ???????难度:中 ???????第5章

以下程序段中的变量已正确定义:

for( i=0; i<4; i++,i++ )

for( k=1; k<3; k++ ); printf("*" );

程序段的输出结果是().

A:**

B:****

C:*

D:********

答案:C

第16题 (1.0分) ???????题号:6235 ???????难度:中 ???????第5章

有下列程序

#include ?<stdio.h>

main( )

{ ?int a=-2, b=2;

???for(; a++ , b--;)

??????printf("%d,%d,", a, b);

}

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

A:-1,1,-1,0,

B:-1,1,0,1,

C:-1,1,

D:-1,1,0,0,

答案:D

第17题 (1.0分) ???????题号:6408 ???????难度:较易 ???????第5章

有以下程序

????#include ?<stdio.h>

????main( )

????{ ?int ?a=7, b=0;

???????do { ?b += a; ?a -=1; ?} while ( a-- ) ;

???????printf( "%d,%d\n", b, a );

????}

执行后的输出结果是( ).

A:28,0

B:28,1

C:16,0

D:16,-1

答案:D

第18题 (1.0分) ???????题号:6766 ???????难度:中 ???????第5章

有以下程序

#include <stdio.h>

main( )

{ ??int a,b;

????for (a=0; a<3; a++) ?

????{ ?scanf("%d", &b);

???????switch(b)

???????{ ?default: printf("%d,", ++b);

??????????case 1: printf("%d,", ++b);

??????????case 2: printf("%d,", ++b);

???????}

????}

}

执行时输入:1 2 3<回车>,则输出结果是

A:2,2,3,4,4,4,

B:2,3,4,

C:2,3,3,4,5,6,

D:2,3,4,3,4,4,

答案:C

第19题 (1.0分) ???????题号:6852 ???????难度:中 ???????第6章

有以下程序:

#include ??<stdio.h>

main()

{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;

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

for(j=i;j<=i;j++) t+=b[i][b[j][i]];

printf("%d\n",t);

}

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

A:3

B:4

C:1

D:9

答案:B

第20题 (1.0分) ???????题号:6024 ???????难度:较难 ???????第6章

有以下程序

#include <stdio.h>

main( )

{ ?char w[20], a[5][10] = {"abcdef", "ghijkl", "mnopq", "rstuv", "wxyz"};

???int i, j;

???for (i=0; i<5; i++)

???{ ??j = 0;

???????while (a[i][j] != '\0') j++;

???????w[i] = a[i][j-2];

???}

???w[5] = '\0';

???puts(w);

}

程序运行后的输出结果是

A:agmrw

B:ekpuy

C:djotx

D:flqvz

答案:B

第21题 (1.0分) ???????题号:6419 ???????难度:较难 ???????第6章

有以下程序

#include ??<stdio.h>

#include ??<string.h>

main( )

{ ?int ?i, len;

???char ?b[]="Welcome you to Beijing!";

???len = strlen(b);

???for ( i=0; i<len; i++ )

??????if ( b[i] == ' ' )

??????{ ??strcpy(b, b+i+1);

??????????i=0;

??????}

???printf( "%s\n", b );

}

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

A:Beijing!

B:to Beijing!

C:Welcome you to Beijing!

D:you to Beijing!

答案:A

第22题 (1.0分) ???????题号:6060 ???????难度:较难 ???????第6章

有以下程序

#include ??<stdio.h>

#include ??<string.h>

main( )

{ ?int ?i, len;

???char ?b[]="Welcome you to Beijing!";

???len = strlen(b);

???for ( i=0; i<len; i++ )

??????if ( b[i] == ' ' )

??????{ ??strcpy(b, b+i+1);

??????????i=0;

??????}

???printf( "%s\n", b );

}

程序运行后的输出结果是

A:Beijing!

B:to Beijing!

C:Welcome you to Beijing!

D:you to Beijing!

答案:A

第23题 (1.0分) ???????题号:7231 ???????难度:较易 ???????第6章

以下叙述中正确的是

A:一条语句只能定义一个数组

B:每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元

C:数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

D:在引用数组元素时,下标表达式可以使用浮点数

答案:B

第24题 (1.0分) ???????题号:6439 ???????难度:较难 ???????第6章

有以下程序

????#include <stdio.h>

????main()

????{ ?int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;

???????for(i=0; i<3; i++)

?????????for(j=i;j<=i;j++) t+=b[i][b[j][i]];

?????????????printf("%d\n",t);

????}

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

A:3

B:4

C:1

D:0

答案:B

第25题 (1.0分) ???????题号:7116 ???????难度:中 ???????第7章

若有以下程序

?????#include <stdio.h>

?????void fun(int ?a[ ], int ?n)

?????{ ?int ?t,i,j;

????????for (i=1; i<n; i+=2)

??????????for (j=i+2; j<n; j+=2)

????????????if (a[i] > a[j]) ?{ t=a[i]; a[i]=a[j];a[j]=t;}

?????}

?????main()

?????{ ?int ?c[10]={10,9,8,7,6,5,4,3,2,1},i;

????????fun(c, 10);

????????for (i=0;i<10; i++) ??printf("%d,", c[i]);

????????printf("\n");

?????}

则程序的输出结果是

A:1,10,3,8,5,6,7,4,9,2,

B:10,9,8,7,6,5,4,3,2,1,

C:2,9,4,7,6,5,8,3,10,1,

D:10,1,8,3,6,5,4,7,2,9,

答案:D

第26题 (1.0分) ???????题号:7065 ???????难度:中 ???????第7章

以下叙述中错误的是

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

B:预处理命令行的最后不能以分号表示结束

C:#define ?MAX ?是合法的宏定义命令行

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

答案:A

第27题 (1.0分) ???????题号:6410 ???????难度:中 ???????第7章

有以下程序

????#include <stdio.h>

????#define ??N ???4

????void ?fun(int ?a[][N], int ?b[])

????{ ?int ?i;

???????for (i=0; i<N; i++) ??b[i] = a[i][i] - a[i][N-1-i];

????}

????main()

????{ ?int ?x[N][N]={{1, 2, 3, 4}, {5, 6, 7, 8}, {9,10,11,12}, {13,14,15,16}}, y[N], i;

???????fun (x, y);

???????for (i=0; i<N; i++) ??printf("%d,", y[i]); ???printf("\n");

????}

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

A:-3,-1,1,3

B:-12,-3,0,0

C:0,1,2,3

D:-3,-3,-3,-3

答案:A

第28题 (1.0分) ???????题号:7354 ???????难度:较难 ???????第7章

有以下程序

#include <stdio.h>

void fun(int a[ ], int n)

{ ?int ?i,j=0,k=n-1, b[10];

???for (i=0; i<n/2; i++)

???{ ??b[i] =a[j];

???????b[k]=a[j+1];

???????j+=2; k--;

???}

???for (i=0; i<n; i++)

???????a[i] = b[i];

}

main()

{ ?int ?c[10]={10,9,8,7,6,5,4,3,2,1},i;

???fun(c, 10);

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

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

???printf("\n");

}

程序的运行结果是

A:10,8,6,4,2,1,3,5,7,9,

B:10,9,8,7,6,5,4,3,2,1,

C:1,2,3,4,5,6,7,8,9,10,

D:1,3,5,7,9,10,8,6,4,2,

答案:A

第29题 (1.0分) ???????题号:6366 ???????难度:中 ???????第7章

有以下程序

#include ??<stdio.h>

void fun(int ?n)

{ ?static int ?x[3]={1,2,3};

???int ?k;

???for( k=0; k<3; k++ ) x[k] += x[k]-n;

???for( k=0; k<3; k++ ) printf("%d,",x[k]);

}

main()

{ ??fun(0); ?fun(1); ??}

程序运行后的输出结果是

A:1,2,3,0,1,2,

B:2,4,6,1,3,5,

C:2,4,6,3,7,11,

D:2,4,6,4,8,12,

答案:C

第30题 (1.0分) ???????题号:5970 ???????难度:难 ???????第7章

有如下程序

#include <stdio.h>

void convert(char ?ch)

{

????if (ch < 'X') convert(ch+1);

????printf("%c", ch);

}

main( )

{

????convert('W'); ???

????printf("\n");

}

程序运行后的输出结果是

A:YZ

B:VW ?

C:XY ?

D:XW ??

答案:D

第31题 (1.0分) ???????题号:6090 ???????难度:较难 ???????第8章

有以下程序

#include ?<stdio.h>

#include ?<string.h>

void ?fun( char *s, int m1, int m2 )

{ ?char ?t, *p;

???p=s + m1; ?s= s+m2;

???while( s<p )

???{ ?t=*s; ?*s=*p; ?*p=t;

??????s++; ??p--;

???}

}

main()

{ ??char ?ss[10]="012345678";

????int ?n=6;

????fun( ss,0,n-1 );

????fun( ss,9,n );

????fun( ss,0,9 );

????printf("%s\n", ss );

}

程序运行后的输出结果是

A:012345

B:876543210

C:876543

D:012345678

答案:A

第32题 (1.0分) ???????题号:6788 ???????难度:中 ???????第8章

有以下程序

#include <stdio.h>

main()

{ ??char s[10] = "verygood", *ps = s;

????ps = "too"; ?

????s[4] = '\0';

????puts(ps);

}

程序的运行结果是

A:too

B:verygood

C:very

D:good

答案:A

第33题 (1.0分) ???????题号:6097 ???????难度:较难 ???????第8章

有以下程序

#include ?<stdio.h>

#include ?<stdlib.h>

void ?fun( double ?*p1, double ?*p2, double ?*s )

{ ??

????s=( double* )calloc( 1,sizeof(double) );

????*s = *p1 + *p2;

}

main()

{ ??

????double ?a[2]={1.1,2.2 }, b[2]={ 10.0,20.0 }, *q=NULL;

????fun( a,b,q );

????printf("%5.2f \n", *q ?);

}

程序运行后的结果是

A:有运行错误

B:输出11.10

C:输出12.10

D:输出21.10

答案:A

第34题 (1.0分) ???????题号:6378 ???????难度:难 ???????第8章

有以下程序

#include ?<stdio.h>

int * ?f(int ?*s)

{ ?s[1] +=6;

???*s=7;

???s+=2;

???return ?s;

}

main( )

{ ?int ?a[5]={1,2,3,4,5}, *p=a; ?

???p= f(p); ?

???printf( "%d,%d,%d\n", a[0], a[1], *p );

}

程序运行后的输出结果是

A:9,8,9

B:7,8,7

C:7,8,3

D:1,2,1

答案:C

第35题 (1.0分) ???????题号:6251 ???????难度:中 ???????第8章

有下列程序

#include ?<stdio.h>

#include ?<string.h>

main( )

{ ?char a[5][10]={"China", "beijing", "very", "welcome", ?"you"};

???char *p[5];

???int i, len;

???for(i=0;i<5;i++)

???{ ?p[i]=*(a+i);

??????len = strlen(p[i]);

??????printf("%s", p[i] + len - 1);

??????printf("%c", *(p[i] + len - 1));

???}

}

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

A:yywwvvbbCC

B:CCbbvvwwyy

C:uueeyyggaa

D:aaggyyeeuu

答案:D

第36题 (1.0分) ???????题号:6750 ???????难度:中 ???????第8章

有以下程序

????#include <stdio.h>

????main()

????{ ?char s[10]="verygood", *ps=s;

???????ps+=4;

???????ps="nice";

???????puts(s);

????}

程序的运行结果是

A:nice

B:verynice

C:nicegood

D:verygood

答案:D

第37题 (1.0分) ???????题号:6830 ???????难度:中 ???????第9章

下面结构体的定义语句中,错误的是().

A:struct ?ord ?{int ?x;int ?y;int ?z;} struct ?ord ?a;

B:struct ?ord ?{int ?x;int ?y;int ?z;}; struct ?ord ?a;

C:struct ?ord ?{int ?x;int ?y;int ?z;} a;

D:struct ?{int ?x;int ?y;int ?z;} ?a;

答案:A

第38题 (1.0分) ???????题号:7361 ???????难度:难 ???????第9章

有以下程序

#include <stdio.h>

typedef struct stu {

???????????????char ?name[10];

???????????????char ?gender;

???????????????int ?score;

} STU;

void f(STU *a, STU *b)

{ ?b = a;

???printf("%s,%c,%d,", b->name, b->gender, b->score);

}

main()

{ ?STU a={"Zhao", 'm', 290}, b={"Qian", 'f', 350};

???f(&a,&b);

???printf("%s,%c,%d\n", b.name, b.gender, b.score);

}

程序的运行结果是

A:Zhao,m,290,Qian,f,350

B:Qian,f,350,Zhao,m,290

C:Qian,f,350,Qian,f,350

D:Zhao,m,290,Zhao,m,290

答案:A

第39题 (1.0分) ???????题号:6584 ???????难度:中 ???????第9章

有以下程序

#include <stdio.h>

typedef struct stu {

????????????????char ?name[10];

????????????????char ?gender;

????????????????int ?score;

??????????????} STU;

void f(STU ?*a, STU ?*b)

{ ?*b = *a;

???printf("%s,%c,%d,", b->name, b->gender, b->score);

}

main()

{ ?STU ?a={"Zhao", 'm', 290}, b={"Qian", 'f', 350};

???f(&a,&b);

???printf("%s,%c,%d\n", b.name, b.gender, b.score);

}

程序的运行结果是

A:Zhao,m,290,Zhao,m,290

B:Zhao,m,290,Qian,f,350

C:Qian,f,350,Qian,f,350

D:Qian,f,350,Zhao,m,290

答案:A

第40题 (1.0分) ???????题号:7215 ???????难度:易 ???????第10章

有以下程序

?????#include <stdio.h>

?????main()

?????{ ?int ?i=1;

????????i = i^i;

????????printf("%d\n", i ?);

?????}

程序运行后的输出结果是

A:1

B:-1

C:0

D:7

答案:C

二、程序填空 ??共1题 (共计18分)

第1题 (18.0分) ???????题号:489 ???????难度:中 ???????第7章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:在数组内指定位置i插入元素x

-------------------------------------------------------*/

#include<stdio.h>

void main()

{ ?int a[11],i,j,x;

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

?????scanf("%d",&a[i]);

???scanf("%d%d",&i,&x);

/***********SPACE***********/

???for(j=9; ?【?】 ?;j--)

/***********SPACE***********/

???????【?】 ;

???a[i]=x;

???for(i=0;i<11;i++)

????printf("%d",a[i]); ?}

答案:

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

j>=i

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

j>i-1

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

i<=j

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

i-1<j

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

j>i

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

i<j

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

a[j+1]=a[j]

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

a[1+j]=a[j]

三、程序改错 ??共1题 (共计18分)

第1题 (18.0分) ???????题号:281 ???????难度:中 ???????第2章

/*------------------------------------------------------ ???

【程序改错】

--------------------------------------------------------

功能:输入两个双精度数,函数返回它们的平方和的平方根值。

例如:输入:22.936 和 14.121,输出为:y = 26.934415。

------------------------------------------------------*/

#include <stdio.h>

#include <conio.h>

#include <math.h>

/**********FOUND**********/

?double fun (double *a, *b)

{

??double c;

??/**********FOUND**********/

??c = sqr(a*a + b*b);

??/**********FOUND**********/

??return *c;

}

main ( )

{

??double a, b, y;

??printf ( "Enter a, b : ");

??scanf ("%lf%lf", &a, &b );

??y = fun (&a, &b);

??printf ("y = %f \n", y );

}

答案:

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

double fun (double *a, double *b)

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

c = sqrt(*a * *a + *b * *b);

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

c = sqrt((*a) *( *a) + (*b) *( *b));

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

c = sqrt(*b * *b + *a * *a);

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

c = sqrt((*b) *( *b) + (*a) *( *a));

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

return c;

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

return (c);

四、程序设计 ??共1题 (共计24分)

第1题 (24.0分) ???????题号:693 ???????难度:易 ???????第1章

/*--------------------------------------------------------------------

【程序设计】

----------------------------------------------------------------------

题目:功能:实现两个整数的交换

例如:给a和b分别输入:60和65,输出为:a=65 b=60

---------------------------------------------------------------------*/

#include<stdio.h>

#include<conio.h>

void fun(int *a,int *b)

{

????/**********Program**********/

????/********** ?End ?**********/

}

int main()

{

????int a,b;

????printf("Enter a,b:");

????scanf("%d%d",&a,&b);

????fun(&a,&b);

????printf("a=%d b=%d\n",a,b);

????return 0;

}

答案: int t;

?t=*a;*a=*b;*b=t;

文章来源:https://blog.csdn.net/2301_78235522/article/details/135470877
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。