二级C语言备考9

发布时间:2024年01月18日

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

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

以下叙述正确的是

A:通过分解成简单子任务,可以完成任何复杂任务

B:每个结构化程序都要包含全部三种基本结构

C:C语言程序的所有自定义函数只能写在同一个源文件中

D:C语言程序允许使用多个main函数,只要它们的函数体各不相同即可

答案:A

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

有以下程序

#include <stdio.h>

main()

{

???int ?a, b, c=241;

???a = c/100 % 9;

???b = ( -1 )&&( -1 );

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

}

程序运行后的输出结果是

A:2,1

B:6,1

C:6,0

D:2,0

答案:A

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

以下选项中合法的实型常量是

A:0

B:3.13e-2.1

C:0.914

D:2.0*10

答案:C

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

若有定义语句:int ?x=10; ,则表达式x-=x+x的值为().

A:0

B:-20

C:-10

D:10

答案:C

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

若有以下程序

????#include <stdio.h>

????main()

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

???????c= (a -= ++a), (a+=b, b+=4);

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

????}

则程序的输出结果是

A:0,4,0

B:0,4,4

C:1,4,1

D:1,4,4

答案:A

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

若有定义:int a,b,c;,想通过语句:scanf("%d,%d%d",&a,&b,&c);把1、2、3分别输入给变量a、b、c,则正确的键盘输入是().

A:1,2,3<回车>

B:1,2<tab>3<回车>

C:1<回车><tab>2<tab>3

D:1<回车>2<回车>3

答案:B

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

设有如下语句:

????????int k=0; ?

????????k=printf("OK\n");

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

A:printf必须作为独立语句出现

B:变量k得到的是输出的可见字符个数2

C:变量k得到的是输出字符的总个数3

D:变量k仍保持初值0

答案:C

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

有以下程序

????#include <stdio.h>

????main()

????{ ?int ?x=35, B; ??char ?z='B' ;

???????B = (( x ) && ( z <'b' ));

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

????}

程序运行后的输出结果是

A:1

B:0

C:35

D:66

答案:A

第9题 (1.0分) ???????题号:7046 ???????难度:较易 ???????第4章

以下选项中与

????if(a==1)a=b;

????else a++;

语句功能不同的switch语句是

A:switch(a==1)

{case 0:a=b;break;

??case 1:a++;

}

B:switch(a)

{case 1:a=b;break;

??default : a++;

}

C:switch(a)

{default:a++;break;

??case 1:a=b; ?

}

D:switch(a==1)

{case 1:a=b;break;

??case 0:a++;

}

答案:A

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

以下选项中,当且仅当x的绝对值在1至6范围内表达式值为"真"的是( ).

A:(x>=-6)&&(x<=-1)||(x>=1)&&(x<=6)

B:(x>=1)&&(x<=6)&&(x>=-6)&&(x<=-1)

C:(x>=-6)||(x<=-1)||(x>=1)||(x<=6)

D:(x>=1)&&(x<=6)||(x>=-1)&&(x<=-6)

答案:A

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

有如下嵌套的if语句

????if(a<b)

????????if(a<c) k=a;

????????else ?k=c;

????else

????????if(b<c) k=b;

????????else ?k=c;

以下选项中与上述if语句等价的语句是

A:k=(a<b)?((b<c)?a:b):((b>c)?b:c);

B:k=(a<b)?((a<c)?a:c):((b<c)?b:c);

C:k=(a<b)?a:b;k=(b<c)?b:c;

D:k=(a<b)?a:b;k=(a<c)?a:c;

答案:B

第12题 (1.0分) ???????题号:7138 ???????难度:较易 ???????第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;

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

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

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

????}

则程序的输出结果是

A:3

B:7

C:6

D:10

答案:D

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

有以下程序

#include ??<stdio.h>

main( )

{

????char ?ch = 'B';

????while (ch < 'E')

????{

????????printf("%d", ch - 'A');

????????ch++;

????}

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

}

程序运行后的输出结果是

A:123 ?

B:ABC ??

C:abc ??

D:012

答案:A

第14题 (1.0分) ???????题号:7225 ???????难度:较易 ???????第5章

以下叙述中正确的是

A:循环发生嵌套时,最多只能两层

B:三种循环for,while,do-while可以互相嵌套

C:循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误

D:for语句的圆括号中的表达式不能都省略掉

答案:B

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

有如下程序

#include <stdio.h>

main()

{

????int i;

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

????????putchar('9' - i); ?printf("\n");

}

程序运行后的输出结果是

A:54321

B:98765

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

D:43210'

答案:B

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

有以下程序

????#include <stdio.h>

????main()

????{ int ?y=10;

??????while(y--); ?printf("y=%d\n", y);

????}

程序执行后的输出结果是

A:y=0

B:y=-1

C:y=1

D:while构成无限循环

答案:B

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

有以下程序

????#include <stdio.h>

????main()

????{ ?int ??i=5;

???????do

???????{ ?if (i%3==1)

????????????if (i%5==2)

????????????{ ?printf("*%d", i); ?break; ?}

??????????i++;

???????} ?while(i!=0);

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

????}

程序的运行结果是

A:*2*6

B:*3*5

C:*5

D:*7

答案:D

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

有以下程序:

#include ??<stdio.h>

main()

{ int ??y=9;

for( ?; ?y>0; ?y--)

?if(y%3==0) ?printf("%d", --y);

}

程序的运行结果是().

A:852

B:963

C:741

D:875421

答案:A

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

有以下程序:

#include ?<stdio.h>

main()

{ char ?s[]="012xy\08s34f4w2";

int ?i, n=0;

for ( i=0; s[i]!=0; i++ )

?if(s[i] >= '0' && s[i] <= '9') ?n++;

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

}

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

A:0

B:3

C:7

D:8

答案:B

第20题 (1.0分) ???????题号:6085 ???????难度:中 ???????第6章

设有以下程序段

????????float ?a[8] = {1.0, 2.0};

????????int ?b[1] = {0};

????????char ?c[] = {"A", "B"};

????????char ?d == "1";

以下叙述正确的是

A:只有变量c的定义是合法的

B:只有变量a,b,c的定义是完全合法的

C:所有变量的定义都是完全合法的

D:只有变量a, b的定义是完全合法的

答案:D

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

若有定义语句:int x[][3]={1,2,3,4,5,6}; ,则以下选项中与该语句等价的是().

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

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

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

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

答案:D

第22题 (1.0分) ???????题号:6472 ???????难度:中 ???????第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:Howareyou!

B:areyou!

C:you!

D:Howareyou!u!

答案:A

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

有如下程序

#include ??<stdio.h>

#include ??<string.h>

main( )

{

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

}

程序运行后的输出结果是

A:8

B:9

C:7

D:10

答案:A

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

若有定义: char s1[100 ]="name", s2[ 50]="address", s3[80]="person";,要将它们连接成新串:"personnameaddress",正确的函数调用语句是().

A:strcat(strcat(s1,s2),s3); ??

B:strcat(s3,strcat(s1,s2));

C:strcat(s3,strcat(s2,s1));

D:strcat(strcat(s2,s1),s3);

答案:B

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

有以下程序

????#include <stdio.h>

????#define SWAT(t,a,b) ?t=a; a=b; b=t;

????main()

????{ int ?x=6,y=4,z=3,s=0;

??????if(x<y) ?SWAT(s,x,y);

??????if(x<z) ?SWAT(s,x,z);

??????if(y<z) ?SWAT(s,y,z);

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

????}

执行后的输出结果是

A:6,4,3

B:3,4,6

C:0,3,4

D:3,0,0

答案:D

第26题 (1.0分) ???????题号:6715 ???????难度:较易 ???????第7章

以下关于函数的叙述中正确的是

A:函数调用必须传递实参

B:函数必须要有形参

C:函数必须要有返回值

D:函数形参的类型与返回之的类型无关

答案:D

第27题 (1.0分) ???????题号:6822 ???????难度:较难 ???????第7章

有以下程序:

#include ?<stdio.h>

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

{ int ??i, t;

for(i=0; i<n/2; i++) ?{ t=a[i]; ?a[i]=a[n-1-i]; ?a[n-1-i]=t; }

}

main()

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

fun(k,5);

for(i=2; i<8; i++) printf("%d",k[i]);

printf("\n");

}

程序的运行结果是().

A:321678

B:876543

C:1098765

D:345678

答案:A

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

有以下程序:

#include ??<stdio.h>

int ?f( int x,int y)

{ return((y-x)*x); }

main()

{ int a=3,b=4,c=5,d;

??d=f(f(a,b),f(a,c));

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

}

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

A:7

B:10

C:8

D:9

答案:D

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

函数调用语句:fun( ( exp1, exp2 ), ( exp1, exp2, exp3) ); 含有的实参个数是

A:1

B:4

C:5

D:2

答案:D

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

有以下程序

????#include <stdio.h>

????#define ??N ???3

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

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

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

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

??????????for( j=1; j<N; j++ )

??????????????if ( b[i] < a[i][j] ) ?b[i] = a[i][j];

???????}

????}

????main()

????{ ?int ?x[N][N] = {1, 2, 3, 4, 5, 6, 7, 8, 9}, y[N] ,i;

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

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

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

????}

程序运行后的输出结果是

A:3,5,7

B:1,3,5,

C:2,4,8,

D:3,6,9,

答案:D

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

有以下程序

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

?????int f1(int a)

?????{ ?return a*3;}

?????int f2(int *b)

?????{ ?return *b*5;}

?????main()

?????{

????????int x=3,y=5;

????????printf("%d ,%d\n",f1(x),f2(&y));

?????}

程序的运行结果是().

A:9 ,125

B:9,25

C:3,15

D:3,45

答案:B

第32题 (1.0分) ???????题号:6084 ???????难度:较难 ???????第8章

有以下程序

#include ??<stdio.h>

void change( char* ?array, int ?len )

{ ?for (len--; len>=0; len--)

????????array[len] += 1;

}

main( )

{ ?int ?i;

???char ?array[5] = "ABCD";

???change(array, 4);

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

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

}

程序运行后的输出结果是

A:B,C,D,E,

B:A,B,C,D,

C:C,D,E,F,

D:B,D,F,H,

答案:A

第33题 (1.0分) ???????题号:7174 ???????难度:中 ???????第8章

以下选项中函数形参不是指针的是

A:fun( int ?*a ){…}

B:fun( int ?a[10] ){…}

C:fun( int ?&p ){…}

D:fun( int ?p [ ] ){…}

答案:C

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

有以下程序

#include <stdio.h>

main()

{

???int ?a[10] = { 11,12,13,14,15,16,17,18,19,20 },*p=a,i=9 ;

???printf( "%d,%d,%d\n",a[ p-a ], p[i],*( &a[i] ) );

}

程序运行后的输出结果是

A:11,19,19

B:12,20,20

C:11,20,20

D:12,19,20

答案:C

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

以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是

A:char* str, name[10]; str ?= "Hello World";

B:char* str, name[10]; name = "Hello World";

C:char str1[10] = "prog.c", str2[10]; str2 = str1;

D:char head_line[]; head_line = "=============";

答案:A

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

下面选项中的程序段,没有编译错误的是

A:char* sp, s[10]; sp = "Hello";

B:char* sp, s[10]; s = "Hello";

C:char str1[10] = "computer", str2[10]; str2 = str1;

D:char mark[]; mark = "PROGRAM";

答案:A

第37题 (1.0分) ???????题号:6700 ???????难度:较难 ???????第9章

有如下程序

#include <stdio.h>

struct ?S

{

????int x, y;

};

main()

{

????struct S ?data[2] = {4, 3, 1, 9};

????int i; ???

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

????????printf("%d,%d;", data[i].x, data[i].y >> 1);

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

}

程序运行后的输出结果是

A:4,1;1,4;

B:4,1;2,4;

C:4,3;1,9;

D:4,3;2,3;

答案:A

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

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

A:可以通过typedef增加新的类型

B:可以用typedef将已存在的类型用一个新的名字来代表

C:用typedef定义新的类型名后,原有类型名仍有效

D:用typedef可以为各种类型起别名,但不能为变量起别名

答案:A

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

若有以下程序

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

?????#define ?S(x) ?x*x

?????#define ?T(x) ?S(x)*S(x)

?????main()

?????{ ?int ?k=5, j=2;

????????printf("%d,%d\n", S(k+j),T(k+j));

?????}

则程序的输出结果是

A:17,289

B:492,401

C:17,37

D:49,289

答案:C

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

设文件指针fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是

A:只能写不能读

B:写操作结束后可以从头开始读

C:可以在原有内容后追加写

D:可以随意读和写

答案:A

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

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

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

【程序填空】

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

题目:程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。

??????函数fun的功能是输出这位学生的信息。

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

#include ????<stdio.h>

typedef ?struct

{ ?

????????int ?num;

????????char ?name[9];

????????char ?sex;

????????struct { int ?year,month,day ;} birthday;

????????float ?score[3];

}STU;

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

void show(STU ?【?】)

{ ?

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

????????printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,

????????????tt.birthday.year, tt.birthday.month, tt.birthday.day);

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

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

????????????????printf("%5.1f", 【?】);

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

}

main( )

{ ???????

????????STU ?std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 };

????????printf("\nA student data:\n");

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

????????show(【?】);

}

答案:

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

tt

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

tt.score[i]

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

std

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

第1题 (18.0分) ???????题号:300 ???????难度:易 ???????第2章

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

【程序改错】

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

功能:编写函数fun求20以内所有5的倍数之积。

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

#include <stdio.h>

#define N 20

int fun(int m)

{

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

??int s=0,i;

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

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

????if(i%m=0)

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

??????s=*i;

??return s;

}

main()

{

??int sum;

??sum=fun(5);

??printf("%d以内所有%d的倍数之积为: %d\n",N,5,sum);

}

答案:

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

int ?s=1 , i ;

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

if(i%m==0)

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

if(0==i%m)

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

if(!(i%m))

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

s=s*i;

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

s=i*s;

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

s*=i;

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

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

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

【程序设计】

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

题目:编程求100以内所有能同时被5和7整除的自然数之和。

??

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

# include "stdio.h" ????????

main()

{ ?

????int i,s=0; ???

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

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

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

} ???????

答案: for(i=1;i<=100;i++) ???????

??????if(i%5==0&&i%7==0) s=s+i;

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