C语言基础知识.docx
- 文档编号:10450289
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:70
- 大小:66.90KB
C语言基础知识.docx
《C语言基础知识.docx》由会员分享,可在线阅读,更多相关《C语言基础知识.docx(70页珍藏版)》请在冰豆网上搜索。
C语言基础知识
第一章C语言基础知识
考点跟踪
1.答案:
A
解析:
在C语言中,合法标识符的命名规则是:
标识符可以由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。
在C语言程序中,凡是要求标识符的地方都必须按此规划命名。
在C语言的标识符中,大写字母和小写字母被认为两个不同的标识符。
在选择标识符时,应注意到“见名知意”,即选择具有一定会义的英文单词或汉语拼音作为标识符,以增加程序的可读性。
2.答案:
B
解析:
C语言规定,不能在函数的内部定义函数,使用选项D错误;在C语言中函数定义时是互相独立的,可以相互调用,但不能调用main函数,所以选项A是错误的。
每个函数都可以被单独编译,但不能单独运行,所以选项B正确。
3.答案:
C
解析:
在C语言程序中,合法标识符的命名规则是:
标识符可以由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。
4.答案:
D
解析:
C语言规定,变量标识符只能有字母、数字或下划线3种字符组成,且首字符必须为字母或下划线。
在C语言中大写字母和小写字母被认为两个不同的标识符。
选项A定义的标识符的变量标识符_int和选项B定义的变量标识符int_与C语言的关键字int是不同的,是正确的变量标识。
选项C定义的变量标识符For与C语言中的关键字for是两个不同的标识符,所以选项C是正确的,而选项D包含有特殊字符$,因而其不符合C语言变量命名的规则。
5.答案:
B
解析:
在C语言中,合法标识符的命名规则是:
标识符可以由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。
在C语言的标识符中,大写字母和小写字母被认为两个不同的标识符。
选项B是连字符,不在C语言规定的命名变量标识符的范围内。
6.答案:
A
解析:
一个C语言源程序无论包括了多少函数,在正常情况下总是从main函数开始执行,从main函数结束。
7.答案:
C
解析:
C语言规定必须以main作为主函数名。
程序中的main()是主函数的起始行,也是C程序执行的起始行。
每一行的C程序都必须有且只能有一个主函数。
一个C程序中可以包含任意多个不同的函数,但只能有一个主函数。
程序要从main()函数开始执行,最后在main()函数结束。
8.答案:
C
解析:
本题主要是考查的是C语言结构中的源程序书写格式这个知识点,在C语言中注释部分对程序的运行结果不产生任何影响,它可以出现在任意位置;C语言书写自由,一行内可以写多个语句,一个语句可以写在多行上;由于C语言编写的程序有很好的移植性,可以放在多个程序文件中。
9.答案:
C
解析:
实型常量又称实数或浮点数。
在C语言中,可以用两种形式表示一个实型常量。
①小数形式是由数字和小数点组成的一种实数表示形式,这种表示形式的常量必须要有小数点。
②指数形式用“e”或“E”后跟一个整数来表示以10为底的幂数。
C语言的语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。
因为选项C中字母E后面的指数为小数形式,使用选项C的表示方法不合法。
10.答案:
A
解析:
C语言规定,在字符“/*”和其后紧跟的第一个字符“/*”中间的部分是注释内容,且注释部分的内容不参与程序的编译和运行,因此,本题中程序语句“b=20;”没有执行,故本题的答案为选项A。
11.答案:
B
解析:
“%u”格式符表示以十进制形式输出无符号整型变量。
本题中无符号整型变量x=0xFFF(十六进制)表示的是无符号整型变量(十进制形式)的最大值65535,所以最后输出结果为65535。
12.答案:
A
解析:
C语言中,合法标识符的命名规则是:
标识符可以由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。
在C语言中,凡是要求标识符的地方都必须按此规则命名。
C语言标识符可以分为关键字、预定义标识符和用户标识符3类。
关键字是C语言已经预先规定了的一批标识符,它们在吃呢光绪中都代表着固定的含义,不能另作他用。
所谓预定义标识符是指C语言中预先定义并具有特定含义的标识符,如C语言提供的库函数名、预编译处理命名等。
用户标识符有用户根据需要定义的标识符,又称为自定义标识符。
选项B和C中的横线以及点都不是合法的字符,选项D中的case为C语言关键字,故本题答案为选项A。
13.答案:
B
解析:
八进制数其开头数字必须是“0”,其数字包括0~7,而在选项A中,028是错误的。
浮点数指数形式表示在常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C中4el.5是错误的。
在选项D中,整型数据10,000的表示形式是错误的。
所以本题的答案为选项B。
14.答案:
D
解析:
不同的编译系统或计算机系统对几类整型数所占用的字节数有不同的规定。
所以long、int和short类型数据占用内存大小是由选择何种C编译系统决定的。
15.答案:
C
解析:
在赋值表达式中,赋值符号“=”的左边只能为要赋值的变量,不能为表达式,右边可以为常量或者是表达式,故选项A错误,选项C正确;在取余运算中,运算符“%”两边都必须是整型数据,所以选项B、D错误。
16.答案:
A
解析:
在C语言中,两个整型变量相除,其值也是整型。
所以1/2的结果等于0,而不是0.5,所以,选项A的表达式计算过程为1/3*sin(1/2)*sin(1/2)=1/3*sin(0)*sin(0)=0,所以选项A错误。
17.答案:
C
解析:
在C语言中,求余运算符“%”两边的运算符对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。
在C语言汇总,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算有限次序是:
!
(逻辑“非”)、算数运算符、关系运算符、&&(逻辑“与”)、||(逻辑“或”)、赋值运算符。
根据运算符的优先级与结合性,对于选项A,先计算k>=k的值(为真,即1),再用1对k进行赋值。
对于选项B,先计算k++的值,再对其取负数。
对于选项D,先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。
18.答案:
67G
解析:
根据字符ASCII的排序顺序可知,执行语句a=’A’+’5’-‘3;得到的是大写字母C的ASCII值,即67,用“%d”的十进制数字输出。
而执行语句b=a+’6’-‘2’;得到的是大写字母G的ASCII值,即71,用“%c”以字符的形式输出,即字母G。
19.答案:
D
解析:
表达式的计算过程为:
3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8此题要注意5/2的结果是2,而不是2.5,因为除法运算符两编的数值类型均为整型,故运算结果的数值类型也被认定为整型。
20.答案:
C
解析:
子函数fun(doublea)的功能是返回a的平方值的整数部分。
子函数fun(doublex,doubley)的功能是返回x的平方值的整数部分与y平方值的整数部分的和。
又因为题中变量w的定义为double型,函数fun
(2)的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。
所以双精度型变量w的值为5.0。
21.答案:
C
解析:
C语言规定每条语句和数据定义的最后必须有一个分号,分号是C语言的必要组成部分。
符合语句也称为“语句块”,其形式如下:
{语句1语句2…语句n},即用一对花括号把若干语句括起来构成一个语句组。
一个符合语句在语法上视为一条语句,在一对花括号内的语句数量不限。
一个赋值表达式的最后加一个分号就成为一条语句,即赋值语句。
空语句是只有一个分号的语句,它什么也不做,程序设计中有时需要加一个空语句来表示存在一条语句,但随意加分号会导致逻辑上的错误,而且这种错误十分隐蔽,编辑器也不会提示逻辑错误,需要慎用。
22.答案:
B
解析:
C语言规定,可以在定义变量的同时给变量赋初值,称为变量初始化。
在选项A中给n1和n2进行赋初值,但变量n2没有定义;在选项C中定义变量f时,不能在赋值表达式的右边出现变量f自身,所以选项C错误;在选项D用指数表达式的常量中,字母E后面的数应该为整数形式,而不应为小数形式。
23.答案:
A
解析:
用逗号将表达式连接起来的试子称为逗号表达式。
其表达式的一般形式为:
表达式1,表达式2,…,表达式n最后一个表达式的值就是此逗号表达式的值。
所以选项A为C语言中的逗号表达式,选项A为正确答案。
赋值表达式的左侧值能是变量,不能是常量或者是表达式,因此选项B和选项C均不正确。
强制类型转换表达式的形式为:
(类型名)(表达式),其中(类型名)称为强制类型转换运算符,数据类型两边的圆括号不能省略,所以选项D不正确。
24.答案:
A
解析:
选项A的含义是把关系表达式y==5的值赋给变量x,所以这是一条正确的赋值语句。
因为赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,所以选项C和D是错误的。
因为求余运算符“%”两侧的运算对象都应当是整型数据,所以选项B是错误的。
25.答案:
B
解析:
本题考查的是数据类型的定义赋值,选项A中对变量声明类型且赋值的情况是不允许出现的,必须单独定义其类型。
选项B给实型变量赋值时不用引号,也不能将地址赋于实型变量;C语言允许在一个类型说明符后说明多个形同类型的变量,各变量之间要用逗号(,)隔开,而不是用(;)隔开;在计算机存储字符时将字符相应的ASCⅡ码以其对应的二进制进行存放,选项B中的定义是合法的,故选项B正确。
章节巩固训练
选择题
1.答案:
C
解析:
选项A和选项B为拼写错误,选项D中出现了大写字母。
2.答案:
C
解析:
C语言程序总是从程序的main()函数开始执行。
main()函数可以放在C程序的任何位置,包括最前面和最后面。
C程序中的函数可以任意地相互调用,他们之间的关系是平等的。
3.答案:
B
解析:
在编写程序时,标识符的作用是为函数、变量等命名。
标识符的命名规则如下:
(1)合法的标识符只能由字母、数字或下划线组成。
(2)标识符的第一个字符必须是字母或下划线,不能是数字
(3)要区分字母的大小写,例如,q和Q是两个不同的变量。
4.答案:
B
解析:
选项A中的void是C语言中的关键字。
选项C中的-wer前边有一个字符是减号,而case是关键字。
选项D中的4b是以数字开头。
5.答案:
C
解析:
因为输出格式符是%-06d,含义是输出值占6个位置,左边对齐,右边不满6个补空格,其他都原样输出。
6.答案:
C
解析:
本题中的表达式为逗号表达式,此表达式的结果为y=x+3/2的值。
y=x+3/2的元运算次序为:
先进行3/2运算,两个运算数均为整型量,结果也为整型量,等于1,此结果将与double类型数进行相加,要转换为1.00…00。
最后将x的值1转换称double型,与1.00…00相加。
7.答案:
B
解析:
本题的关键是要弄清楚C语言中常量的表示方法和有关的赋值规则。
在一个整型常量后面加一个字母l或L,则认为是longint型常量。
一个整型常量,如果其值在-32768~+32767范围内,可以赋给一个int型或longint型变量;但如果整型常量的值超出了上述范围,而在-2147483648~2147483647范围内,则应将其赋值给一个longint型变量。
本例中-2L虽然为longint型变量,但是其值为-2,因此可以通过类型转换把长整型转换为短整型,然后赋给int型变量a并按照%d格式输出该值。
8.答案:
C
解析:
本题考查的是自增运算符及赋值运算符的综合使用问题。
自增运算符是一元运算符,其优先级比赋值运算符高,要先计算。
把表达式i++的值赋予a,由于i++的结果为当前i的值(当前i值为4),所以i++的值为4,得到a的值为4.同时,计算了i++后,i由4变为5。
填空题
1.答案:
8127-12810000000
解析:
一个字节包含8个二进制位。
一个字节中能存放的最大(十进制)整数是127。
它的二进制形式是01111111。
一个字节中能存放的最小(十进制)整数是-128。
它的二进制形式是10000000。
用最高位上的数表示符号位,是0时表示正数;1表示负数。
2.答案:
0360xle0000000000011110
3.答案:
((x>20)&&(x<30))||(x<-100)
解析:
在C语言程序中,一般采用关系表达式和逻辑表达式的组合形式表示给定的条件。
两个条件表示“并且”关系时,一般使用逻辑运算符中的逻辑与“&&”;两个条件用“或”连接时,一般使用逻辑运算符中的逻辑或“||”。
4.答案:
18
解析:
本题考查的是整型常量的表达方法和算术运算符中的自减运算符“——”的用法。
题中的x=023是整型量的八进制数表示法,等价于x=19。
对于自减表达式“——x”,运算后表达式的值为18,x的值也是18。
第二章顺序结构
考点跟踪
1.答案:
C
解析:
自增运算符“++”出现在变量之前,表示先使变量的值加1,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行云端,再使变量的值加1,例如题中的“b++”。
题中的第一条语句先输出字符b的值,此时变量b=‘2’,因此输出值为2;再使b的值加1,b=‘3’,因此第二条语句输出:
b-a=‘3’—‘1’=2。
2.答案:
C
解析:
函数sizeof(a)的功能是:
求出字符串占用存储空间的大小,由于字符数组a的长度为7,所以i=7;函数strlen(a)的功能是:
求出字符串a的长度。
而每个字符串都以‘\0’为字符串的结束标记,所以j的值等于2。
3.答案:
A
解析:
在C语言中,一个字符常量代表ASCⅡ字符集中的一个字符,在程序中用单引号把一个字符括起来用为字符常量。
转义字符常量也是必须括在一对单引号内,以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCⅡ字符。
在选项A中,‘\018’是用八进制数来代表一个字符常量,所以其中的数字只能小于8,并不包括8.选项B、C、D都是正确的转义字符常量。
4.答案:
D
解析:
字符串常量是用一对双括号括起来的一串字符。
它用字符数组来存放,不用一对花括号来括起来。
5.答案:
A
解析:
C语言的字符常量是用单引号(‘)括起来的一个字符,也可以用以一个“\”开头的字符序列来表示字符常量。
其中形式\ddd表示1~3位八进制数所代表的字符;形式\xhh表示1~2位十六进制数所代表的字符。
在本题中‘\x13’表示回车符,是一个字符常量;而‘\081’用八进制数所代表的字符形式不正确,因为八进制数所表示的字符中不会出现数字“8”;‘65’单引号(即撇号)括起来的不是一个字符,而是一个十进制数字;“\n”是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。
6.答案:
D
解析:
在用基本输出语句printf时,格式说明与输出项的个数应该相同。
如果格式说明的个数少于输出项的个数(正如本题的情况),多余的输出项不予输出,如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或0。
故本题选项D)是正确的输出结果。
7.答案:
##2##4
解析:
题中从k=2输出,printf中“%d”钱的内容原样输出,所以第一次输出##2,接着k两次自加为4,接着输出##4,接着k再两次自加为6,此时不符合循环条件,所以输出结果为“##2##4”。
8.答案:
A
解析:
while循环的执行如下:
(1)计算while后面圆括号中表达式的值。
当值为非0时,执行步骤
(2);当值为0时,执行步骤(4)。
(2)执行循环体一次。
(3)转去执行步骤
(1)。
(4)退出循环。
在选项A中,表达式(ch=getchar())!
=‘N’表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。
如果这个条件表达式不成立,即输入的字符等于N,则退去循环。
9.答案:
B
解析:
题目的定义语句中,将b定义为整型变量,所以在输入语句中,应在b前加上取地址符&;而c为长度是10的字符数组,而且c就是字符数组的首地址,所以在输入语句中,c前不用加上取地址符&。
10.答案:
B
解析:
在输入函数scanf的输入格式符%2d%f中,2d表示输入的数据的宽度为2,所以当从键盘输入876543.0
11.答案:
printf(“a=%d,b=%d”,a,b);
解析:
printf函数是C语言提供准输出函数,用来在终端设备上按指定格式进行输出。
其调用形式如下:
printf(格式控制,输出项1,输出项2,…),格式控制是字符串形式。
本题中要按格式输出两个整型变量,所以格式说明符用“%d”的形式,又输出“a=,b=”的字符形式,所以输出函数printf的完整输出格式说明符为“a=%d,b=%d”。
12.答案:
1234
解析:
在scanf函数的输出格式说明中,变量a和b的格式控制符为“%2d”,即a和b都只获取2个字符的输入。
所以当输入1234567时,其前面的4个字符被分别赋给a和b,其余的字符丢掉。
所以输出结果为1234.
章节巩固训练
选择题
1.答案:
C
解析:
本题考查的是赋值语句的基本语法。
2.答案:
C
解析:
本题考查了复合语句和空语句的基本用法。
3.答案:
B
解析:
C语言中输出long型数时,在%和d之间必须加l(L的小写);输出double型数时,在%和f(e)之间也必须加l。
4.答案:
A
解析:
C语言汇总,格式字符d表示输出带符号的十进制整型数,o表示以八进制无符号型输出整型数(不带前导0)。
5.答案:
B
解析:
scanf和printf函数的一般调用形式,以及他们的功能。
用%s作为格式控制符,在输入时以非空白字符开始,以第一个空白字符结束。
6.答案:
D
解析:
本题考查scanf函数基本格式。
7.答案:
B
解析:
因为在输入格式控制符中指定变量j的输入格式控制符为“%2d”,即变量j所占的宽度为2,所以变量j只接收输入数据的前两位,从第三位开始直接到空格之间的输入整数都会被保存到变量y中,因为y为浮点型数据,所以正确答案为选项B。
8.答案:
C
解析:
程序语句inta,b,c,*p=&c;定义了3个整型变量a、b、c,和一个整型指针变量p,并且把变量c的地址赋给p。
scnaf函数的一般形式为“scanf(‘格式控制字符串’,地址列表)”,其中地址列表应当是存放输入数据变量的地址。
所以本题答案为选项C。
填空题
1.答案:
一条语句;
解析:
按C语言语法规定,在程序中,用花括号把若干语句括起来称为复合语句;复合语句在语法上被认为是一条语句。
空语句的形式是:
一个分号(;)。
它是由一个单独的分号构成,程序遇到空语句是,不产生任何动作。
2.答案:
x=127,x=]]]177,x=]]]]7f,x=]]]]127
解析:
变量x为int类型,所赋初值为八进制数0177(在C语言中,八进制数都用数字0开头)。
对应的十进制数是127。
在printf语句中,x以不同的形式输入5次,分别用宽度为3的十进制数形式、宽度为6的十进制数形式、宽度为6的八进制数形式、宽度为6的十六进制数形式、宽度为6的无符号十进制数形式进行输出。
格式串中的若干“x=”和逗号将按原样输出。
八进制数0177,转换出呢过十进制数127,转换成十六进制数是7f,转换成无符号十进制数也是127。
3.答案:
1200
解析:
在执行以上第一个输入语句时,首先为变量i读入数据。
的那个读入12是遇到点h号(.)因为i是整型变量,则视该点号为非法数据,这时读入操作自动结束,把12赋值给变量i。
未读入的点号留在缓冲区内作为下一次输入操作的输入数据。
当执行第二个输入语句时,系统将为变量j读入数据,首先遇到的就是点号,因为j也是整型变量,因此也视该点号为非法数据,读入操作自动结束,没有读入数据给变量j,j保持原有数据不变(为初值0)。
执行第三个输入语句的情况与第二个输入语句形同,变量k维持原有数据不变。
4.答案:
(1)a:
b
(2)c:
t1
解析:
本题采取条件表达式对a、b、c这三个变量进行比较。
先判断a是否小于b,若小于则t1=a,否则t1=b,这样t1就是a、b中较小的值,同理,再比较t1同c的大小,小的存入t2中,t2就是a、b、c中的最小值。
第三章选择结构
考点跟踪
1.答案:
B
解析:
在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。
在选项B中表达式E>0||E<0是一个逻辑表达式。
2.答案:
B
解析:
选项A调用函数isupper()来判断字符c是否是大写字母;选项C用逻辑与运算符来连接关系表达式‘A’<=c和c<=‘Z’来判断c是否是大写字母;选项D用逻辑与运算符来连接关系表达式c<=(‘z’-32)=Z和(‘a’-32)=A<=c来判断c是否是大写字母,这3个选项都符合题目的要求。
而选项B是先计算关系表达式“‘A’<=c”的值是0还是1,再比较值与字符‘Z’之间的大小关系,不能实现题目所要求的功能。
3.答案:
B
解析:
选项A用逻辑运算符来连接关系表达式‘A’<=kk和kk<=‘Z’来判断kk的字母是否是大写字母。
选项C用逻辑与运算符来连接关系表达式(kk+32)>=‘a’和(kk+32)>=‘z’来判断kk的字母是否是大写字母。
选项D调用函数isalpha()首先判断kk是否为字母,接着通过与运算(kk<=91)来判断kk是否是大写字母;而选项B中或语句首先判断(kk>=‘A’),假如为真时,就不进行(kk>=‘Z’)的判断,直接进入非运算,故不能正确判断kk是否为大写字母,故选B。
4.答案:
D
解析:
本题考查自增运算符“++”、逻辑运算符“&&”和逻辑或运算符“||”。
自增运算符“++”,出现在变量之前(如题中的++n),表示是变量的值加1,再使用变量的值进行运算出现在变量之后(如题中的n++),表示先使变量的值进行预算,再使用变量的值加1.当逻辑运算符“&&”两边的运算符对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”左边的运算对象为真时,其值就为真,不用计算就为真,不用计算其右边的运算对象的值。
所以根据运算符的优先级,题中应先计算内层括号中的值。
++j是想自加后运算,因此运算是j的值等于3,所以表达式++j=3成立,即表达式的值为1;由于1与任何数进行或(||)运算,结果都是1,因此k=3;最后计算“&&”之前的表达式,i++s先运算后自加,因此运算时i为1,所以i++==1成立,自加1后i=2。
If语句的条件为真即“1”,所以输出i、j、k的值分别为233.
5.答案:
10200
解析:
赋值运算符、算数运算符、关系运算符和逻辑运算符之间从高到低的运算次序为:
算术运算符、关系云运算符、&&(逻辑‘与’)、||(逻辑‘或’)、赋值运算符。
所以在程序中,由于a=10、b=20,所以c=(10%20<1)||(10/20>1)=(0<1)||(10>1)=0||0=0。
6.答案:
A
解析:
在选项A中,因为!
a=0,所以表达式!
a==1的值为0,又因为逻辑与运算符“&&”两边表达式只要一个等于0,则整个表达式为0,所以选项A正确。
在选项B中,关系表达式a
c为假,而表达式(a
c||1为真,所以整个表达式的值为真。
选项C中,a&&b的结果为真。
在选项D中a||(b+b)&&(c-a)的结果为真。
7.答案:
(a+b>c)&&(a+c>b)&&(b+c>a)
解析:
构成三角形的条件是两边之和大于第三边。
所以要用(&&)与运算符连接3个条
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 基础知识