C语言历年考题真题解析Word文档下载推荐.docx
- 文档编号:22558567
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:141
- 大小:123.30KB
C语言历年考题真题解析Word文档下载推荐.docx
《C语言历年考题真题解析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言历年考题真题解析Word文档下载推荐.docx(141页珍藏版)》请在冰豆网上搜索。
2.在以下各组标识符中,均能够用作变量名的一组是_____。
(2007年秋选择题第22题)
,Int,a*.1,W12,point
【解析】选项A中两个都符合标识符的命令规那么,Int与关键字int是不同的标识符,选项B的第2个标识符中有*号,不符合标识符命名规那么,选项C数字开头,不许诺,选项D中的for是关键字,不能做变量名。
【答案】A
3.以下概念和声明中,语法均有错误的选项是___________。
(2020年春选择题第21题)
①int_f(intx){}②intf(intf){}③int2x=1;
④structfor{intx;
};
A.②③B.③④C.①④D.①②③④
【解析】此题考的是标识符的命名规那么。
③概念的整型变量名数字开头,不符合命名规那么。
④中概念的结构体类型名for属于关键字,不能作为结构体类型名。
②中利用的函数名和形式参数名相同,在语法上能够,但在实际编程时不提倡利用。
【答案】B
4.在C语言系统中,假设是一个变量能正确存储的数据范围为整数-32768~32767,那么该变量在内存中占________个字节。
(2020年春填空题第3题)
【解析】表示范围为整数-32768~32767的属于int型或short型的变量,它们在内存占2个字节。
【答案】2
5.如有声明“intx;
”且sizeof(x)的值为2,那么当x值为___________时“x+1>
x”为假。
(2020年春填空题第2题)
【解析】x为int型,其表示范围为-32768~+32767,当x为32767时,再加1就变成了-32768了,此刻,确实是x+1>
x”为假的情形。
这是由int型数据在内存中的存储情形决定的。
int型数据在内存中占2个字节,以补码的形式寄放,32767的补码为01111111,加1以后就变成了00000000,为-32768的补码,这种情形为溢出,数处于边界时会溢出。
sizeof(x)是求字节数运算符。
【答案】32767
6.已知sizeof(int)的值为2,为将10!
的值存储到变量f中(10!
=3628800),变量f的类型应声明为___________。
(2020年秋选择题第23题)
A.longintB.intC.shortintint
【解析】10!
=3628800,超过了int的范围-32768~+32767,而长整型在内存占4个字节,表示范围大到-8~47,应该要用长整型才能够寄放3628800。
7.以下常量表示中正确的选项是__________。
(2020年春选择题第22题)
A.\xff【解析】选项A假假想表示成十六进制常量,正确的表示应该是0xff,假设是表示成转义字符,应该放在单引号内:
'
\0xff'
。
选项B表示的是长整型常量,选项C是一个标识符,不能表示常量,选项D表示的是无符号整数,但无符号整数不该该有小数。
8.以下表示中不能用作C语言常量表示的是____。
(2007年春选择题第22题)
B.(long)123D.'
\x2a'
【解析】0UL意为将0以无符号长整型寄放,B为强制类型转换,是表达式,表示长整型常量应该在123后加字母l或L。
C是实常量,指数表示法,意为1乘以10的0次方,e前面必需有数字,后面的数字必需是整数。
D是转义字符,表示十六进制数2a。
9.在C语言源程序中,不带任何修饰的浮点数直接量(例如:
)都是按_________类型数据存储的。
(2020年春填空题第1题)
【解析】实型常量的类型默以为double类型,在内存中占8个字节。
带f修饰即或,那么以为它是float型,在内存中占4个字节。
【答案】double
10.已知有声明“charch='
g'
;
”,那么表达式ch=ch-'
a'
+'
A'
的值为字符__________的编码。
【解析】此题的功能是将小写字母转换成大写字母。
-'
事实上确实是减去32,关于一个小写字母来讲,减去32就变成对应的大写字母。
【答案】G
11.如有程序段“charc=256;
inta=c;
”,那么执行该程序段后a的值是______。
(2007年秋选择题第24题)
【解析】将256转换成二进制,为100000000,占9位,而char在内存只占一个字节,即8位,截取低8位赋给字符变量c,得c=0,将c的值赋给a,结果为0。
运算符和表达式
1.已知有声明“inta=3,b=4,c;
”,那么执行语句“c=1/2*(a+b);
”后,c的值为_______。
(2020年春选择题第23题)
【解析】此题考查的是两整数相除,结果为整数,截取的是整数部份,不是四舍五入。
1/2等于0,0乘于任何一个整数结果仍是0,最后结果为0。
2.已知有声明“longx,y;
”且x中整数的十进制表示有n位数字(4<
n<
10),假设要求去掉整数x十进制表示中的最高位,用剩下的数字组成一个新的整数并保留到y中,那么以下表达式中能正确实现这一功能的是________。
(2020年秋选择题第25题)
=x/(10*(n-1))=x%(10*(n-1))
=x%(long)pow(10,n-1)=x%(10∧(n-1))
【解析】本类型的题目,拿一个具体的数,放到四个选项中去计算,就能够够取得正确答案。
假设x为1234,代入A中,为1234/(10*3),确信不是234,代入B中,为1234%(10*3)也不对,代入C中为1234%(long)103,结果为234,正确,选C。
而D中的“∧”在C语言中是指位运算中的“异或”运算,不是求指数。
3.如有声明“floaty=;
intx;
”,那么计算表达式“x=y*100+,y=x/”后y的值是___________。
(2020年春填空题第3题)
【解析】x=y*100+=*100+=315,因为x为int,截取整数部份赋给x。
然后计算y=x/=315/100=,y是浮点数。
【答案】
4.如有声明“inta=32767,b;
”,那么在TurboC系统中执行语句“printf("
%d"
b=++a);
”后输出结果是_________。
(2006年秋填空题第3题)
【解析】此题有4个知识点:
一是printf语句,输出%d格式,二是赋值运算及赋值表达式的值,三是++运算,四是int型数据的表示范围及整数在内存的存储情形。
b=++a是将a的值加1后赋给b,a、b是int型,处于-32768~32767范围内,32767+1=-32768,整数在运算机中以补码形式存储,32767的补码为01111111,加1后为00000000,是-32768的补码。
关于int数据,32767+1等于-32768。
若是long型,知足32767+1等于32768。
【答案】-32768
5.已知有声明“inta=3,b=4;
”,以下表达式中合法的是______。
(2020年春选择题第25题)
+b=7
=|b|
=b=0
D.(a++)++
【解析】此题考查的是赋值运算符和“++”运算符的左值要求。
左值必需是变量,不能是常量和表达式。
选项A左侧是表达式,不许诺,选项D括号中的a++也是表达式,不能进行++运算。
选项B是一个代数式,必需转换成C语言合法的表达式,表示成a=abs(b)。
选项C正确,将0赋给b,再赋给a,a和b的值再也不是初始化的值,而变成0了。
6.已知有声明“intn;
floatx,y;
”,那么执行语句“y=n=x=;
”后,y的值为
________。
(2020年春选择题第28题)
【解析】此题考查的是不同类型间的赋值。
赋值运算符右结合。
先将赋给x,表达式的值也为,再将赋给n,n是int,自动截取整数部份,将3赋给n。
最后将3赋给y,y是float,将整数3转换成实数后赋给y,y值为。
7.以下程序运行时输出到屏幕的结果是
___________
(2020年春阅读程序第7题)
#include<
>
voidmain()
{inta=1,b=2;
a+=b;
b=a-b;
a-=b;
printf("
%d,%d\n"
a,b);
}
【解析】此题的考点是复合赋值运算符,程序功能是不用临时变量,实现两个变量的值的互换。
计算进程如下:
a=a+b=1+2=3,b=a-b=3-2=1,a=a-b=3-1=2。
最后结果是a为2,b为1。
变量的值在程序运行进程中可能在不断的转变,每次计算都要用最新取得的值。
【答案】2,1
8.如有声明“intx=2,y=1,z=0;
”,那么以下关系表达式中有语法错误的选项是_______。
A.x>
y=2>
y>
x>
y==1==(x=0,y=1,z=2)
【解析】赋值表达式的运算数有左值要求,赋值号左侧必需是变量,不能是表达式,A错。
B没有语法错误,z>
y成立结果为1,不成立为0,再将1或0与x比较,判定其是不是成立。
C先判定x>
y是不是成立,取得0或1再与1比较是不是相等,最后的结果要么是0要么是1。
D先做括号中的逗号表达式,依次进行赋值,最后一个表达式的值2是整个逗号表达式的值,将其与x的值进行是不是相等的比较。
9.已知有声明“inta=12,b=15,c;
”,那么执行表达式“c=(a||(b-=a))”后,变量b和c的值别离为____________。
(2020年春选择题第29题)
,1
,12
,1,12
【解析】此题的考点是逻辑表达式的短路特性。
a值为12,非零即为真,逻辑表达式的结果只能用1或0表示,假设为真那么结果为1。
只要有一个为真,逻辑或“||”的结果就为1,b-=a不用计算了,b的值不变,仍为15。
而括号中逻辑表达式的值为1,1赋给c,故c的值为1。
10.已知有声明“inta=3,b=4,c=5;
”,以下表达式中值为0的是________。
(2020年秋选择题第24题)
&
b<
=b||b&
cD.!
(!
c||1)
【解析】a&
b中a和b都是非0,A的结果为1。
B中a<
=b成立,结果为1。
C中&
优先级高于||,先做&
,b和c的值非0,b&
c的结果为1,因为是||运算,最后的结果确信是1。
D中c非0,!
c为0,与1逻辑或为1,将括号中的1再逻辑非,结果为0。
语言中有!
、&
、||三个逻辑运算符,其中优先级高于算术运算符的是________。
(2020年秋填空题第1题)
【解析】逻辑非“!
”是单目运算符,优先级为2级,高于3级的“*/%”和4级的“+”和“-”。
“&
”的优先级为11级,“||”的优先级为12,低于算术运算符。
【答案】!
12.以下表示数学式“a<
b<
c”的逻辑表达式中,错误的选项是_______。
(2007年春选择题24题)
<
c<
b&
b<
cC.!
(a>
=b)&
!
(b>
=c)D.!
=b||b>
=c)
【解析】最好的答案是B,但C、D与B的功能相同。
C中!
=b)确实是a<
b,而D中将!
放到外面,“&
”就变成了“||”。
选项A先判定a<
b,成立结果为1,不成立结果为0,再将结果与c比较。
【答案】A
1x>
13.以下选项中,不能表示函数sign(x)=0x=0功能的表达式是________。
-1x<
=(x>
0)?
1:
(x<
-1:
0=x<
0?
(x>
0)
=x<
=0?
(x==0?
0:
1)=x>
x==0?
-1
【解析】此题考点是嵌套的条件表达式。
认真分析它们的逻辑关系,选项C的功能是当x<
=0时值为-1,不然即x>
0再判定x=0是不是成立决定值为0仍是1,不合题意。
【答案】C
14.如有声明“inta=5,b=2;
”,那么表达式“b+=(float)(a+b)/2”运算后b的值为________。
(2007年秋填空题第1题)
【解析】b+=(float)(a+b)/2相当于b=b+((float)(a+b)/2)。
先执行a+b得7,转换成实数除以2,得,然后将原先的b=2加得,b是int,截取整数部份5赋给b。
【答案】5
15.设指针变量占2个字节的内存空间,如有声明“char*p="
123"
intc;
”,那么执行语句“c=sizeof(p);
”后,c的值为_____。
(2020年春选择题第24题)
【解析】题目告知咱们指针变量占2个字节,而sizeof的功能确实是计算变量在内存中所占的字节数,c的值为指针变量p在内存中占用的字节数,为2。
16.如有声明“intr=2;
”,那么执行语句“printf("
sizeof(2**r));
”时输出________。
(2020年秋填空题第2题)
【解析】此题输出表达式2**r的结果在内存中占用的字节数。
2**r的结果为实常量,其中有一个实常量,C中实常量默以为double型。
依照类型转换规那么,其他类型的数据也要转换成double型,最后结果为double型,在内存占8个字节。
一样情形,只要表达式中有一个数据为double型,最后的结果确实是double型。
【答案】8
17.数学式
所对应的c语言表达式为pow(x,________)。
(2020年春填空题第1题)
【解析】pow(x,y)是求x的y次方的函数。
确实是x的三分之一次方。
此处注意的是1/3=0,要将其中一个转换为浮点数。
【答案】3或1/或(double)1/3
18.数学表达式
所对应的C语言表达式为________。
(2020年秋填空题第3题)
【解析】求平方根的函数为sqrt,求绝对值的函数为abs或fabs,abs求整数的绝对值,fabs求实数的绝对值。
“≠”用“!
=”表示。
4a要用4*a表示,*表示乘号,不能缺省。
分母必然要加括号,假设不加括号得用除“/”不是用乘“*”。
加括号的表示方式看起来更直观。
【答案】sqrt(fabs(x)!
=4*a/(b*c)或sqrt(fabs(x)!
=4*a/b/c
实现顺序结构的语句
1.以下关于C语言语句的表达中正确的选项是_________。
(2006年秋选择题第27题)
A.所有语句都包括关键字
B.所有语句都包括表达式
C.所有语句都能够出此刻源程序中的任何位置
D.除复合语句外的其他所有语句都以分号终止
【解析】关键字只有32个,大多数用来进行变量类型说明和实现条件选择和循环结构的操纵语句。
很多语句中没有关键字的,如赋值语句。
表达式也没必要然在所有的语句中显现的,如函数挪用语句。
语句是程序的执行部份,放在函数内部,而且在说明部份以后。
C语言中复合语句中的各条语句都必需有分号“;
”,但在“}”外没有分号。
2.已知int类型数据在内存中存储长度为2个字节,以下语句中能正确输出整数32768的是________。
("
32768);
("
%ld"
%f"
%c"
【解析】此题考点是输出格式。
%d格式输出int型整数,范围为-32768~32767,%f格式输出浮点数,%c格式输出字符。
%ld格式输出长整型整数,范围为-21亿~21亿。
3.以下语句中有语法错误的选项是____________。
(2020年春选择题第24题)
0e);
0e2);
("
0x2);
%s"
"
0x2"
);
【解析】此题考点为输出格式及常量表示。
A中的%d表示输出int型整数,0开头为八进制数,只能为0~7共8个数字,不能为e。
B是%f格式,输出实数,0e2是指数形式,即为0*102。
C输出int型整数,0x是十六进制形式,D用%s格式输出字符串常量"
4.已知有声明和语句“inta;
scanf("
a=%d"
&
a);
”,欲从键盘上输入数据使a中的值为3,那么正确的输入应是_______
(2020年春填空题第5题)
【解析】“a=”是原样字符,要照输。
“%d”的位置输入对应的变量a的值3。
确实是将键盘输入的值3存入变量a的地址单元,如此a的值就为3。
【答案】a=3
5.如有声明“longa,b;
”且变量a和b都需要通过键盘输入取得初值,那么以下语句中正确的选项是________。
(2007年秋选择题第23题)
%ld%ld,&
a,&
b"
);
%d%d"
a,b);
b);
%ld%ld"
【解析】a和b是long型,输入时要用“%ld”格式。
关于变量,scanf函数的地址表中必需有取地址运算符“&
”,而且只在格式操纵串上有双引号,地址表列上不该有双引号。
知足这些要求的只有选项D。
6.如有声明“inti;
floatx;
chara[50];
”,为使i取得值1,x取得值,a取得值yz,当执行语句“scanf("
%3d%f%2s"
i,&
x,a);
”时,正确的输入形式是_________。
(2006年秋选择题第23题)
,yzB.yz=001,x=,a=yz
【解析】第一个输入格式“%3d”对应变量i,要输入3位,而i值为1,只占1位,补足3位,输入时在前面加00,输完“001”后用空格或回车或TAB键分隔。
第二个输入格式“%f”,对应的数为实数,输完加分隔符。
第三个输入格式“%2s”,是2个字符的字符串,a为数组名,本身就已表示地址了,前面无“&
”。
选项C知足要求。
A用逗号分隔,逗号不是有效的分隔符,只有当格式操纵串中有原样字符逗号时才需输入逗号,而且i不足3位。
B在输入数据时没有分隔符,D在输入时有“i=”等字符,不需要。
7.已知有声明“chars[80];
”,假设需要将键盘输入的一个不含空格的字符串保留到s数组中,那么以下语句中正确的选项是________。
(2020年秋选择题第28题)
s);
s[0]);
=gets();
=getchar();
【解析】A中的scanf函数中的s是数组名,本身就表示地址了,不用再加“&
B中的s[0]表示一个元素,不是地址,C中应该将s放入括号中作为gets函数的参数,D中的getchar函数一次只能输入一个字符。
scanf函数不能输入空格。
8.如有声明“chars[l0]="
remind"
”,执行“puts(s+2);
”后的输出结果是___________。
(2007年秋填空题第2题)
【解析】puts函数的功能是输出一个字符串。
s表示数组的起始地址,s+2表示数组元素的第2个元素的地址,因此从s[2]元素开始输出,结果为mind。
【答案】mind
实现选择结构的语句
1.已知有声明“intx,y;
”,假设要求编写一段程序实现“当x大于等于0时y取值1,不然y取值-1”,那么以下程序段中错误的选项是________。
(2020年秋选择题第26题)
=0)y=1;
elsey=-1;
=x>
-1;
()(x-abs(x))
{casex>
=0:
y=1;
break;
{case0:
y=1;
default:
y=-1;
default:
}}
【解析】此题考点为if语句和switch语句。
选项A用if语句表示,正确。
选项B用条件表达式表示,x大于等于0成立将1赋值给y,不然将-1赋值给y。
选项C用switch语句,但不符合switch的语法规那么,switch的括号中必需有一常量或表达式,不能为空。
case后是一个常量表达式,其中只能有常量和运算符,不能有变量。
选项D中,当x大于等于0时,x-abs(x)为0,执行y=1,不然就不是为0,执行y=-1。
2.以下程序运行时输出到屏幕的结果是________。
(2020年秋阅读程序第7题)
#include<
voidmain()
{inti=1,m=0;
switch(i)
{case1:
case2:
m++;
case3:
}
m);
【解析】因为case后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 历年 考题 题解