二级C语言备考3

发布时间:2024年01月12日

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

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

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

A:.OBJ文件和.EXE文件都是可直接执行的二进制文件

B:用户按规定语法编写的C程序不是二进制文件

C:C源程序经编译无误后将生成一个 .OBJ的二进制文件

D:.OBJ文件经"连接程序"生成的.EXE文件是二进制文件

答案:A

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

有以下程序

#include <stdio.h>

main()

{ ?int ?c,d;

???c= 13&5; ?d=10&&5;

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

}

程序的运行结果是

A:5,1

B:1,1

C:18,1

D:13,1

答案:A

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

以下选项中,当x为大于1的奇数时,值为0的表达式是

A:x/2

B:x%2==0

C:x%2!=0

D:x%2==1

答案:B

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

以下选项中,合法的实数是

A:1.5E2

B:E1.1 ??

C:2.10E ?

D:1.9E1.4

答案:A

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

有以下程序

#include <stdio.h>

main()

{ ?char ?c='A';

???int ??x=36, b;

???b= (x>>2) && ( c<'a' );

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

}

程序运行后的输出结果是

A:1

B:0

C:2

D:4

答案:A

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

若有程序段

?????char c;

?????double d;

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

如果想把2.3输入给变量d,字符'f'输入给变量c,程序运行时正确的输入是().

A:2.3 f

B:2.3f

C:2.3'f'

D:2.3 'f'

答案:B

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

以下不能输出小写字母a的选项是

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

B:printf("%c\n",'A'+32);

C:putchar(97);

D:putchar('a');

答案:A

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

若有定义和语句:

????int a, b;

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

以下选项中的输入数据,不能把值3赋给变量a、5赋给变量b的是

A:3,5,4

B:3,5

C:3,5,

D:3 ?,5

答案:D

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

if语句的基本形式是:if (表达式) 语句,以下关于"表达式"值的叙述中正确的是

A:必须是逻辑值

B:必须是整数值

C:必须是正数

D:可以是任意合法的数值

答案:D

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

有以下程序:

#include ?<stdio.h>

main()

{ ?char ?a,b,c,d;

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

???c=getchar(); ???d=getchar();

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

}

当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是一个字符)

12<CR>

34<CR>

则输出结果是().

A:12

34

B:12

C:1234

D:12

3

答案:D

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

有以下程序

????#include <stdio.h>

????main()

????{ ?int ?x=1, y=0;

???????if (!x) ?y++;

???????else if (x==0)

?????????????if (x) ?y+=2;

?????????????else ??y+=3;

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

????}

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

A:1

B:2

C:0

D:3

答案:C

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

有以下程序

#include ??<stdio.h>

main( )

{

????int ?x = 0x13;

????if (x = 0x12) ??printf("True");

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

}

程序运行后的输出结果是

A:True

B:TrueFalse

C:False

D:TrueFalseTrue

答案:B

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

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

????#include <stdio.h >

????main()

???{

????char i,j,n;

????for(i='1';i<='9';i++)

????{

????????if(i<'3') continue;

????????for(j='0';j<='9';j++)

????????{

????????????if(j<'2'||j >='4') continue;

????????????n=(i-'0')*10+j-'0';

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

????????}

????????if(i=='4') break;

????}

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

???}

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

A:32 33 42 43

B:30 31 40 41

C:34 35 44 45

D:35 36 45 46

答案:A

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

有如下程序

#include <stdio.h>

main()

{

????int i, data;

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

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

????{

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

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

????}

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

}

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

A:3,4,

B:0,1,

C:3,4,5,

D:0,1,2,3

答案:D

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

有以下程序段:

#include ?<stdio.h>

int ?i, n;

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

{n = rand() % 5;

switch (n)

{case 1:

case 3: ?printf("%d \n", n); ?break;

case 2:

case 4: ?printf("%d \n", n); ?continue;

case 0: ?exit(0);

}

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

}

以下关于程序段执行情况的叙述,正确的是().

A:for循环语句固定执行8次

B:当产生的随机数n为4时结束循环操作

C:当产生的随机数n为1和2时不做任何操作

D:当产生的随机数n为0时结束程序运行

答案:D

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

若变量已正确定义,则以下for循环

??????for ( x=0,y=0; ( y!=123 ) && ( x<4 ); x++ );

A:执行4次

B:执行3次

C:执行次数不确定

D:执行123次

答案:A

第17题 (1.0分) ???????题号:5989 ???????难度:中 ???????第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分) ???????题号:6268 ???????难度:中 ???????第5章

有下列程序

#include ?<stdio.h>

main( )

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

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

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

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

}

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

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

B:0,1,1,0

C:0,1,1,1

D:0,1,1,1,1,1

答案:C

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

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

A:char c1, c2, *c3[4]; 是合法的定义语句

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

C:数组下标可以使用实数

D:若有数组定义 float array[1]; 则语句 printf("%f", array[0.1]);是合法的

答案:A

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

若有定义: char c="hello!";,则以下说法正确的是().

A:c占用7字节内存

B:c是一个字符串变量

C:定义中有语法错误

D:c的有效字符个数是6

答案:C

第21题 (1.0分) ???????题号:6362 ???????难度:易 ???????第6章

有以下程序

#include ?<stdio.h>

#include ?<string.h>

main()

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

????strcat( ss, "6789" );

????gets( ss );

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

}

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

A:123456ABC

B:ABC9

C:ABC

D:ABC456789

答案:C

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

下列选项中,能正确定义数组的语句是

A:int num[0...2008];

B:int num[];

C:int N=2008;

int num[N];

D:#define N 2008

int num[N];

答案:D

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

若有以下程序

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

?????main()

?????{ ?char ?w[20]="dogs", ?

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

????????int ?i, j, k;

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

????????{ ?for (j=0; j<5; j++)

???????????{ ?for (k=0; a[j][k]; k++)

????????????????if (w[i]==a[j][k]) ???break;

????????????????if (w[i]==a[j][k]) ???break;

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

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

????????}

?????}

则程序的输出结果是

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

B:1,4,3,3,2,1,4,2,

C:5,6,5,6,5,6,5,6,

D:6,7,6,7,6,7,6,7,

答案:A

第24题 (1.0分) ???????题号:7357 ???????难度:难 ???????第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])/2];

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

???puts(w);

}

程序的运行结果是

A:djoty

B:agmrw

C:flqv

D:cimsx

答案:A

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

有以下程序

????#include <stdio.h>

????#define FNA(x) ?x*x

????#define FNB(x) ?x+x

????main()

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

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

????}

程序运行后的输出结果是

A:8,16

B:16,32

C:8,32

D:16,16

答案:C

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

若有以下程序

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

?????void f(int ?x)

?????{ ?if (x >= 10)

????????{ ?printf("%d-", x%10); ????f(x/10); ??}

????????else

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

?????}

?????main()

?????{ ??int ?z = 123456;

?????????f(z);

?????}

则程序的输出结果是

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

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

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

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

答案:B

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

若程序中有宏定义行:

????#define ?N ??100

则以下叙述中正确的是

A:宏定义行中定义了标识符N的值为整数100

B:在编译程序对C源程序进行预处理时用100替换标识符N

C:上述宏定义行实现将100赋给标示符N

D:在运行时用100替换标识符N

答案:B

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

有以下程序

????#include <stdio.h>

????int f(int x);

????main()

????{

??????int n=1,m;

??????m=f(f(f(n)));

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

????}

????int f(int x)

????{ return x*2; }

程序运行后的输出结果是

A:4

B:2

C:8

D:1

答案:C

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

有如下程序

#include <stdio.h>

void get_put()

{

????char ch;

????ch = getchar();

????putchar(ch);

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

????putchar('.');

}

main()

{

????get_put();

}

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

A:1234

.....

B:4321.....

C:4444

.....

D:1234.....

答案:A

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

以下关于函数参数的叙述中,错误的是().

A:实参应与其对应的形参类型一致

B:形参可以是常量、变量或表达式

C:实参可以是常量、变量或表达式

D:形参可以是任意合法数据类型

答案:B

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

若有定义:

char *ps[ ] = {"aa", "bb", "cc", "dd"};,

则以下叙述正确的是

A:*ps[0]是字符'a'

B:*ps[0]是字符串"aa"

C:ps[0]是字符'a' ?

D:ps是字符串"aa"

答案:A

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

有以下程序

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

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

??????#include <stdlib.h>

??????main()

??????{ ??char *p1,*p2;

??????????p1=p2=(char *)malloc(sizeof(char)*10);

??????????strcpy(p1,"malloc");

??????????strcpy(p2,p1+1);

??????????printf("%c%c\n",p1[0],p2[0]);

??????}

程序的运行结果是

A:aa

B:ma

C:am

D:mm

答案:A

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

有以下程序

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

?????main()

?????{ ?int ?a[5]={2,4,6,8,10}, ?*p,**k;

????????p = a; ???k = &p;

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

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

?????}

程序运行后的输出结果是

A:4 ?6

B:4 ?4

C:2 ?2

D:2 ?4

答案:D

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

有以下程序

????#include <stdio.h>

????void fun(char *c,int d)

????{ *c=*c+1;

??????d=d+1;

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

????}

????main()

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

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

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

????}

程序运行后的输出结果是

A:b,B,b,A

B:b,B,B,A

C:a,B,B,a

D:a,B,a,B

答案:A

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

有下列程序

#include <stdio.h >

#include <string.h >

main( )

{ ?char v[4][10]={"efg","abcd","mnopq","hijkl"},*p[4],*t; ??

???int i,j;

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

?????p[i] = v[i];

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

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

???????if (strcmp(p[i], p[j]) ?> 0)

???????{ ?t = p[i]; p[i] = p[j]; p[j] = t; ?}

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

??????printf("%s " , p[i]); ?

}

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

A:efg abcd hijkl mnopq

B:abcd efg hijkl mnopq

C:mnopq hijkl efg abcd

D:efg abcd mnopq hijkl

答案:B

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

以下涉及字符串数组、字符指针的程序段,没有编译错误的是

A:char* str, name[5];

?????str = "C/C++";

B:char* str, name[6];

?????name = "Hello";

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

?????str2 = str1;

D:char line[];

?????line = "//";

答案:A

第37题 (1.0分) ???????题号:6008 ???????难度:易 ???????第9章

有如下定义:

struct

{ ?int ?num;

???char ?name[10];

???struct ?

??????{ int ?y; int ?m; int ?d;} birth;

} s,*ps=&s;

以下对内嵌结构体成员的引用形式错误的是

A:ps.birth.y

B:s.birth.y ???

C:ps->birth.y ?

D:(*ps).birth.y

答案:A

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

有如下程序

#include <stdio.h>

#include <string.h>

struct S

{

????char name[10];

};

main()

{

????struct S s1, s2;

????strcpy(s1.name, "12345");

????strcpy(s2.name, "ABC");

????s1 = s2;

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

}

程序运行后的输出结果是

A:ABC12

B:ABC45

C:12345

D:ABC

答案:D

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

有如下定义

struct st

{ char ?name[12]; int age; char sex; ?} std[10],*p=std;

以下语句错误的是

A:scanf("%d",p->age);

B:scanf("%s",std[0].name);

C:scanf("%d",&std[1].age) ?

D:scanf("%c",&(p->sex));

答案:A

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

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

A:文件指针是一种特殊的指针类型变量

B:文件指针的值等于文件当前读写位置,以字节为单位

C:文件指针的值等于文件在计算机硬盘中的存储位置

D:调用fscanf函数只能向文本文件中写入任意字符

答案:A

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

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

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

【程序填空】

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

题目:程序通过定义学生结构体数组,存储若干名学生的学号、姓名和三门课的成绩。函数

??????fun的功能是:将存放学生数据的结构体数组,按姓名的字典序(从小到大)排序。

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

#include ?<stdio.h>

#include ?<string.h>

struct student

{

????????long ?sno;

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

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

};

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

{

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

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

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

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

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

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

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

????????????????if (strcmp(【?】) > 0)

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

????????????????????????t = a[i]; ?

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

????????????????????????a[j] = t; ?

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

}

main()

{

????????struct student ?s[4]={{10001,"ZhangSan", 95, 80, 88},{10002,"LiSi", 85, 70, 78},

????????????????????{10003,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87}};

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

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

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

????????{

????????????????printf("\nNo: %ld ?Name: %-8s ?????Scores: ?",s[j].sno, s[j].name);

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

????????????????????????printf("%6.2f ", s[j].score[i]);

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

????????}

????????fun(s, 4);

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

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

????????{ ?

????????????????printf("\nNo: %ld ?Name: %-8s ?????Scores: ?",s[j].sno, s[j].name);

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

????????????????????????printf("%6.2f ", s[j].score[i]);

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

????????}

}

答案:

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

struct student

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

n - 1

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

a[i].name,a[j].name

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

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

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

【程序改错】

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

题目:下列给定程序中函数fun的功能是:将一个由八进制数字字符组成的字符串转

??????换成十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。

例如:若输入77777,则输出32767。

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

#include <stdio.h>

#include<string.h>

#include<stdlib.h>

int ?fun( char *p )

{ ?

????????int ??n;

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

????????n= *p-'o';

????????p++;

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

????????{

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

????????????????n=n*8+*p-'o';

????????????????p++;

????????}

????????return ?n;

}

main()

{ ??

????????char ??s[6]; ????int ?i; ??int ??n;

????????printf("Enter a string (Ocatal digits): ?");

????????gets(s);

????????if(strlen(s)>5)

????????{

????????????????printf("Error: String too longer !\n\n");

????????????????exit(0);

????????}

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

????????????????if(s[i]<'0'||s[i]>'7')

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

????????????????????????printf("Error: %c not is ocatal digits!\n\n",s[i]);

????????????????????????exit(0);

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

????????printf("The original string: ?");

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

????????n=fun(s);

????????printf("\n%s is convered to integer number: %d\n\n",s,n);

}

答案:

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

n= *p-'0';

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

n=n*8+*p-'0';

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

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

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

【程序设计】

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

题目:编写函数fun,其功能是:计算n门课程的平均分,结果作为函数值返回。

例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。

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

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

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

#include <stdio.h>

float ?fun ( float ?*a , ?int ?n )

{

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

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

}

main()

{

????????float score[30]={90.5, 72, 80, 61.5, 55}, aver;

????????aver = fun( score, 5 );

????????printf( "\nAverage score ?is: %5.2f\n", aver);

}

答案: int i;

float av=0.0;

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

av=av+a[i];

return(av/n);

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