二级C语言备考6

发布时间:2024年01月15日

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

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

以下选项中叙述正确的是

A:C程序中的语句要经过编译才能转换成二进制机器指令

B:算法需要包含所有三种基本结构

C:有些算法不能用三种基本结构来表达

D:简单算法的操作步骤不能超过20步

答案:A

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

表示关系式x≤y≤z的C语言表达式的是

A:(x<=y)&&(y<=z)

B:(x<=y)||(y<=x)

C:(x<=y<=z)

D:x<=y)!(y<=x)

答案:A

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

若变量已正确定义,以下选项中非法的表达式是

A:a!=4||'b'

B:'a'=1/2*(x=y=20,x*3)

C:'a' % 4

D:'A' + 32

答案:B

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

以下正确的字符常量是().

A:"AB"

B:'\0AB'

C:'AB'

D:'\xAB'

答案:D

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

有以下程序:

#include ?<stdio.h>

main()

{ int s,t,A=10; double B=6;

??s=sizeof(A); t=sizeof(B);

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

}

在VC6.0平台上编译运行,程序运行后的输出结果是().

A:10,6

B:4,4

C:2,4

D:4,8

答案:D

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

若有定义:

char s[30] = {0};

运行时输入:

This is a string.<回车>

则以下不能正确读入整个字符串:

This is a string.

到字符数组 s 中的语句组是

A:i = 0;while ((c=getchar())!='\n') s[i++] = c;

B:gets(s);

C:for (i=0; (c=getchar()) != '\n'; i++) s[i] = c;

D:scanf("%s", s);

答案:D

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

若有定义:int ?a; float ?b; double ?c; ,程序运行时输入:a=1,b=2,c=3 <回车>,能把

值1输入给变量a、值2输入给变量b、值3输入给变量c的输入语句是

A:scanf("a=%d,b=%f,c=%lf", &a,&b,&c);

B:scanf("%d%f%lf", &a,&b,&c);

C:scanf("a=%d,b=%lf,c=%lf", &a,&b,&c);

D:scanf("a=%d,b=%f,c=%f", &a,&b,&c);

答案:A

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

以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)

A:printf ("%c \n", 'a'-32);

B:printf ("%d \n", 'A');

C:printf ("%c \n", 65);

D:printf ("%c \n", 'B'-1);

答案:B

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

有下列程序 ?

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

????main()

????{ ?

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

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

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

????}

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

A:1,1,1

B:1,0,0

C:0,1,1

D:1,1,0

答案:B

第10题 (1.0分) ???????题号:6556 ???????难度:易 ???????第4章

以下说法正确的是().

A:复合语句中包含的语句种类没有限制

B:复合语句中不能有分支语句

C:复合语句中不能有循环语句

D:一条复合语句不能超过50行

答案:A

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

有以下程序

#include ?<stdio.h>

main( )

{ ?int ?t;

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

???if( t++ < 6 ) printf("%d\n", t);

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

???printf("\n");

}

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

A:6

B:8

C:7

D:5

答案:C

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

以下各选项中的代码段执行后,变量y的值不为1的是().

A:int x=5,y=0; if(5) y=1;

B:int x=5,y=0; if(x) y=1;

C:int x=10,y=0; if(x=y) y=1;

D:int x=5,y=10; if(x=y) y=1;

答案:C

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

有如下程序段

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

?????????if(i>5) ?break;

则循环结束后i的值为

A:10

B:5

C:9

D:6

答案:D

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

有以下程序

????#include <stdio.h>

????main()

????{ ?int ?a = 7;

???????while ( a-- ) ;

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

????}

程序运行后的输出结果是

A:0

B:-1

C:1

D:7

答案:B

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

有如下程序

#include <stdio.h>

main()

{

????char ch = 'M';

????while (ch != 'K')

????{

????????ch --;

????????putchar(ch);

????}

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

}

程序运行后的输出结果是

A:MN

B:LK

C:OP

D:MM

答案:B

第16题 (1.0分) ???????题号:6149 ???????难度:较难 ???????第5章

有下列程序

#include ?<stdio.h>

main( )

{ ?int a=123456, b;

???while(a)

???{ ?b = a%10;

??????a /= 10;

??????switch(b)

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

?????????case 1: continue;

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

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

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

??????}

???}

}

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

A:654342

B:234456

C:1234456

D:6543421

答案:A

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

以下程序段中,与其他三个功能不同的程序段是

A:s=0;i=1;

?for( ; ; ) {s+=i; i++; if(i<=10) break;}

B:s=0,i=1;

?for( ; i<=10; ) {s+=i,i++;}

C:s=0;

?for(i=1;i<=10;i++){s+=i;}

D:for(s=0,i=1; i<=10; s+=i,i++) ;

答案:A

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

有以下程序

#include ??<stdio.h>

main( )

{ ?char ?ch = 'D';

???while (ch > 'A')

???{ ??ch --;

???????putchar(ch);

??????if (ch == 'A') ?break;

??????putchar(ch+1);

???}

}

程序运行后的输出结果是

A:CB

B:BCA

C:CCBB

D:CDBCA

答案:D

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

有以下程序

#include ??<stdio.h>

#include ??<string.h>

main( )

{ char ?a[20]="ab",b[20]="cdef";

??int ?k=0;

??strcat(a,b);

??while(a[k]!='\0') { b[k]=a[k]; k++;}

??puts(b);

}

程序的运行结果是

A:abcdef

B:cbcdef ??

C:cdef ?

D:ab

答案:A

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

有以下程序

#include ??<stdio.h>

main( )

{ ??int ?i, k=0, a[10];

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

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

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

}

程序运行后的输出结果是

A:10

B:16

C:6

D:12

答案:D

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

若有以下程序

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

?????main()

?????{ ?char ?a[20], b[ ]="The sky is blue."; ???int ?i;

????????for (i=0; i<7; i++) ??scanf("%c", &b[i]);

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

?????}

执行时若输入: ?(其中<Enter>表示回车符)

Fig flower is red. <Enter>

则输出结果是

A:wer is red.Fig flo is blue.

B:wer is red.Fig flo

C:wer is red.The sky is blue.

D:Fig flower is red.The sky is blue.

答案:A

第22题 (1.0分) ???????题号:6850 ???????难度:中 ???????第6章

下列定义数组的语句中,正确的是().

A:#define ?N ?10

int ?x[N];

B:int ?N=10;

int ?x[N];

C:int x[0..10];

D:int x[ ];

答案:A

第23题 (1.0分) ???????题号:7120 ???????难度:中 ???????第6章

若有以下程序

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

?????main()

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

????????int ?p[6][2]={{0,1},{1,5},{0,0},{0,2},{1,4},{4,4}}, i;

????????for (i=0; i<6; i++) ?w[i]=a[ p[i][0] ][ p[i][1] ];

????????puts(w);

?????}

则程序的输出结果是

A:catis

B:ababj

C:ckbdl

D:black

答案:D

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

有定义语句:int ?i; ?char ?s1[10], ?s2[10]= "Program"; ?则能正确给s1数组赋字符串的语句是( ).

A:for(i=0; i<=7; i++) s1[i]=s2[i];

B:s1=s2;

C:while(s2) s1++ =s2++;

D:for(i=0; s2[i]; i++ ) s1[i]=s2[i];

答案:A

第25题 (1.0分) ???????题号:7299 ???????难度:较难 ???????第7章

有以下程序

#include <stdio.h>

int ?d=1;

void ?fun( int ?p )

{ ?

????int ?d=5;

????d += p++;

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

}

main()

{ ?

????int ?a=3;

????fun( a );

????d += a++;

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

}

程序的输出结果是

A:8 ?4

B:9 ?6

C:9 ?4

D:8 ?5

答案:A

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

设有如下函数定义:

#include ?<stdio.h>

int ?fun( int ?k )

{ if (k<1) ?return ?0;

else ?if (k==1) ?return ?1;

else ?return ?fun(k-1)+1;

}

若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是().

A:2

B:3

C:4

D:5

答案:B

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

有以下程序

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

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

?????void fun1( int ?a, int ?b )

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

?????void fun2()

?????{ ?a=3; ?b=4; ?}

?????main()

?????{ ?fun1(5,6); ?fun2( ); ?

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

?????}

程序运行后的输出结果是

A:5 6 1 2

B:3 4 5 6

C:1 2 5 6

D:5 6 3 4

答案:D

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

有以下程序

#include ??<stdio.h>

#define ??D(x) ??2*x+3

main( )

{

????int ?i = 1, j = 2;

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

}

程序运行后的输出结果是

A:7

B:6

C:9

D:2

答案:A

第29题 (1.0分) ???????题号:6064 ???????难度:易 ???????第7章

以下与存储类别有关的四组说明符中,全部属于静态类的一组是

A:extern和static

B:auto和static

C:register和static

D:register和extern

答案:A

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

以下叙述中正确的是

A:函数名允许用数字开头

B:函数调用时,不必区分函数名称的大小写

C:调用函数时,函数名必须与被调用的函数名完全一致

D:在函数体中只能出现一次return语句

答案:C

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

对于函数声明 void fun(float ?array[], int *ptr); 以下叙述正确的是().

A:函数fun的参数 array, ptr 都是指针变量

B:函数fun的参数 array 是数组名,ptr 是指针变量,它们有本质区别

C:调用函数fun时,实参数组元素个数可以比形参array数组元素个数多

D:调用函数fun时,传送给形参array的应是数组的所有元素

答案:A

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

有以下程序

#include <stdio.h>

main()

{ ?

????char ?*s="12134";

????int ?k=0, a=0 ;

????while( s[ k +1 ] )

????{ ?

????????k++;

????????if ( k % 2 ==0 )

????????{

?????????????a = a + ( s[ k ] - '0' +1 ) ;

?????????????continue;

????????}

????????a = a + ( s[ k ] - '0' );

????}

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

}

程序运行后的输出结果是

A:k=5 a=15

B:k=4 a=12

C:k=6 a=11

D:k=3 a=14

答案:B

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

设有定义:int a,b[10],*c=NULL,*p;,则以下语句错误的是

A:p=a;

B:p=b;

C:p=c;

D:p=&b[0];

答案:A

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

有下列程序

#include <stdio.h>

void swap(int *a, int *b)

{ ?int *tp,t;

???tp = a; ?a = b; ?b = tp;

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

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

}

main( )

{ ?int i=3, j=7, *p=&i, *q=&j;

???swap(p, q);

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

}

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

A:7,3,3,7

B:7,3,7,3

C:3,7,3,7

D:3,7,7,3

答案:D

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

设有定义:int ?x[10],*p=x,i;,若要为数组x读入数据,以下选项正确的是

A:for(i=0;i<10;i++) ?scanf("%d",p+i);

B:for(i=0;i<10;i++) ?scanf("%d",*p+i);

C:for(i=0;i<10;i++) ?scanf("%d",*(p+i));

D:for(i=0;i<10;i++) ?scanf("%d",x[i]);

答案:A

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

以下叙述中正确的是

A:字符串常量"Hello"会被隐含处理成一个无名字符型数组,它有5个元素

B:不能用字符串常量对字符数组名进行整体赋值操作

C:char str[7] = "string!"; 在语法上是合法的,运行也是安全的

D:char *str; str = "Hello";与char str[]; str = "Hello";效果是一样的

答案:B

第37题 (1.0分) ???????题号:6422 ???????难度:易 ???????第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分) ???????题号:6120 ???????难度:较难 ???????第9章

有以下程序

#include ??<stdio.h>

typedef ?struct ?stu {

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

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

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

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

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

{ ?*b = c =a;

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

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

}

main( )

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

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

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

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

}

程序运行后的输出结果是

A:Zhao,m,290,Zhao,m,290,Zhao,m,290,Sun,m,370

B:Zhao,m,290,Zhao,m,290,Zhao,m,290,Zhao,m,290

C:Zhao,m,290,Zhao,m,290,Qian,f,350,Sun,m,370

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

答案:A

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

有以下程序

#include <stdio.h>

#define ?S(x) ??x/x

main()

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

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

}

程序的运行结果是

A:7,9

B:1,1

C:7,7

D:9,9

答案:A

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

以下关于C语言文件系统的叙述中正确的是().

A:fprintf()与fwrite()函数功能相同

B:文件以"r"方式打开后,可以存储文本类型的数据

C:fscanf()与fread()函数功能相同

D:以"w"或"wb"方式打开的文件,不可以从中读取数据

答案:D

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

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

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

【程序填空】

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

题目:函数fun的功能是:计算如“图片1”的前n项。

??????若x=2.5,函数值为12.182340。

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

#include ???<stdio.h>

double fun(double ?x, int ?n)

{ ?

????????double ?f, t; ??

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

????????f = 1.0;

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

????????t=【?】;

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

????????for(i=【?】;i<n;i++)

????????{

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

????????????????t*=x/【?】;

????????????????f += t;

????????}

????????return ?f;

}

main()

{ ?

????????double ?x, y;

????????x=2.5;

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

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

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

}

答案:

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

1.0

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

1

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

i

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

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

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

【程序改错】

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

题目:下列给定程序中函数fun和funx的功能是:用二分法求方程 的一个根,并要求

??????绝对误差不超过0.001。

例如:若给m输入-100,n输入90,则函数求得的一个根为2.000。

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

#include <stdio.h>

#include <math.h>

double funx(double ?x)

{ ??

????????return(2*x*x*x-4*x*x+3*x-6); ?

}

double fun( double ?m, double ?n)

{

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

????????int ?r;

????????r=(m+n)/2;

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

????????while(fabs(n-m)<0.001)

????????{ ??

????????????????if(funx(r)*funx(n)<0)

????????????????????????m=r;

????????????????else

????????????????????????n=r;

????????????????r=(m+n)/2;

????????}

????????return ?r;

}

main( )

{ ?

????????double ?m,n, root;

????????printf("Enter ?m ?n : ?\n");

????????scanf("%lf%lf",&m,&n);

????????root=fun( m,n );

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

}

答案:

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

double r ;

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

while (fabs(n-m) >0.001)

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

while (fabs(n-m) >=0.001)

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

while (0.001<fabs(n-m))

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

while (0.001<=fabs(n-m))

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

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

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

【程序设计】

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

题目:请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。

??????数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如:若一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10删除后,数

??????组中的内容应该是: 2 3 4 5 6 7 8 9 10。

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

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

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

#include <stdio.h>

#define N 80

int fun(int a[], int n)

{

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

?????????????????????????????????????????????????????????????????????

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

}

void main()

{

????????

????????int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i, n=20;

????????printf("The original data :\n");

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

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

????????n=fun(a,n);

????????printf("\n\nThe data after deleted :\n");

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

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

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

}

答案: int i,j=1;

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

if(a[j-1]!=a[i]) ???????????????????????????????????????????

a[j++]=a[i];

return j;

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