二级C语言备考7

发布时间:2024年01月16日

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

第1题 (1.0分) ???????题号:7098 ???????难度:中 ???????第1章

下列叙述中正确的是

A:一个算法的空间复杂度大,则其时间复杂度也必定大

B:一个算法的空间复杂度大,则其时间复杂度必定小

C:一个算法的时间复杂度大,则其空间复杂度必定小

D:算法的时间复杂度与空间复杂度没有直接关系

答案:D

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

有C语言表达式 2*3+4+15%3 ,关于其执行顺序,以下叙述正确的是

A:先执行2*3得6,再执行6+4得10,再执行15%3得0,最后执行10+0得10

B:先执行2*3得6,再执行15%3得5,最后执行6+4+5得15

C:先执行15%3得0,再执行2*3得6,最后执行6+4+0得10

D:先执行15%3得3,再执行4+3得7,再执行2*3得6,最后执行6+7得13

答案:A

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

若有定义:int ?a,b,c; 以下程序段的输出结果是

??????????a=11; ?b=3; ?c=0;

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

A:2

B:0

C:3

D:1

答案:A

第4题 (1.0分) ???????题号:6708 ???????难度:中 ???????第2章

设有定义:double ?x=2.12;,以下不能完整输出变量x值的语句是

A:printf("x=%5.0f\n",x);

B:printf("x=%f\n",x);

C:printf("x=%lf\n",x);

D:printf("x=%0.5f\n",x);

答案:A

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

以下选项中合法的标识符是

A:1_ _

B:1月1日

C:1_1

D:_11

答案:D

第6题 (1.0分) ???????题号:6045 ???????难度:中 ???????第3章

设有定义: double ?x=5.16894;,则语句 printf("%lf\n ",(int)(x*1000+0.5)/1000.);的输出结果是

A:5.16900

B:5.16800

C:0.00000

D:输出格式说明符与输出项不匹配,产生错误信息

答案:A

第7题 (1.0分) ???????题号:7165 ???????难度:中 ???????第3章

若有以下程序段

????double x=5.16894;

????printf("%f\n", ?(int)(x*1000+0.5)/(double)1000 ?);

则程序段的输出结果是

A:5.17

B:5.175

C:5.169

D:5.168

答案:C

第8题 (1.0分) ???????题号:6044 ???????难度:较易 ???????第3章

有以下程序

#include ??<stdio.h>

main( )

{ ?int ?x = 0x9;

???printf("%c\n", 'A'+x);

}

程序运行后的输出结果是

A:I

B:J

C:K

D:H

答案:B

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

有以下程序

#include <stdio.h>

main()

{ ?int a=1,b=2,c=3,d=0;

???if (a==1 && b++==2)

if (b!=2||c--!=3)

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

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

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

}

程序运行后的输出结果是

A:1,3,2

B:1,3,3

C:1,2,3

D:3,2,1

答案:B

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

若有以下程序

????#include <stdio.h>

????main()

????{ ?int a=1,b=2,c=3,d=4, r=0;

???????if (a!=1) ; else r=1;

???????if (b==2) ?r+=2;

???????else; ?if (c!=3) ?r+=3;

???????else; ?if (d==4) ?r+=4;

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

????}

则程序的输出结果是

A:10

B:7

C:6

D:3

答案:B

第11题 (1.0分) ???????题号:6405 ???????难度:易 ???????第4章

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

A:a<>b+c

B:ch=getchar()

C:a==b+c

D:a++

答案:A

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

有下列程序

#include ?<stdio.h>

main()

{ int a=0,b=0,c=0;

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

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

??else

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

}

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

A:1,1,0

B:1,1,1

C:1,0,0

D:1,0,1

答案:D

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

有以下程序

#include ??<stdio.h>

main( )

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

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

?????????;

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

}

程序运行后的输出结果是

A:0,1

B:0,0

C:1,-1

D:0,2

答案:A

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

有以下程序

#include <stdio.h>

main()

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

???while(++a)

???????++b;

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

}

程序的运行结果是

A:0,-1

B:0,0

C:-1,-1

D:结果不确定

答案:A

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

有以下程序

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

????main()

????{ ?int ?x,a=1,b=1;

???????while(1)

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

??????????if(x>0) { a*=x; ?break; }

??????????if(x<0) { b*=x; ?continue; }

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

???????}

????}

程序运行时输入:-1 -2 0 1 2 <回车>,则输出结果是( ).

A:1.2

B:2.2

C:-1.1

D:-2.1

答案:A

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

有如下程序

#include ?<stdio.h>

main()

{

????int i;

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

????????putchar('9' - i % 2);

}

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

A:98989

B:98765

C:9''8''7''6''5'

D:98989'

答案:A

第17题 (1.0分) ???????题号:6913 ???????难度:中 ???????第5章

若有定义语句:

????char ?s[10]="1234567\0\0";

则strlen(s)的值是

A:7

B:8

C:9

D:10

答案:A

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

有以下程序

#include ??<stdio.h>

main( )

{ ?int ?i;

???char ?c;

???scanf("%c", &c);

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

???{

????????if (i > c) continue;

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

???}

}

执行时输入:0<回车>后,则输出结果是

A:5

B:0,0,0,0,0,

C:0,1,2,3,4,

D:0,1,

答案:C

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

有如下程序

#include <stdio.h>

#include <string.h>

main()

{

????printf("%d\n", strlen("0\n011\1"));

}

程序运行后的输出结果是

A:6

B:8

C:9

D:4

答案:A

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

以下数组定义中错误的是().

A:int ?x[2][3]={1,2,3,4,5,6};

B:int ?x[][3]={0};

C:int ?x[][3]={{1,2,3},{4,5,6}};

D:int ?x[2][3]={{1,2},{3,4},{5,6}};

答案:D

第21题 (1.0分) ???????题号:6694 ???????难度:中 ???????第6章

有如下程序

#include <stdio.h>

main()

{

????char name[10] = {'S', 'T', 'R', 'I', 'N', 'G'};

????name[3] = 'E'; name[5] = 0;

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

}

程序运行后的输出结果是

A:STRENG ?

B:STRIEG

C:STREN

D:STREN0

答案:C

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

若有以下程序

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

?????main()

?????{ ?int ?i,j=0;

????????char ?a[]="How are you!";

????????for (i=0; a[i]; i++)

???????????if (a[i] != ' ') ?a[j++]=a[i];

????????a[j]='\0'; ????

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

?????}

则程序的输出结果是

A:Hay!

B:Howareyou

C:Howareyou!

D:How are you!

答案:C

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

以下叙述中正确的是

A:字符串常量"str1"的类型是:字符串数据类型

B:有定义语句: char str1[] = "str1"; ,数组str1将包含4个元素

C:下面的语句用赋初值方式来定义字符串,其中,'\0'是必须的

???char str1[] = {'s', 't', 'r', '1', '\0'};

D:字符数组的每个元素可存放一个字符,并且最后一个元素必须是'\0'字符

答案:C

第24题 (1.0分) ???????题号:6088 ???????难度:中 ???????第6章

有以下程序

#include ?<stdio.h>

main( )

{ ?char ?w[20], a[5][10]={"abcde", "fghij", "klmno", "pqrst", "uvwxy"};

???int ?i;

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

???????w[i] = a[i][i];

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

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

}

程序运行后的输出结果是

A:ejoty

B:afkpu

C:agmsy

D:eimqu

答案:C

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

有如下程序

#include ?<stdio.h>

int ?sum_mod(int a, int b)

{

????return a + b % 2;

}

main( )

{

????int ?i;

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

????????printf("%d", sum_mod(i, 4));

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

}

程序运行后的输出结果是

A:12345

B:01234

C:45678

D:43210

答案:B

第26题 (1.0分) ???????题号:6823 ???????难度:中 ???????第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

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

有以下程序

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

?????void ?fun(int ?*a, int ?n) /* fun函数的功能是将a所指数组元素从大到小排序 */

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

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

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

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

?????}

?????main()

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

????????fun(c+4, 6);

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

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

?????}

程序的运行结果是

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

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

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

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

答案:A

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

有以下程序

#include <stdio.h>

void ?f(int ?x[], int ?n)

{ ?if ( n> 1)

???{ ?printf("%d,", x[n-1]);

??????f(x, n-1);

???}

???else

??????printf("%d,", x[0]);

}

main()

{ ??int ?z[6] = {1,2,3,4,5,6};

????f(z,6); ?????printf("\n");

}

程序的运行结果是

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

B:6,1,

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

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

答案:A

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

有以下程序

#include <stdio.h>

fun( int a, int b )

{ ?

????int ?static ?m=0, i=2;

????i=i+m+1; ??

????m=i+a+b;

????return ?m;

}

main()

{ ?

????int ?k=4, m=1, p;

????p=fun( k, m);

????printf("%d,",p);

????p=fun( k, m);

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

}

程序运行后的输出结果是

A:8,17

B:7,16

C:8,8

D:7,17

答案:A

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

若有以下程序

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

????int fun (int ?x)

????{ ??int ?y;

????????y = x++;

????????return ??y;

????}

????main()

????{ ?int ?k;

???????for(k=0; k<3; k++) { printf ( "%d,", fun(k)+k); k++; }

????}

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

A:1,5,

B:0,6,

C:0,4,

D:1,7,

答案:C

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

若有定义语句:

????int a[2][3],*p[3];

则以下语句中正确的是

A:p=a;

B:p[0]=a;

C:p[0]=&a[1][2];

D:p[1]=&a;

答案:C

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

有以下程序

#include ?<stdio.h>

int ?fun( int *b, ?int ?n )

{ ??int ?i, r=1;

????for( i=0; i<=n; i++ ) r=r*b[i];

????return ?r;

}

main()

{ ??int ?x, a[]={2,3,4,5,6,7,8,9 };

????x=fun( a,3 );

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

}

程序运行后的输出结果是

A:24

B:720

C:120

D:6

答案:C

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

若有说明和语句:char ?str[]="Hello", *p; ?p=str;,则此时*(p+5)中的值为

A:\0'

B:o'

C:o'的地址

D:不确定的值

答案:A

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

有以下程序

#include <stdio.h>

int ?fun( char ?s[] )

{ ?

????char ?*p = s;

????while( *p != 0 ) ?p++;

????return ( p-s );

}

main()

{ ?

????printf("%d\n", fun("0ABCDEF") ); ?

}

程序运行后的输出结果是

A:1

B:6

C:7

D:0

答案:C

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

下列函数的功能是

void fun(char ?*a,char ?*b)

{ ?

????while((*b=*a)!='\0') ?

????{ a++; b++;} ?

}

A:将a所指字符串赋给b所指空间

B:使指针b指向a所指字符串

C:将a所指字符串和b所指字符串进行比较

D:检查a和b所指字符串中是否有'\0'

答案:A

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

有如下程序

#include <stdio.h>

int sum(int* array, int len)

{

????if (len == 0)

????????return array[0];

????else

????????return array[0] + sum(array+1, len-1);

}

main()

{

????int array[5] = {1,2,3,4,5};

????int res = sum(array, 4);

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

}

程序运行后的输出结果是

A:15

B:10

C:8

D:1

答案:A

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

有以下程序

#include ??<stdio.h>

struct tt

{ int x; ?struct tt ?*y; } s[2]={ 1,0,2,0};

main( )

{ ?

???struct tt ?*p=s;

???p->y=s;

???printf("%d",++p->x);

}

程序运行后的输出结果是

A:2

B:0

C:1

D:3

答案:A

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

设有定义:

????????typedef ?struct data1{int ?x, y;} ??data2;

????????typedef ?struct {float ?x, y;} ??data3;

则以下不能作为类型名使用的是( ).

A:data1

B:data2

C:data3

D:struct data1

答案:A

第39题 (1.0分) ???????题号:6481 ???????难度:易 ???????第9章

以下选项中,不能定义结构体变量std的是

A:struct { int num; char name[12];} PER;

????????PER ?std;

B:#define PER ?struct

????????PER{ int num; char name[12];}std ;

C:typedef ?struct { int num; char name[12];} PER;

????????PER std;

D:struct PER { int num; char name[12];} ;

????????struct PER ?std;

答案:A

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

若以"a+"方式打开一个已存在的文件,以下叙述正确的是().

A:文件打开时,原有文件内容不被删除,可以进行添加和读操作

B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可以进行重写和读操作

C:文件打开时,原有文件内容不被删除,位置指针移到文件中间,可以进行重写和读操作

D:文件打开时,原有文件内容被删除,只可进行写操作

答案:A

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

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

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

【程序填空】

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

题目:给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由

??????短到长进行排序。ss所指字符串数组中共有M个字符串,且串长小于N。

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

#include ???<stdio.h>

#include ???<string.h>

#define ???M ???5

#define ???N ???20

void fun(char ?(*ss)[N])

{ ?

????????int ?i, j, k, n[M]; ????

????????char ?t[N];

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

????????????????n[i]=strlen(ss[i]);

????????for(i=0; i<M-1; i++)

????????{

????????????????k=i;

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

????????????????for(j=【?】; j<M; j++)

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

????????????????if(n[k]>n[j]) ?【?】;

????????????????if(k!=i)

????????????????{ ?

????????????????????????strcpy(t,ss[i]);

????????????????????????strcpy(ss[i],ss[k]);

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

????????????????????????strcpy(【?】);

????????????????????????n[k]=n[i];

????????????????}

????????}

}

main()

{ ?

????????char ?ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};

????????int ?i;

????????printf("\nThe original strings are :\n");

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

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

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

????????fun(ss);

????????printf("\nThe result :\n");

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

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

}

答案:

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

i + 1

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

k=j

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

ss[k],t

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

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

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

【程序改错】

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

题目:下列给定程序中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。

例如:若k=10,则应输出3628800。

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

#include ?<conio.h>

#include ?<stdio.h>

long fun(int k)

{

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

????????if k>1

????????????????return(k*fun(k-1));

????????return 1;

}

void main()

{

????????int k=10;

????????system("CLS");

????????printf("%d!=%ld\n ",k,fun(k));

}

答案:

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

if(k>1)

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

if(1<k)

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

第1题 (24.0分) ???????题号:791 ???????难度:中 ???????第1章

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

【程序设计】

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

题目:请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子

??????(不包括1与自身)之和。规定n的值不大于1000。

例如:若主函数从键盘给n输入的值为856,则输出为sum=763。

注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入

??????所编写的若干语句。

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

#include ?<stdio.h>

#include<stdlib.h>

int fun(int n)

{

/**********Program**********/

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

}

main()

{

????????int ?n,sum;

????????printf("Input ?n:");

????????scanf("%d", &n);

????????sum=fun(n);

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

????????system("pause");

}

答案: int s=0,i;

for(i=2;i<=n-1;i++) ?????????????????????????????????????????????????????????????????/*将n减1累加*/

if(n%i==0)

s+=i;

return s;

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