二级C语言备考4

发布时间:2024年01月13日

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

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

以下说法正确的是 ().

A:C语言被称为"高级语言"是因为它用接近人们习惯的自然语言和数学语言作为表达形式,使人们学习和操作起来感到十分方便

B:C语言被称为"高级语言"是因为它能接受和处理由0和1的代码构成的二进制指令或数据

C:C语言被称为"高级语言"是因为计算机能直接识别并执行由这种语言编写的程序

D:C语言被称为"高级语言"是因为它既符合人们的习惯易于使用,又能由计算机直接识别并执行由这种语言编写的程序

答案:A

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

以下关于字符串的叙述中正确的是

A:空串比空格打头的字符串小

B:两个字符串中的字符个数相同时才能进行字符串大小的比较

C:可以用关系运算符对字符串的大小进行比较

D:C语言中有字符串类型的常量和变量

答案:A

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

有以下程序

#include <stdio.h>

main()

{

????int a=5,b=1,t;

????t=(a<<2)|b; ?

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

}

程序运行后的输出结果是

A:1

B:11

C:6

D:21

答案:D

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

以下说法正确的是().

A:C语言标识符中字母、数字和下划线字符必须同时出现

B:C语言标识符中仅出现下划线字符是不允许的

C:C语言标识符中可以出现多个字母、数字和下划线字符

D:C语言标识符中字母、数字和下划线字符不能同时出现

答案:C

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

以下选项中不属于C语言字符常量的是().

A:'\xah'

B:'\n'

C:'a'

D:'\007'

答案:A

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

若有定义

????int a;

????float b;

????double c;

程序运行时输入:

????3 ?4 ?5<回车>

能把值3输入给变量a、4输入给变量b、5输入给变量c的语句是

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

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

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

D:scanf("%lf%lf%lf", &a,&b,&c);

答案:A

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

以下说法正确的是().

A:C语言程序运行时可以从键盘上读入用户输入的C源程序并附加到本程序的尾部一并执行

B:C语言程序运行时可以从键盘上读入用户以二进制输入的指令,并执行这些指令

C:C语言程序运行时可以从键盘上读入用户输入的C源程序并逐行执行

D:C语言程序运行时可以从键盘上读入用户输入的字符或数据,并依此改变程序的运行步骤

答案:D

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

设有定义:

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

以下语句中执行效果与其它三个不同的是

A:if(a>b) {c=b,b=a,a=c;}

B:if(a>b) {c=a,a=b,b=c;}

C:if(a>b) c=a;a=b;b=c;

D:if(a>b) {c=a;a=b;b=c;}

答案:C

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

有如下程序

#include ?<stdio.h>

main()

{

????int a, b;

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

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

????????printf(">");

????else

????????printf("<");

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

}

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

A:>a=1,b=2

B:<a=0,b=2

C:<a=1,b=1

D:>a=0,b=1

答案:C

第10题 (1.0分) ???????题号:6815 ???????难度:较难 ???????第4章

有以下程序:

#include ?<stdio.h>

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++;

}

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

}

程序的运行结果是().

A:a=2,b=2

B:a=2,b=1

C:a=1,b=1

D:a=1,b=0

答案:B

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

有以下程序

#include ??<stdio.h>

main( )

{

????if ('\0' == 0) putchar('1');

????if ('0' == 0) ?putchar('2');

????if ('a' > 'b') putchar('3');

}

程序运行后的输出结果是

A:1

B:123

C:23 ?

D:3

答案:A

第12题 (1.0分) ???????题号:6626 ???????难度:较易 ???????第4章

以下程序的功能是判断输入的一个整数是否能被3或7整除,若能整除,输出YES,否则输出NO.在下划线处应填入的选项是

#include <stdio.h>

main()

{ ?int ?k;

???printf("Enter a int number : "); scanf("%d", &k );

???if ?________ ?printf("YES\n");

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

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

}

A:( (k%3==0) || (k%7==0) )

B:(k/3==0) || (k/7==0)

C:( (k%3=0) || (k%7=0) )

D:( (k%3==0)&& (k%7==0) )

答案:A

第13题 (1.0分) ???????题号:5959 ???????难度:较易 ???????第5章

有如下程序

#include ??<stdio.h>

main( )

{

????int ?i, data;

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

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

????{

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

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

????}

}

程序运行时,从键盘输入:3<回车>后,程序输出结果为

A:3,4,5,

B:1,2,3,

C:2,3,4,

D:0,1,2,3,

答案:D

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

对于循环语句:for(i=0;i<=10;i++) { ; } 下面各选项的叙述中错误的是 ().

A:省略i++,可引起无限循环

B:省略i<=10,可引起无限循环

C:省略i=0,可引起无限循环

D:圆括号( )内三个表达式都省略,可引起无限循环

答案:C

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

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

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

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

该程序段的输出结果是

A:*

B:****

C:**

D:********

答案:A

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

有如下程序

#include <stdio.h>

main()

{

????char a = '3', b = 'A';

????int i;

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

????{

????????if (i % 3) putchar(a + i);

????????else putchar(b + i);

????}

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

}

程序运行后的输出结果是

A:A45D78

B:ABC678

C:34CD78

D:34AB78

答案:A

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

以下程序拟实现计算s=1 + 2*2 + 3*3 + … + n*n +…,直到s>1000为止.

#include ??<stdio.h>

main( )

{ ?int ?s,n;

???s=1;

???n=1;

???do

???{ n=n+1; ???s=s+n*n; ?}

???while(s>1000);

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

}

程序运行后,不能得到正确结果,以下修改方案正确的是().

A:把 n=1; 改为 n=0;

B:把 s=1; 改为 s=0;

C:把while(s>1000); ?改为 while(s<=1000);

D:把 n=n+1; 改为 n=n*n;

答案:C

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

有以下程序

#include <stdio.h>

main( )

{ ?int a=0, b=0;

???for(; a<5; a++)

???{ ?if (a%2==0) continue;

??????b += a;

??????break;

???}

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

}

程序运行后的输出结果是

A:1

B:4

C:0

D:10

答案:A

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

设有如下程序段

????int a[2] = {0};

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

????char c[2] = "ABC";

????char d = "ABC";

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

A:只有a, b的定义是合法的

B:a,b,c,d的定义都是合法的

C:只有c,d的定义是合法的

D:只有c的定义是合法的

答案:A

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

有以下程序

#include <stdio.h>

#include <string.h>

main()

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

???int ?i;

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

??????w[i]=a[i][ strlen(a[i]) - 1];

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

???puts(w);

}

程序的运行结果是

A:flqv.

B:agmrw

C:ekpuy

D:flqvz

答案:A

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

有如下程序

#include <stdio.h>

main()

{

????int i, array[5] = {3, 5, 10, 4};

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

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

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

}

程序运行后的输出结果是

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

B:3,5,10,4,0,

C:3,3,3,3,0,

D:3,2,2,2,0,

答案:A

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

以下语句的输出结果是

printf("%d\n", strlen("\t\"\065\xff\n"));

A:5

B:8

C:14

D:输出项不合法,无正常输出

答案:A

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

有以下程序

#include <stdio.h>

main()

{ ?

????char s[]={"012xy"};

????int i,n=0;

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

????????if(s[i]>='a'&&s[i]<='z')

????????????n++;

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

}

程序运行后的输出结果是

A:0

B:2

C:3

D:5

答案:B

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

有以下程序

#include <stdio.h>

main( )

{ ?int i,j = 0;

???char a[] = "How are you!", b[10] = {0};

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

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

??????????b[j++] = a[i-1];

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

}

程序运行后的输出结果是

A:we ?

B:Howareyou!

C:ay ?

D:we!

答案:A

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

有以下程序

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

?????int ?fun()

?????{ ?static ?int ?x=1;

????????x*=2;

????????return ?x;

?????}

?????main()

?????{ ?int ?i, s=1;

????????for( i=1; i<=3; i++ ) ???s*=fun( );

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

?????}

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

A:30

B:10

C:0

D:64

答案:D

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

以下选项中叙述正确的是

A:函数体必须由 { 开始

B:C程序必须由main语句开始

C:C程序中的注释可以嵌套

D:C程序中的注释必须在一行完成

答案:A

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

有如下程序

#include <stdio.h>

void get_put()

{

????char ch;

????ch = getchar();

????if (ch != '\n') get_put();

????putchar(ch);

}

main()

{

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

}

程序运行时,输入1234<回车>,则输出结果是

A:1234

B:4321

C:4444

D:1111

答案:B

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

有以下程序

#include <stdio.h>

int f(int x)

{ ?

????int y;

????if (x == 0 || x== 1) ?return (3);

????y = x*x - f(x-2);

????return ?y;

}

main()

{ ?

????int z;

????z = f(3);

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

}

程序的运行结果是

A:0

B:9

C:6

D:8

答案:C

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

有以下程序

????#include <stdio.h>

????int fun(int x)

????{ ??int y;

????????if(x==0 || x== 1) return 4;

????????y=x-fun(x-2);

????????return y;

????}

????main()

????{ ??printf("%d\n", fun(9));

????}

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

A:5

B:4

C:9

D:8

答案:D

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

以下关于编译预处理的叙述中错误的是

A:预处理命令行必须位于源程序的开始

B:源程序中凡是以#开始的控制行都是预处理命令行

C:一行上只能有一条有效的预处理命令

D:预处理命令是在程序正式编译之前被处理的

答案:A

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

设有定义:char ?p[]={'1', '2', '3'},*q=p; ,以下不能计算出一个char型数据所占字节数的表达式是().

A:sizeof(p)

B:sizeof(char)

C:sizeof(*q)

D:sizeof(p[0])

答案:A

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

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

A:char *s;s="Olympic";

B:char s[7];s="Olympic";

C:char *s;s={"Olympic"};

D:char s[7];s={"Olympic"};

答案:A

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

有以下程序

????#include <stdio.h>

????void main()

????{ ??char ch[7] = {"43ab21"};

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

????????for (i = 0; ch[i] >='0' && ch[i] <= '9'; i += 2)

????????????s = 10 * s + ch[i] - '0';

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

????}

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

A:48

B:12ba34

C:4321

D:4

答案:D

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

有以下程序

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

????int *f(int *s)

????{ ?s+=2;

???????s[1] +=6;

???????*s=7;

???????return s;

????}

???main( )

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

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

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

A:1,2,7,10

B:7,8,7,8

C:1,2,1,2

D:7,10,7,10

答案:A

第35题 (1.0分) ???????题号:7091 ???????难度:较难 ???????第8章

有以下程序

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

?????int ?b=2;

?????int fun(int *k )

?????{ ?b=*k+b; return (b); }

?????main()

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

????????for(i=2;i<4;i++) {b=fun(&a[i])+b; printf("%d ",b);}

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

?????}

程序运行后的输出结果是

A:8 ?10

B:10 ?28

C:10 ?12

D:10 ?16

答案:B

第36题 (1.0分) ???????题号:7292 ???????难度:较难 ???????第8章

有以下程序

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

?????main()

?????{ ?int ?a[ ]={ 2,4,6,8,10 }, x, *p, y=1;

????????p = &a[1];

????????for( x=0; x<3; x++ ) ?y += *(p+x);

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

?????}

程序的输出结果是

A:13

B:19

C:11

D:15

答案:B

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

有以下程序

#include <stdio.h>

#include <string.h>

struct ?A

{

????int a;

????char b[10];

????double c;

};

void f(struct A t);

main()

{

????struct A a={1001,"ZhangDa",1098.0};

????f(a);

????printf("%d,%s,%6.1f\n", a.a,a.b,a.c);

}

void f(struct A t)

{

????t.a=1002;

????strcpy(t.b,"ChangRong");

????t.c=1202.0;

}

程序运行后的输出结果是

A:1002, ZhangDa,1202.0

B:1002,ChangRong,1202.0

C:1001, ChangRong,1098.0

D:1001,ZhangDa,1098.0

答案:D

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

程序中若有以下的说明定义和语句

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

????#include ??<string.h>

????struct ?STR

????{ ?char ?num[10]; ?int ?s; };

????main()

????{ ?struct ?STR ?t, *p;

???????p=&t;

???????┇

????}

则不能给变量t的s成员赋整数99,给num成员赋空串的语句组是( ).

A:(*p).s=99; (*p).num="";

B:p->s=99; ?p->num[0]=0;

C:(*p).s=99; p->num[0]= '\0';

D:p->s=99; ?strcpy((*p).num,

答案:A

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

有下列程序

#include <stdio.h>

#include <string.h>

typedef struct stu {

????char name[9];

????char gender;

????int score;

struct stu *next;

} STU;

void f(STU a)

{ ??STU c = {"Sun", 'f', 90}, d = {"Li", 'm', 100};

????strcpy(a.name, c.name);

a.gender = c.gender;

????a.score = c.score;

????*a.next = d;

}

main( )

{ ?STU a = {"Zhao", 'm', 85}, b = {"Qian", 'f', 95};

???a.next = &b;

???f(a);

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

}

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

A:Sun,f,90,Qian,f,95

B:Zhao,m,85,Qian,f,95

C:Sun,f,90,Li,m,100

D:Zhao,m,85,Li,m,100

答案:D

第40题 (1.0分) ???????题号:6426 ???????难度:中 ???????第10章

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

A:文件由数据序列组成,其类型可以为二进制文件或文本文件

B:文件由记录序列组成,其类型可以为二进制文件或文本文件

C:文件由字符序列组成,其类型可以为二进制文件或文本文件

D:文件由数据序列组成,其类型只能是二进制文件

答案:A

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

第1题 (18.0分) ???????题号:199 ???????难度:易 ???????第7章

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

【程序填空】

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

功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘

??????输入。

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

#include <stdio.h>

main()

{

??char str[80],ch;

??int i,k=0;

??/***********SPACE***********/

??gets(【?】);

??ch=getchar();

??/***********SPACE***********/

??for(i=0;【?】;i++)

????if(str[i]!=ch)

????{

???????/***********SPACE***********/

???????【?】;

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

????}

??/***********SPACE***********/

??【?】;

??puts(str);

?}

答案:

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

str

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

str[i]!='\0'

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

str[i]!=NULL

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

str[i]!=0

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

str[i]

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

str[i] != '\0'

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

str[i] != NULL

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

str[i] != 0

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

str[k]=str[i]

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

*(str+k)=*(str+i)

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

str[k]=*(str+i)

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

*(str+k)=str[i]

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

str[k]='\0'

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

*(str+k)='\0'

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

str[k]=NULL

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

str[k]=0

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

*(str+k)=0

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

*(str+k)=NULL

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

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

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

【程序改错】

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

题目:下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放

??????在a中,中间的数放在b中,最小的数放在c中。

例如:若输入的数为:55 12 34,输出的结果应当是:a=55.0,b=34.0,c=12.0。

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

#include <stdio.h>

void ?fun(float *a,float *b,float *c)

{

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

????????float ??*k;

????????if( *a<*b )

????????{ ??

????????????????k=*a;

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

????????????????*b=k;

????????}

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

????????if( *a>*c )

????????{ ?

????????????????k=*c;

????????????????*c=*a;

????????????????*a=k;

????????}

????????if( *b<*c )

????????{ ??

????????????????k=*b;

????????????????*b=*c;

????????????????*c=k;

????????}

}

main()

{ ?

????????float ??a,b,c;

????????printf("Input ?a ?b ?c: ?");

????????scanf("%f%f%f",&a,&b,&c);

????????printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c);

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

????????printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c);

}

答案:

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

float k;

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

if(*a< *c)

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

if(*c>*a)

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

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

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

【程序设计】

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

题目:函数fun的功能是:将a、b的两个两位正整数合并成一个新的整数放在c中。

??????合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中

??????的十位和个位数依次放在变量c的千位和十位上。

例如:当a=45,b=12,调用该函数后c=1425。

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

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

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

#include <stdio.h>

void fun(int a, int b, long *c)

{

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

????????

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

}

void main() ??/* 主函数 */

{ ?

????????int a,b; long c;

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

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

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

????????printf("The result is: %ld\n", c);

}

答案: ???????*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;

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