第1章 C语言基础知识Word文档格式.docx
《第1章 C语言基础知识Word文档格式.docx》由会员分享,可在线阅读,更多相关《第1章 C语言基础知识Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
答案A出现了小数点
11答案是C
答案C以数字开头了
12答案是A
B答案中float是关键字,C答案中3c以数字3开头,D答案中-5d
中中划线不属于字母,数字,下划线中一种
13答案是A
B答案中-max中中划线错误,C答案中3COM以字母3数字开头,D答案中int是关键字,不是用户标识符的命名规则。
14答案是B
A答案中15.表示的是一个小数,即一个实型数据不是整型数据,
C答案中出现了逗号,逗号不是构成数据的一部分
D答案中,如果表示的二进制数据,则不应该出现字母B,如果表示的是十六进制数,则应该以0x开始。
15答案是D
C语言规定,整形数据中,除了short占有2个字节之外,其余的类型都占有4个字节。
实型中float占有4个字节,double占有8个字节,char占有1个字节。
16答案是B
八进制数由0—7八个数字组成,八进制数字必须以0开始,后面紧跟的是由0—7组成的数字,即不能出项8、9;
B答案中出现了数字8,故不符合题意。
17答案是D
十六进制数由0—9、A—F十六个数字组成;
十六进制数必须以0x开始,大写的和小写的x都可以,后面紧跟的是由0—9、A—F组成的数字,注意是0x,而不是ox;
D选项中以ox开始,故错误。
18----20考查的是实型常量的表示方法
实行常量有两种表示方法:
1、用小数点表示的形式:
小数点的前后可以没有数字,但是不能同时没有数字。
2、指数形式:
字母E的前后必须有数字,并且后面的数字必须是整型
18答案是C
答案A中E后面0.5,0.5是小数,不是整数。
答案B中E后面没有数字,规定,后面必须有数字,而且是整数
答案D中E前面没有数字。
19答案是C
答案A中2.0是小数,规定E后面的数字必须是整数
答案B中E前面没有数字。
答案D中E后面没有数字,规定E后面必须是整数。
20答案是A
B中八进制中不能出现数字8,八进制数由0—7八个数字组成,八进制数字必须以0开始,后面紧跟的是由0—7组成的数字,即不能出项8、9
C中e后面不能是小数,必须是整数
D中e后面必须是整数,不能没有数字
21答案是B
B中0.4是小数,E后面不能出现小数,只能是整数。
22答案是C
C中0.5是小数,E后面不能出现小数,只能是整数。
23答案是D
这一题考察的是算术运算符的优先级别以及算术运算符的运算规则。
1、+、-运算符的优先级别:
12,结合方向:
自左向右。
*、/、%运算符的优先级别为:
13,结合方向:
自左向右
先算优先级别高的运算符,再算级别低的运算符。
其中%运算符的两边要求都是整数,不能出项小数。
2、运算符两边变量的类型想同,结果为为该类类型。
如果类型不相同,那么运算的结果是级别高的类型。
float→doube
↑
long
unsigned
↑
char,short→int
可以记住这样一句话,整数经过运算符运算以后结果还是整数,整数和小数运算后结果是小数,
3.6-5/2+1.2+5%2
其中的/、和%为13号优先级别,所以先算5/2和5%2的值,由于运算符的两边的类型都是整型,所以最后的运算的结果也是整型。
5/2的结果只能是整数,结果是2;
5%2的运算结果也是整型,运算结果为1;
接着算3.6-2+1.2+1表达式的值,其中都是12号运算级别,那么按照结合方向进行运算,结合方向:
自左向右;
所以先算3.6-2,运算符的两边的类型不相同,一个为整型,一个为实型,最后的运算结果为高类型,为:
实型。
最后的结果为1.6;
计算完第一个表达式以后算1.6+1.2+1;
按照结合方向自左向右计算,1.6+1.2运算符的两边的类型都是实型,最后的结果是整型,结果为2.8;
最后算表达式2.8+1的值,两个的类型不相同,一个是小数,一个是整数,最后的计算结果为小数,所以最后的运算结果为:
3.8;
24答案是D
A答案C语言中,分号是语句结束的标志,每一条语句都以分号结束;
分号是语句的一部分;
B答案中,都好运算符的运算级别是1好级别,级别最低。
赋值运算符的运算级别是2号运算级别,所以除了都好运算符之外,最低的就是赋值运算符。
C答案中,j++;
最后有一个分号,说明只是一条语句,其中j++表达式相当于j=j+1出现了赋值号,所以是赋值表达式,最后加上一个分号,够成了语句,这是一条赋值语句。
故答案正确。
D答案+、-、*、/、%都是算术运算符,但是%运算符的两边要求都是整型,不能是实型;
故选D。
25答案是D
这一题考察的主要是变量的定义,其中变量的命名规则是:
1、满足标识符的命名规则,即:
只能由字母、下划线和数字构成,并且不能以数字开头。
不能和关键字相同
2、变量在使用之前要先定义。
D答案中floatUS$,其中$是美元符号,不能构成标识符,所以不能构成变量。
故选该答案。
26答案是A
优先级别:
2;
结合方向:
自右向左
这一题考察的是赋值符号的运算规则,赋值运算符是将右边表达式的值或者是变量的值赋值给变量,注意:
赋值号的左边只能是变量,不能是常量或者是表达式。
B答案赋值号的左边是x+1,是一个表达式,故不正确。
C答案出现了两个赋值号,那么根据结合方向进行计算,先算右边的表达式的值,即x+10=x+y,,表达式的左边是一个表达式,故不正确。
D答案考查的是强制类型转换,其中强制类型转换的格式:
(类型名)表达式其中的小括号不能省略,这个答案中的double每一用小括号括起,故不正确。
27答案是A
这一题考查的是注释;
C语言的注释必须放在“/*”和“*/”之间,“/”和“*”之间不允许有空格。
“/*”和“*/”之间不允许再插入“/*”或“*/”。
注释可以出现在程序中的任意合法位置。
注释部分不被执行。
注释不可以嵌套使用。
main()
{
inta=0,b=0,sum;
a=10;
/*给a赋值10
b=20;
给变量赋值20*/
sum=a+b;
printf(“a=%d,b=%d,sum=%d\n”,a,b,sum);
/*输出结果*/
}
其中红色的部分为注释内容,注释内容不被程序执行。
所以这个程序可以改为:
printf(“a+b=%d\n”,sum);
/*输出结果*/
所以最后的sum的值就是10+0,最后的值是10;
所以选择答案A
28答案是B
这一题考察的主要是变量的定义和赋初值,
格式:
类型名变量=表达式或者是变量;
其中变量的命名规则是:
A满足标识符的命名规则,即:
B变量在使用之前要先定义。
C变量的初始化就是在定义变量的同时给变量赋初值。
在赋初值时是把赋值号右边表达式的值或者是变量的值赋值给赋值号左边的变量。
赋值号右边的变量必须是先定义过的。
A答案intn1=n2=10;
n1,n2都是变量,但是变量n2是个变量,应该先定义后使用,没有先定义变量n2,所以不正确。
C答案floatf=f+1.1;
赋值号右边的表达式的f应该是一个变量,应该先要定义之后才能使用。
故不正确。
D答案中doublex=12.3E2.5;
其中的12.3E2.5不正确,因为实行常量的表示形式中指数形式中的E前后必须有数字,并且后面的数字必须是正式,不能是小数。
所以该答案不正确。
29答案是C
这一题考查的是表达式;
表达式的概念:
用运算符连接对象的式子
其中的运算符有不同的优先级别,根据优先级别进行运算。
A答案k=k-k由-和=号两个构成,根据优先级别进行运算,先算-运算,结果为0,再将0的值赋值给变量k;
故正确;
B答案-k++有两个运算符构成,其中-号的运算级别是14号,++是14号,级别相同,根据结合方向进行运算和赋值。
结合方向是:
自右向左。
先算k++表达式的值,表达式的值是变量原来的值。
为1,最后在算负号运算符,此时表达式的值为-1;
C答案k%int(f),这里用到了%运算符和强制类型转换,其中强制类型转换的格式为:
(类型名)(表达式)注意类型名的小括号不能省略,C答案中省略了类型名的小括号,故不正确。
D答案k=f=m这是个赋值运算符,这个表达式中的赋值运算符是2号运算级别,结合方向是自右向左。
将m的值赋值给变量f,f得到的值为2.000000;
将f的值赋值给变量k.则变量k的值为2;
30答案是D
main()
{intm=12,n=34;
printf(“%d%d”,++m,n++);
printf(“%d%d”,--n,--m);
这一题主要考查的是变量的自加和自减运算符的运算规则。
自减自加运算符的运算级别:
2号,结合方向:
12
m++
++m
m--
--m
该题目中:
m的值为12,n的值为34.
执行第一条语句:
++m的表达式的值:
m的值是在原来的基础上加一,即m的值是13,表达式的值是变量变后的值,即13。
n++,n的值在原来的基础上加一。
即35,n++,++在变量的后面,所以表达式的值是变量原来的值,即34;
执行第二条语句:
--n,变量n的值在原来的基础上减一,即34,--n表达式的值是变量变后的值,即34;
--m中,m的值是在原来的基础上减一,即12,--m表达式的值是变量变后的值,即12;
所以最后的结果是:
13343412
31.答案选择:
B
考点:
无符号整型的存储。
记住:
不管是有符号或是无符号正的整型数据都以二进制形式进行存储,区别是有符号的最改为表示符号位,如果最高位为1表示负,0表示正。
分析:
首先,unsignedshorta;
定义了一个无符号短整型变量a,intb=-1;
定义了一个有符号的基本整型变量b,并赋初值为-1。
其次,-1在计算机中以补码的形式存储。
步骤:
(1)计算-1的绝对值1的原码,结果为:
0000000000000001。
(2)原码取反得反码,结果为:
1111111111111110。
(3)反码加一得补码,结果为:
1111111111111111。
将1111111111111111赋值给变量b。
第三,a=b将b中的1111111111111111赋值给变量a,变量a是无符号整型,因此最高位的1也表示值,通过计算1111111111111111得到65535。
32.答案选择:
考点:
赋值号左边只能是变量,不能使表达式。
多个赋值号进行运算时,运算顺序是从右向左。
分析:
A,x1=26.8%3,26.8是实型不能进行%(求余)运算。
B,1+2=x2,赋值号左边1+2是表达式,因此是错误的。
C,x3=0x12,将一个十六进制的整型常量12赋值给变量x3是对的。
D,x4=1+2=3,首先计算1+2=3,这个表达式是错误的,赋值号左边不能是表达式。
有的同学容易出错的地方是:
先计算x4=1+2,再计算x4=3,这样的运算顺序是错误的。
33.答案选择:
C
++、--运算符只能对变量进行自加或是自减,不能对表达式或是常量进行计算。
C答案中的++(i+1)就是++运算符对(i+1)表达式进行了计算,因此是错误的。
例如:
10++也是错误的。
34.答案选择:
整除。
1/2的值是0,1/2.0才是0.5。
B答案中的(1/2)*(a+b)*h的值为0,因为表达式首先计算(1/2)得到的值为零,零乘以任何数都为零,和题目不符,因此是错误的。
35.答案选择:
D
++、--运算的对象可以是int、float、char、double型的变量。
例如,inta=5;
a++;
结果a=6。
douboleb=5.5;
结果a=6.5。
++就是在变量初值基础上加了一,--就是在初值基础上减了一。
36.答案选择:
++在变量的后面时,先引用后增值;
++在变量的前面时,先增值后引用。
k=n++,++在变量n的后面,因此是先引用后增值,那么首先计算k=n,再计算n=n+1。
所以选择B答案。
37.答案选择:
赋值表达式值的类型与赋值号左边变量类型一致。
首先,inta=8,b=5,c;
定义了三个整型变量a、b、c。
其次,计算c=a/b+0.4。
先计算a/b就是8/5的值为1,1+0.4后的值为1.4。
将1.4赋值给变脸c。
第三,变量c的类型是整型,右边的值为1.4是实型,那么它们的类型不一致,我们将1.4变为整型就是1赋值给变量c。
因此选择B答案。
记住不能选择A答案。
38.答案选择:
强制类型转换,不同类型的数据相加。
题目中设a和b均为double类型的变量,a=5.5、b=2.5,计算(int)a+b/b表达式的值。
首先计算(int)a,就是将变量a强制类型转化为int型,a的值为5.5,强制类型转换后变为了5。
第二,计算b/b的值为1.000000,因为b是double类型的因此计算的结果也为double类型。
第三,计算5+1.000000的结果为6.000000,因为5是整型,1.000000是实型,整型在计算机内存中占的字节数没有实型数据类型多,如果不同类型的数据进行计算,那么采取占用字节数小的变量转化为占用字节多的变量类型后再计算。
因此在做题的时候应该先将5变为double类型,结果为5.000000,那么相加后就为6.000000。
注意不能是答案B。
39.答案选择:
数据的类型。
D答案中的longshort在C语言中是不存在的。
40.答案选择:
用户标示符。
C答案中$b中出现了$,$不属于字母、数字或是下划线,因此是错误的。
这种题目只要谨记用户标示符的规则就行。
41.答案选择:
赋值表达式、强制类型转换、求余运算
A答案中要求计算x=y*5=x+z,多个赋值号进行运算时,运算顺序是从右向左。
首先计算y*5=x+z时出错,赋值号左边只能是变量不能使表达式。
B答案考查是的强制类型装换,(类型名)表达式的格式。
int(15%5)和强制类型转换的格式刚好相反,应该改为(int)(15%5)才正确。
C答案是正确的。
D答案x=25%5.0,实型不能进行求余运算。
42.答案选择:
A
给变量赋初始值。
A答案inta=b=0,在定义的时候同时定义两个以上的变量中间必须加上逗号。
inta=0,b=0;
才对,A答案中的表达式将不能正确定义b变量,在程序执行的时候会提示找不到b变量。
43.答案选择:
用户标示符
A答案long是长整型,不能用作用户标示符。
B答案y-m-d中-是中划线,不属于字母、数字、下划线,因此也不能用作用户标示符。
C答案正确。
D答案int是关键字,因此不能用作用户标示符。
44.答案选择:
数值常量。
A答案中028以0开头表示八进制整型常量,八进制整型常量中只有0到7之间的数字,因此028是错误的。
B答案正确,书中有点印刷错误,oxa23应该改为0xa23。
C答案中4c1.5在C语言中没有这种类型,oabc是错误的,改为0xabc才对。
D答案中10,000在英语中经常用到,但是在数学和C语言中禁止出现。
45答案选择为B
标识符
标识符只能由字母、下划线和数字构成。
答案A中大写字母属于字母,可以构成标识符,答案B是中划线,不能构成标识符,只能是下划线。
答案C和答案D都能构成标识符,都符合标识符的命名规则。
46答案选择为C
字符
计算中的所有字符都是以ASCII值存储,ASCII值为十进制数,每一个字符对应一个ASCII值。
故选答案C。
正数以原码存储,负数以补码存储。
47答案选择为D
整型数据
整型数据在计算机中的存储,每一个整型数据在C语言中都占有一定的字节,其中只要是带有short的都占有2个字节,其余的都占有4个字节。
本题中的A答案中都占有4个字节,是错误的,因为short只是占有2个字节,C答案中不是由用户自己定义的,是计算机中规定好的,所以答案C是错误的。
答案B中并不是由于数据的大小来决定,而是规定好的,所以最后的答案为D。
48答案为A
考查:
赋值语句
赋值号左边必须是一个代表某存储单元的变量名。
只能是一个变量,不能是表达式和常量。
赋值号右边必须是合法的表达式。
赋值运算符的功能是先求出赋值号右边表达式的值,再将此值赋值给赋值号左边的变量;
当赋值号左右两边的类型不相同时,则将右边表达式的值转换为赋值号左边变量的类型后再赋值。
本题中的答案B:
x=n%2.5,这里是求余运算,所以要求两边的值都必须是整型数据,但是2.5为小数。
所以不正确。
C答案中的赋值号左边是一个表达式,所以不正确,D答案中的5是一个常量而不是变量,所以最后的结果为A。
49答案选择为A
自加运算。
把k=0的值带入到这个表达式中进行运算。
答案A:
变量的值为0,自加后变量的值为1,表达式的值为0。
答案B:
符合赋值表达式,k+=1,可以表示为:
k=k+1;
变量变为1,表达式的值为赋值号左边的值,即1;
答案C:
++k变量的值为0,自加后变量的值为1,表达式的值为1;
答案D:
k+1表达式的值为0+1==1,所以表达式的值为1,
只有A答案的值为0,所以答案为A
50答案选择为A
答案B和答案C中的赋值号的左边是表达式,故不正确。
答案D考查的是强制类型转换,格式为(类型名)(表达式)
其中(类型名)称为强制类型转换运算符。
小括号不能省略,表达式的小括号可以省略。
将一个表达试的值转换为指定的类型。
但是原表达式的值没有发生改变。
D答案中,double中的括号省略了,故不正确,所以答案为A。
51答案选择为C
赋值表达式
答案A:
赋值号的左边只能是变量,不能使常量和表达式。
所以答案A错误。
答案B:
强制类型转换中的小括号写错。
答案D:
求余运算的两边要求是整数。
12.5为小数。
故最后的答案为C。
52----61考查的是字符的知识。
复习:
字符的概念和字符的一些知识
在计算机C语言中字符型常量必须用一对单引号括起的一个字符,其中的单引号称为定界符,它没有实际的意义。
字符在计算机中都是以ASCII码存放的。
在计算机C语言中还有一种很特殊的字符称为“控制字符”或者是“转义字符”。
该字符是有一对单引号括起来的以‘\’开头的,后面紧跟一个特定字符或一个或者是一个到三个八进制数或者是一个到两个十六进制数字。
常用的转义字符有:
\n
换行
\\
一个反斜杠
\t
水平制表符
\’
一个单引号
\b
退格符
\”
一个双引号
\r
回车符
\ddd
三位八进制数代表一个ASCII字符
\f
换页符
\xhh
2位十六进制数代表一个ASCII字符
其中:
\ddd中的ddd表示一个1~3位八进制ASCII码值(这个八进制数不一定要以0开头,它只要是0~7之间的数字即可)。
例如‘\101’代表字符‘A’;
\xhh中的hh代表的是一个或者是两个十六进制的ASCII码值。
‘\x41’代表的是字符‘A’。
反斜杠后面的十六进制数只可由小写字母x开始,不允许使用大写字母X,也不能用0x开始。
在计算机C中,所有的字符常量都作为整型常量处理,一个字符常量所对应的整型常量就是通常所说的该字符的ASCII码值。
每一个字符都有对应的ASCII码值,其中‘a’对应的ASCII码值是97,‘A’对应的ASCII码值是65。
52本题答案为D
A答案中,双引号中的内容只能是一个字符,答案中有4个字符,故不正确。
B答案中,没有双引号。
C答案转义字符,一反斜杆开始的字符,但是反斜杆后面不能使空的,所以C答案是错误的。
D答案中表示的是一个双引号。
53、本题答案为B
这一题中的内容主要是字符的内容。
B答案中的这一个转义字符中,表示的是八进制的字符,八进制数种不能出现大于8的数字,B答案中出现了9,这个数字大于8,所以说这个是错误的。
54、本题答案为D
小写字母的ASCII值比大写字母的ASCII值大32,那么小写字母的ASCII值为100,那么大写字母的ASCII值为:
100-32=68;
故选答案D。
55、本题答案为A
这一题考查的是字符变量的定义和赋初值,那么要求赋值号的右边是一个合法的字符变量,A答案中的赋值号的右边的值是一个不合法的字符,因为字符只能是一对单引号括起的一个字符,其中A答案中是一对单引号括起的两个字符,所以这个字符是不合法的。
所以选择A答案。
56、本题答案为B
字符型变量x并且赋值为字符‘C’。