二级C语言三Word格式文档下载.docx

上传人:b****5 文档编号:20725524 上传时间:2023-01-25 格式:DOCX 页数:19 大小:21.99KB
下载 相关 举报
二级C语言三Word格式文档下载.docx_第1页
第1页 / 共19页
二级C语言三Word格式文档下载.docx_第2页
第2页 / 共19页
二级C语言三Word格式文档下载.docx_第3页
第3页 / 共19页
二级C语言三Word格式文档下载.docx_第4页
第4页 / 共19页
二级C语言三Word格式文档下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

二级C语言三Word格式文档下载.docx

《二级C语言三Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《二级C语言三Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。

二级C语言三Word格式文档下载.docx

{b=f(a);

putchar(b);

则程序的输出结果是______。

∙A.abej

∙B.ABEJ

∙C.abcd

∙D.ABCD

4.以下叙述中正确的是______。

∙A.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

∙B.一条语句只能定义一个数组

∙C.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元

∙D.在引用数组元素时,下标表达式可以使用浮点数

C. 

5.以下叙述中正确的是______。

∙A.charc1,c2,*c3,c4[40];

是合法的变量定义语句

∙B.数组下标的下限由数组中第一个非零元素的位置决定

∙C.数组下标的下限由数组中第一个被赋值元素的位置决定

∙D.数组下标的下限是1

6.以下叙述中正确的是______。

∙A.语句chara[2]={"

A"

"

B"

};

是合法的,定义了一个包含两个字符的数组

∙B.语句inta[]={0};

是不合法的,遗漏了数组的大小

∙C.语句inta[8]={0};

是合法的

∙D.语句chara[3];

a="

AB"

是合法的,因为数组有三个字符空间的容量,可以保存两个字符

7.以下叙述中正确的是______。

∙A.语句inta[][3]={1,2,4,5};

是错误的初始化形式

∙B.语句inta[4][3]={1,2,4,5};

∙C.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵

∙D.语句inta[4][3]={{1,2},{4,5}};

是错误的初始化形式

8.设有定义:

intx[2][3];

则以下关于二维数组x的叙述错误的是______。

∙A.可以用x[0]=0;

的形式为数组所有元素赋初值0

∙B.数组x可以看作是由x[0]和x[1]两个元素组成的一维数组

∙C.元素x[0]可看作是由3个整型元素组成的一维数组

∙D.x[0]和x[1]是数组名,分别代表一个地址常量

9.以下数组定义中错误的是______。

∙A.intx[2][3]={1,2,3,4,5,6};

∙B.intx[][3]={0};

∙C.intx[][3]={{1,2,3},{4,5,6}};

∙D.intx[2][3]={{1,2},{3,4},{5,6}};

10.有以下程序

#includc<stdio.h>

{intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;

for(i=0;

i<3;

i++)

for(j=i;

j<=i;

j++)t+=b[i][b[j][i]];

printf("

%d/n"

t);

程序运行后的输出结果是______。

∙A.4

∙B.3

∙C.1

∙D.9

11.有以下程序

#include?

<stdio.h>

{inti,t[][3]={9,8,7,6,5,4,3,2,1};

i++)?

?

%d?

"

t[2-i][i]);

程序执行后的输出结果是______。

∙A.369

∙B.753

∙C.357

∙D.751

12.以下叙述中正确的是______。

∙A.语句p=NULL;

执行后,指针p指向地址为0的存储单元

∙B.指针变量只能通过求地址运算符(&

)来获得地址值

∙C.语句p=NULL;

与p=/0;

是等价的语句

∙D.int*p1;

int**p2;

int*p3;

都是合法的定义指针变量的语句

13.以下叙述中正确的是______。

∙A.如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息

∙B.即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同

∙C.设变量p是一个指针变量,则语句p=0;

是非法的,应该使用p=NULL;

∙D.指针变量之间不能用关系运算符进行比较

14.设p是指针变量,语句p=NULL;

等价于______。

∙A.p='

0'

∙B.p="

∙C.p="

∙D.p=0;

15.设有定义:

intx=0,*p;

紧接着的赋值语句正确的是______。

∙A.*p=x;

∙B.*p=NULL;

∙C.p=x;

∙D.p=NULL;

16.若有定义语句:

doublea,*p=&

a;

以下叙述中错误的是______。

∙A.定义语句中的p只能存放double类型变量的地址

∙B.定义语句中的*号是一个说明符

∙C.定义语句中的*号是一个间址运算符

∙D.定义语句中*p=&

a把变量a的地址作为初值赋给指针变量p

17.有以下程序

{intm=1,n=2,*p=&

m,*q=&

n,*r;

r=p;

p=q;

q=r;

%d,%d,%d,%d/n"

m,n,*p,*q);

∙A.1,2,1,2

∙B.1,2,2,1

∙C.2,1,2,1

∙D.2,1,1,2

B. 

18.设有定义语句

int(*f)(int);

则以下叙述正确的是______。

∙A.f是函数名,该函数的返回值是基类型为int类型的地址

∙B.f是基类型为int的指针变量

∙C.f是指向int类型一维数组的指针变量

∙D.f是指向函数的指针变量,该函数具有一个int类型的形参

19.有以下程序

{int*p,x=100;

p=&

x;

x=*p+10;

x);

∙A.110

∙B.120

∙C.100

∙D.90

20.有以下程序

int*f(int*s,int*t)

{if(*s<*t)

s=t;

return?

s;

{inti=3,j=5,*p=&

i,*q=&

j,*r;

r=f(p,q);

%d,%d,%d,%d,%d/n"

i,j,*p,*q,*r);

程序的运行结果是______。

∙A.3,5,3,5,5

∙B.3,5,5,5,5

∙C.5,3,3,3,5

∙D.5,5,5,5,5

21.若要使用C数学库中的sin函数,需要在源程序的头部加上

#include<math.h>

关于引用数学库,以下叙述正确的是______。

∙A.将数学库中sin函数的源程序插入到引用处,以便进行编译链接

∙B.将数学库中sin函数链接到编译生成的可执行文件中,以便能正确运行

∙C.通过引用math.h文件,说明sin函数的参数个数和类型,以及函数返回值类型

∙D.实际上,不引用math.h文件也能正确调用sin函数

22.以下叙述中正确的是______。

∙A.在C语言中,预处理命令行都以”#”开头

∙B.预处理命令行必须位于C源程序的起始位置

∙C.#include<stdio.h>必须放在C程序的开头

∙D.C语言的预处理不能实现宏定义和条件编译的功能

23.有以下程序

#defineS(x)4*(x)*x+1

{intk=5,j=2;

S(k+j));

∙A.143

∙B.197

∙C.33

∙D.28

24.以下叙述中错误的是______。

∙A.C程序对预处理命令行的处理是在程序执行的过程中进行的

∙B.预处理命令行的最后不能以分号表示结束

∙C.#defineMAX是合法的宏定义命令行

∙D.在程序中凡是以”#”开始的语句行都是预处理命令行

25.若程序中有宏定义行:

#defineN100

则以下叙述中正确的是______。

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

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

∙C.上述宏定义行实现将100赋给标识符N

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

26.若有以下程序

#defineS(x)x*x

#defineT(x)S(x)*S(x)

%d,%d/n"

S(k+j),T(k+j));

∙A.49,289

∙B.49,2401

∙C.17,289

∙D.17,37

27.有以下程序

S(k+j+2),S(j+k+2));

∙A.18,18

∙B.81,81

∙C.21,21

∙D.21,18

28.以下选项中的编译预处理命令行,正确的是______。

∙A.#DEFINETRUE

∙B.##defineeps0.001

∙C.#definePI3.14

∙D.#defineintINT

29.有以下程序

#defineFNA(x)x*x

#defineFNB(x)x+x

{inta=2,b=4;

FNA(FNB(a)),FNB(FNA(b)));

∙A.16,32

∙B.8,32

∙C.8,16

∙D.16,16

30.有以下程序

typedefstruct{intb,p;

}A;

voidf(Ac)/*注意:

c是结构变量名*/

{intj;

c.b+=1;

c.p+=2;

{inti;

Aa={1,2};

f(a);

a.b,a.p);

∙A.2,4

∙B.1,2

∙C.1,4

∙D.2,3

31.有以下程序

structS

{inta,b;

}?

data[2]={10,100,20,200};

{structSp=data[1];

++(p.a));

∙A.21

∙B.11

∙C.20

∙D.10

32.以下叙述中正确的是______。

∙A.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

∙B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

∙C.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

∙D.C语言中的文件是流式文件,因此只能顺序存取数据

33.有以下程序

{FILE*fp;

inta[10]={1,2,3},i,n;

fp=fopen("

d1.dat"

w"

);

i++)fprintf(fp,"

%d"

a[i]);

fprintf(fp,"

/n"

fclose(fp);

r"

fscanf(fp,"

&

n);

n);

∙A.12300

∙B.123

∙D.321

34.设文件指针fp已定义,执行语句fp=fopen("

file"

后,以下针对文本文件file操作叙述的选项中正确的是______。

∙A.只能写不能读

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

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

∙D.可以随意读和写

二、{{B}}填空题{{/B}}(总题数:

13,分数:

32.00)

35.以下程序的功能是:

将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。

请填空。

#include<stdio.h>main(){intx=256;

printf("

%d-%d-%d/n"

______,x/10%10,x/100);

}

填空项1:

__________________ 

(正确答案:

x%10)

[解析]x=256,x%10=6,是取个位上的值。

36.若有语句doublex=17;

inty;

当执行y=(int)(x/5)%2;

之后y的值为1。

1)

[解析]y=(int)(x/5)%2=(int)(3.4)%2=3%2=1。

37.若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(1,x/y);

补充完整,使其输出的计算结果形式为:

x/y=11。

x/y=%d"

[解析]printf语句中,除了格式转换说明外,字符串中的其他字符(包括空格)将按原样输出。

38.在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为1时表示逻辑值“真”。

非0)

[解析]本题一定要明确一个概念,即所有非0的数(并不只是“1”),在C语言中都表示逻辑值为“真”。

39.以下程序运行后的输出结果是______。

#include<stdio.h>main(){intx=10,y=20,t=0;

if(x==y)t=x;

x=y;

y=t;

%d%d"

x,y);

200)

[解析]在程序中if(x==y)t=x;

是三条独立的语句,因为x,y的值不相等,所以if语句不执行,而执行x=y;

这两条赋值语句,所以变量x的值等于20,y的值等于0。

40.以下程序的功能是:

输出a、b、c三个变量中的最小值。

#include<stdio.h>main(){inta,b,c,t1,t2;

scanf("

%d%d%d"

a,&

b,&

c);

t1=a<b?

______;

t2=c<t1?

t2);

a:

bc:

t1)

[解析]本题考查的是条件表达式问题。

先判断a是否小于b,若小于则t1=a,否则t1=b,这样t1就是a和b中较小的值,同理再比较t1同c的大小,小的存入t2中,t2就是a、b、c中的最小值。

41.以下程序的输出结果是______。

#include<stdio.h>voidfun(intx)if(x/2>0)fun(x/2);

}main(){fun(3);

13)

[解析]依次执行fun(6),fun(3),fun

(1),当执行fun(6)时要调用fun(3),执行fun(3)时要调用fun

(1),所以输出的结果为13。

42.有以下程序:

#include<stdio.h>#include<string.h>voidfun(char*str)chartemp;

intn,i;

n=strlen(str);

temp=str[n-1];

for(i=n-1;

i>0;

i--)str[i]=str[i-1];

str[0]=temp;

}main(){chars[50];

%s"

s);

fun(s);

%s/n"

}程序运行后输入abcdef<回车>,则输出结果是______。

3.00)

fabcde)

[解析]在函数fun中,先求出字符串str的长度,并将最后一个字符暂存到temp中,然后使用循环语句将所有字符向右移动一个位置,最后将temp中的字符放到字符串的第1个位置,所以结果为fabcde。

43.以下fun函数的功能是在N行M列的整型二维数组中,选出一个最大值作为函数值返回,请填空。

(设M,N已定义)intfun(inta[N][M]){inti,j,row=0,col=0;

for(i=0;

i<N;

i++)for(j=0;

j<M;

j++)if(a[i][j]>a[row][col]){row=i;

col=j;

}return(______);

a[row][col])

[解析]通过程序可以看出,外循环是行,内循环是列。

先在行不变的情况下找一行内最大的数据进行记录。

通过语句if(a[i][j]>a[row][col]){row=i;

}可知,如果变量a[i][j]大于a[row][col],将i赋给row,将j赋给col,所以a[row][col]是记录当前最大值的变量。

44.以下程序用以删除字符串中所有的空格,请填空。

#include<stdio.h>main(){chars[100]={"

ourteacherteachclanguage!

inti,j;

for(i=j=0;

s[i]!

='

/0'

i++)if(s[i]!

'

){s[j]=s[i];

j++;

}s[j]=______;

或0)

[解析]程序使用变量i遍历字符数组s中的所有字符,使用变量j存放非空格字符。

当将所有的非空格字符重新存放到字符数组s中后,应添加字符串结束标志'

45.有以下程序:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1