第1章C语言基础知识汇总.docx
- 文档编号:15000383
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:22
- 大小:187.36KB
第1章C语言基础知识汇总.docx
《第1章C语言基础知识汇总.docx》由会员分享,可在线阅读,更多相关《第1章C语言基础知识汇总.docx(22页珍藏版)》请在冰点文库上搜索。
第1章C语言基础知识汇总
第一章C语言基础知识
、选择题
1.算法具有五个特性,以下选项中不属于算法特性的是
A)有穷性B)简洁性C)可行性D)确定性
【答案】B
【解析】本题考查的是算法的特性。
一个算法应当具有以下5个特性:
有穷性;确定性;可行性;有零个或多个输入:
由一个或多个输出。
简洁性不属于这5个特性,所以本题应该选择B
2.以下叙述中错误的是°
A)用户所定义的标识符允许使用矢键字
B)用户所定义的标识符应尽量做到“见名知意”C用户所定义的标识符必须以字母或下划线开头
)用户定义的标识符中,大、小写字母代表不同标识
D、
'【答案】A
【解析】本题考查C语言中标识符的概念。
用用户标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,并且不能与C语言尖键字相同。
所以本题应该选择A
3.以下4组用户定义标识符中,全部合法的一组是()°
A)_mainB)IfC)txtencliRfeMnaxREAL
k_2
sinturbo3COM001
【答案】A
【解析】本题考核的知识点是C语言中的标识符命名规则。
标识符是以字母或下划线开头,由字母、数字或下划线组
成的字符序列(例如」max含非法字符・),并且用户标识符不能与C语言中的32个矢键字同名(例如,int是尖键字,不是合法的用户标识符)。
选项B中・max不是字母、数字或下划线组成的字符序列,故选项B不正确;选项C中3COM
不是由字母或下划线开头'故选项c不正确;选项D中int为C语言中的矢键字,故选项D不正确;选项A中全部为
本题考查的知识点是:
営量分为整型和实型两类。
其中,整型有十进制、八进制和十六进制三种表示法;实型有小数形式和指数形式两
O开头,后面跟由0〜7组成的八进制数组成;十六进
【答窣】
数舞
需卡示法。
十进制和书面使用的数据表示一样;八进制是以数字
e(或E)噺
制是以Ox(或0X)幵头,后面跟由0〜9与A〜F(或a〜f)组成的十六赠鹼&翳字和小数点组成’数部分或小数部分如果为°可省略’但不能同时省略°指数形式由小数形式或十进制形式开头’后面跟一个十进制整数组成。
选项跟
指数形式,但e后面所跟的不是釋,,賜閤毎蓊脣但后面跟的&不在0~7之内-所以非法;选项c中,4e1.5是Df,
5.
10,000中不能有“,”,所以非法。
故本题应该选择
以下叙述中正确的是()
A)C语言的源程序不必通过编译就可以直接运行
B)C语言中的每条可执行语句最终都将被转换成二进制的机器
指令
C)c源程序经编译形成的二进制代码可以直接运行
D)C语言中的函数不可以单独进行编译
【答案】B
【解析】本题考核的知识点是C程序从编写到生成可执行文件的步骤。
C语言采用编译方式将源程序转换为二进制的
目标代码,编写好一个C程序到完成运行一般经过以下几个步骤:
编辑;编译,就是将已经编辑好的源程序翻译成二
进制的目标代码,经编译后的得到的二进制代码还不能直接执行,因为每一个模块往往是单独编译的,必须把经过编译的各个模块的目标代码与系统提供的标准模块链接后才能运行:
链接,将各模块的二进制目标代码与系统标准模块经链接处理后,得到具有绝对地址的可执行文件,它是计算机能直接执行的文件:
执行,执行一个经过编译和链接的可执行的目标文件。
由以上定义可知,选项A)C)D均不正确。
所以,4个选项中选项B符合题意。
6.下列叙述中正确的是
A)每个C程序文件中都必须要一个main()®数
B)在C程序中main()函数的位置是固定
CC程序中所有函数之间都可以相互调用,与函数所在位置无尖
D)在C程序的函数中不能定义另一个函数
【答案】D
【解析】本题考查的知识点是函数。
每一个c程序中都必须有且只有一个main()函数但一个C程序可以由多个程序
文件组成,所以并非每个c程序文件中都必须要有一个main()函数,故选项A不正确。
c语言并未对main()函数的位
置作要求,因此选项B也是错误的。
C语言中,在一个函数被调用之前一定要先声明该函数,所以定义靠后的函数若在前面没有声明该函数的原型,是不能被定义靠前的函数所调用的,即除数函数数之间的调用并非与函数所在位置无矢,所以选项C不正确。
故本题的正确答案应该为选项Db
7.下列叙述中错误的是()
A)计算机不能直接执行用C语言编写的源程序
B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件
C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件
D)后缀为.obj和.exe的二进制文件都可以直接运行
【答案】D
【解析】本题考查的知识点是:
c语言的基本概念。
C语言源程序经过C语言编译程序编译后,会生成一个二进制文件,后缀为接程・0bj,称为目标文件。
然后还要经过“连序”,把此・obj文件与c语言提供的各种库函数连接起来,生成后缀为中只有选项.exe的可执行文件,才能够运行。
故本题D是错误的。
8.以下叙述中错误的是()
A)C语言是一种结构化程序设计语言
B)结构化程序有顺序、分支、循环三种基本结构组成
C)使用三种基本结构构成的程序只能解决简单问题
D)结构化程序设计提倡模块化的设计方法
【答案】c
【解析】本题考查的知识点是:
结构化程序设计。
结构化程序由3种基本结构组成:
顺序结构、选择结构和循环结构。
已经得到证明,由3种基本结构组成的算法结构
可以解决任何复杂的问题。
故本题中选项c是错误的。
9.用C语言编写的代码程序
【答案】B
【解析】本题考核的知识点是C程序的基本概念。
C语言一种咼级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为.OBJ的二进制文件(称为目标文件),晟后还要由称为“链接程序”(Link)的软件,把此.OBJ文件与c
语言提供的各种库函数连接在一起,生成一个后缀-EXE的可执行文件。
显然c语言不能立即执行,故选项A错误;根
据以上定义。
选项C和选项D错误,所以,4个选项中选项B符合题意。
10.
结构化程序由三种基本结构组成,三种基本结构组成的算法
A)可以完成任何复杂的任务
B)只能完成部分复杂的任务
C)只能完成符合结构化的任务
【答案】A
【解析】本题考核的知识点是
D)只能完成一些简单的任务
c程序的二种基本结构。
C程序由二种基本的结构组成,分别为顺序结构、选择结
构和循环结构,这三种结构可以组成任何复杂的C程序,即可以完成任何复杂的任务,故选项B)选项c和选项D都不
正确。
所以,4个选项中选项
11.C语言源程序名的后缀是
A符合题意。
)
A).exeB).CC).obj
D).cp
•obj;再将目标程序文件链接后得到可执行文件的后
C语言源程序的后缀为.C;经过编译得到的目标程序文件的后缀为
缀为验证・exe。
故本题应该选择Bo
12.以下叙述中错误的是
A)C语句必须以分号结束
B)复合语句在语法上被看作一条语句
C)空语句出现在任何位置都不会影响程序运行
D、赋値表达此末尾加分号就构成赋值涪句
【答案】C
【解析】本题考查了C语言中语句的一些概念。
C语句必须以分号结束,选项A是正确的。
复合语句在语法上被看作
一条语句,选项B也是正确的。
空语句也算是一条语句,因此如果空语句出现在条件或者循环语句中,一样会被当作条件子句或
编译器能通过编译,但f在初始化之前是一个未知的值,用未知值来初始化也还是未知值,这是不可取的。
选项D的
初始值是一个非法常量,因为实型常量指数形式的指数部分必须为整数,这里的2.5非法。
14.有以下程序
main()
{chara1=M\32=01*;
printf(”%c\n“,(a1,a2)):
}
以下叙述中正确的是
A)程序输出大写字母MB)程序输出小写字母
C)格式说明符不足,编译出错D)程序运行时产生出错信息
【解析】本题考核的知识点是C语言中一些运算符的简单应用。
选项A中不是合法的赋值语句,将最右边的第一个赋
值表达式加括号即为a二b+(b=b++)才正确,故选项A不正确;选项B中运算符“%”的对象必须是整型,而在选项中(int)a+b为double型,故选项B不正确;选项a,b都为double“=”应该改为故选项D不正确。
所以,4个选项中选项c符合题意。
20.有以下程序
main()
{intm=3,n=4,x;
x=・m++;
x=x+8/++n;
printf(”%d\n”,x);
}
程序运行后的输出结果是
A)3B)5C)-1D)-2
【答案】D
【解析】本题考核的知识点是运算符的优先级。
主函数中首先定义了整型变量mn和X,并给m和n赋初值为3和4,
接着执行两条赋值语句,第一条x=-m++等价于X=(m++),其值即为・3,第二条x=x+8/++n等价于x=+8/(++n),即为x=-3+8/5=-2,因此最后输出x的值为・2。
所以,4个选项中选项D符合题意。
21.有以下程序
main()
{chara='a;b;
print(”%c,”,++a);
printf(”%c\n”,b=a++);
}
程序运行后的输出结果是
A)b,bB)b,cC)a,bD)a,c
【答案】A
【解析】本题考核的知识点是运算符++的用法。
程序中的第一个输出语句输出表达式++a的值,该++a是在使用a之前,
先使a的值加1,即为a加1为字符b,此时a的值为b,所以第一个输出语句输出的值为b,第二个输出语句中输岀
的b的值,这时b的值为表达式a++的值,a++是在使用a之后(此时a的值为b,所以赋给b的值为b),使a的值加一,因此第二个输出的值也为b。
所以,4个选项中选项A符合题意。
22.有以下程序
main()
{chara,b,c,d;
seanf(”%c,%c,%d,%d",&a,&b,&c,&d);
printf("c,%c,%c,%c\n",a,b,c,d);
}
若运行时从键盘上输入:
6,5,65,66。
则输出结果是
A)6,5,A,BB)6,5,65,66C)6,5,6,5D)6,5,6,6
【答案】A
【解析】本题考核的知识点是字符表示。
主函数中首先定义了4个字符变量A)B)C)d,然后通过scanf()函数输入
A)B)C)d。
输入中a和b是按字符格式c输入的,c和d是按整型符号d输入的。
在看下面的printf()函数中,要求A)B)C)d都按字符输出,故a和b原样输出为6、5、c和d将把与其ASCII码对应的字符输出,65和66的ASCII码对应字符A和B,故最后的输出为“6,5,A,B”所以,4个选项中选项A符合题意。
23.以下矢于long、int和short类型数据占用内存大小的叙述中正确的是()
A)均占4个字节B)根据数据的大小来决定所占内存的字节数由C语
C)由用户自己定义D)言编译系统决定
【答案】D
【解析】在C语言的标准short占2个字节、long占4个字节,但int的大小和编译系统相矢。
例如在TurboC2.0
$;int占2个字节,但在VisualC++6.0(VC6可以用做c语言编译器)中占4个字节。
故本题应该选择D。
24.以下不合法的字符常量是
D)'\xcc‘
A)'\018‘B)'V
【答案】A
【解析】本题考查的知识点是字符常量中的转义字符。
转义字符是以一个“\”开头的字符序列,它只代表一个字符。
在选项A中,“”后跟着三个数字‘是表示一个件昵讥籬曜怖这左逾数锄翻嫌濒爛S蹒閒选醍八进
C表示的是一个反斜杆;选项
25.表达式3.6-5/2+1.2+5%2的值是
A中出现了数字8所以是不合法的。
选项B是表示一个双引号的转义字符
D表示一个ASCII值为十六进制值CC的字符。
故应该选择A。
A)4.3B)4.8C)3.3D)3.8
【答案】D
【解析】本题考查的知识点是算术表达式的运算算术表达式是由+、、水、/和%五种算术运算符所组成的表达式,
其中*、/和%的优先级要高于+和一,同级别的运算符从左至右运算。
所以本题首促和算%2,虽然我们都知而且是截尾取整,道5/2的结果应该是2.5,但C语言中规定了两个整数相除的结果为整数。
所以5/2的结果是2;5%
2表示的是5除以2所得的余数,其结果为1。
计算完后,表达式变为3.6-2+1.2+1,从左至右计算不难得出结果为
3.8,故应该选择Do
26.以下四个程序中,完全正确的是
A)#include
main();
{/*programming*/
printf("programming!
\n"):
}
B)#inClude
main()
{/*/programming/*/
printf("programming!
\nM);}
C)#inClude
main()
{/*/*programming*/*/
printf("programming!
\n");}
D)include
main()
/*programming*/
printf("programming!
\n");}
【答案】B
【解析沐题考查了一些书写代码时经常容易犯的错误。
选项A在定义main()函数时,函数头后面多了一个分号,故
选项A不正确;C语言中的注释是不能嵌套的,故选项C不正确;选项D在使用预编译指令#include时漏掉了#号,所以也是错误的。
故应该选择B。
27.以下叙述中错误的是
A)C程序中的#/nelude和#<^打2行均不是C语句
B)除逗号运算符外,赋值运算符的优先级最低
C)C程序中,j++;是赋值语句
D)c程序中,+、
答案】D
【解析】%是求余运算符,
/、%号是算术运算符,可用于整型和实型数的运算
只能用于整型数的运算,故答案D是错误
的。
帶.以卜叙述屮正确的是C源程序的起始位置
B)解%辔1命仃艇骗令行都以“#”幵头
C)每个C程序必须在开头包含预处理命令行:
#include
D)C语言的预处理不能实现宏定义和条件编译的功能
答案】B
【解析】预处理命令行可以出现在C源程序的任何位置.故选项A不正确。
#inelude〈stdio.h>预处理命令行的意思
stdio.h头文件中定义的函数
C不正确。
C提供的预处理功能主要有:
是将stdio.h头文件插入源程序中该行命令所在的位置,表示我们将在后续行中用到
或类型,若程序中没有用到这些函数或类型就可以不用包含此头文件,故选项宏定义、文件包含和条件编译三种功能。
故选项D不正确。
在C语言中,预处理命令行都以“#”开头,故应该选择B。
29.下列叙述中错误的是
A)—个C语言程序只能实现一种算法
B)C程序可以由多个程序文件组成
C)C程序可以由一个或多个函数组成
D)—个C函数可以单独作为一个C程序文件存在
【答案】A
【解析】本题考查c语言的特点。
一个c语言程序可以实现多种算法,因此本题应该A。
30.下面程序的输出结果是
#include
main()
{inti=010,j=10;
printf”%d,%d”,i卜);}
A)11,10B)9,10C)010,9D)1°‘9
【答案】B
[解析】程序中i的值用八进制表示(十进制为8),i是在变量使用前自身先加1,而卜・是在变量使用后自身减
31若有定义:
Ea=8,b=5,c;执行语句c=a/b*0.4;后,c的值为1°
A)1.4B)1C)2.0D)2
【答案】B【解析】在表达式中根据运算的结合性和运算符的优先级,首
先计算的是整型变量所以要将1.4转换为整型,即舍弃小数位(c的值变a/b(8/5=1),再将1.4赋值给c,由于c为
为1)。
32.C语言程序的基本单位是
A)程序行【答案】CB)语句C)函数D)字符
【解析】C语言程序的基本单位是函数。
33.C语言中最简单的数据类型包括
B)整型、实型、字符型
D)整型、实型、逻辑型、字符型
字符型
D)集合型
A)整型、实型、逻辑型
C)整型、字符型、逻辑型
【答案】
【解析】C语言三种基本数据类型是整型、实型、
34.以下选顼中属于C语言的数据类型是
A)复数型B)逻辑型C)双精度型【答案】C
【解析】C语言没有逻辑型和集合型,更不会有复数
型,所以只有C正确
35.下列叙述中正确的是
A)C语言中既有逻辑类型也有集合类型C)Ci错审有语言中没有逻辑类型但有集合类型逻辑类型但没有集合类型D)C语言中既没有逻辑类型也没有集合类型
【答案】D
【解析】C语言中没有逻辑类型和集合类型。
36.C语言提供的合法的数据类型矢键字是
A)DoubleB)shortC)integerD)Char
【答案】B
【解析】C语言矢键字必须小写,所以A和D都是错误的integer不是C语言矢键字,所以应该选择B
37.在使用程序流程图来表示算法时,菱形用来表示
A)输入与输出B)子程序C判断分支D)循环边界
【答案】C
【解析】美国国家标准化协会ANSI规定了一些常用的流程图符号,其中椭圆框表示起止框,方框表示处理框,菱形框表示判断分支,箭头表示流程线。
38.与十进制数200等值的十六进制数为
A)A8B)A4C)C8D)C4【答案】C。
【解析】本题考查的
是进制之间的转换。
用十-十六进制转换法,除16,由下而上取余法。
16200
16C
39.有以下程序
main()
{intm=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d\n,',n++,++m);
}
程序运行后的输出结果是
A)12353514B)123535130)12343514D)12343513
【答案】A。
【解析】本题考查的是变量的自加运算。
++在变量前和变量后的唯一区别就在于在执行”++变量”所在的语句时,是先将变量加1再执行它所在语句还是先执行它所在的语句再使变量加1,当++在变量后时,也就是”变量++“,那就是先将变量值代入表达式运算后再使变量
加1;而”++变量”是先使变量加1,再把加1后的结果放入表达式进行运算。
这两种情况,在执行完变量所在的语句后,
它们在内存中的值都是加过1之后的值了。
本题执行“printf(”%d%d“,m++,++□);”后,输出的是m和n+1的值1235,接着使m+1=13,执行
,printff,%d%d\n,,,n++,++m);n输出n和m+1的值3514.
40.有以下程序
main()
{inta,b,d=25;a=d/10%9;
b=a&&(-1);
printfC'%d,%d\rr,a,b);
}
程序运行后的输出结果是
A)6,1B)2,1C)6,0D)2,0
【答案】Bo
【解析】本题考查的是算术运算符。
如果算术运算符”厂中参与运算的变量都是整型变量,则叨表示整除运算八%”表示求余。
本题中”a=d/10%9;“的
值为25/10%9=2;nb=a&&(-1)r为2&&(・1)=1(注意:
-1表示真,只有0才表示假),所以a,b的值分别为2,1.
41•设inta=12,则执行完语句a+=a-=a*a后,a的值是
A)552B)264C)144D)-264
【答案】Do
【解析】本题的考查点是赋值表达式的求解。
第一a*a=144;(此时a=12)
步:
第a-=144相当于a=a-144,a=a-144=-132;(此时a=-132)a+=a相当于a=a+a,a=a+a=-264;
二步:
所以该表达式最-264。
后的值应当为
42.在C语言中,要求运算数必须是整型的运算符是
A)%B)/C) 【答案】Ao 【解析】本题的考查点是运算符。 题目的四个选项中,但)(C)(D)都不要求运算数必须为整数,参与模运算(%)的运算数必须是整型数据。 43.设有语句chara=*\072';»则变量a A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法 【答案】Ao 【解析】本题考查的是字符型数据。 *\072-表示的是ASCII码等于72的那个字符,即为”: “,所以在字符变量中存储的只是”: ”这一个字符。 44.要把高级语言编写的源程序转换为目标程序,需要使用 A)编辑程序B)驱动程序C)诊断程序D)编译程序 【答案】D 【解析】编绎程序的作用就是将已编辑好的源程序翻译成二进制的目标代码。 在编译时,还要对源程序逬行检查,如发现错误,则在屏幕上显示出错信息,此时应重新进入编辑状态,对源程序进行修改后再重新编译,直到通过编译为止。 不过值得注意的是: 经编译得到的二进制代码还不能直接参与执行,因为每一个模块往往是单独编译的,必须把经过编译的各个模块的目标代码与系统提供的标准模块连接后才能运行。 45.英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为 A)50B)66C)52D)68 【答案】Do 【解析】本题主要考的是英文大小写字母间ASCII码值的差异,只要记住英文大写字母比其对应的英文小写字母的 ASCII码值小320 46.以下选项中不属于C语言的类型是 A)signedshortintB)unsignedcharC)signedlongD)longshort 【答案】Do 【解析】C语言中归纳起来,基本类型数据有以下几种: [singed]char;unsignedchar; [signed]short[int];unsignedshort[int]; [signed]Iong[int];unsignedlong[int];float; double; longdouble; 47.在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是 A)a=20000+20000B)a=4000*10C)a=30000+10000D)a=4000L*10L 【答案】Do 【解析】除D之外的选项的右边的表达式都超过了16位带符号整数的范围(32767)O 48.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量非VI01是 A)字符AB)字符aC)字符eD)法的常量 【答案】Ao 【解析】本题的考查点是字符与ASCII码的转换° 八进制101转换为10进制即为65,而字母A的ASCII码是65,所以用八进制表示的字符常量M01*>Ao 49. A)它们的运算对象可以是任何变量和常量 B)它们的运算对象可以是 C)它们的运算对象可以是 D)它们的运
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 基础知识 汇总