二级C语言三Word格式文档下载.docx
- 文档编号:20725524
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:19
- 大小:21.99KB
二级C语言三Word格式文档下载.docx
《二级C语言三Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《二级C语言三Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
{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.有以下程序:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言