C语言试题学习考试大全历年真题23.docx
- 文档编号:9242108
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:25
- 大小:37.84KB
C语言试题学习考试大全历年真题23.docx
《C语言试题学习考试大全历年真题23.docx》由会员分享,可在线阅读,更多相关《C语言试题学习考试大全历年真题23.docx(25页珍藏版)》请在冰豆网上搜索。
C语言试题学习考试大全历年真题23
第一部分C语言基础知识
1.C程序
高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标程序”,而“编译程序”是指可以把源程序转换成目标程序的软件。
由C语言构成的指令序列称为C源程序,源程序文件的后缀名为.C或.CPP。
源程序经过C编译程序编译后生成后缀为.OBJ的二进制文件,然后由连接程序,把OBJ文件与C语言提供的各种库函数连接起来,生成后缀为“.EXE”的可执行文件。
2.结构化程序
结构化程序的三种结构:
顺序结构,循环结构(while、do-while、for),选择结构(if、if-else、if-else-if、switch)
结构化程序设计的思想:
模块化的设计方法。
3.主函数(main函数)
每个C语言程序中main函数有且只有一个。
程序的执行从主函数开始,到程序执行完后,从主函数结束。
(源程序由主函数和若干个子函数组成,而主函数在源程序的位置可放在任意位置。
)
4.函数的组成
C源程序是由函数组成的。
函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能。
C语言提供了极为丰富的库函数(三百多个库函数),如果要使用库函数必须在程序前面加上#include”库函数名.h”的头文件,头文件一般有stdio.h、math.h、stdlib.h、string.h、process.h、time.h等等。
还允许用户建立自己定义的函数。
定义一个函数时,函数由函数首部和函数体组成。
函数定义的一般格式:
类型说明符函数名(形参列表)/*函数首部的定义*/
{
说明部分;
执行部分;/*函数体*/
}
函数体通常包括说明部分和执行部分,说明部分和执行部分都由若干条语句组成。
C语言的语句由表达式加分号组成,也可以说每条语句都必须以分号结尾。
在函数定义中不可以再定义函数。
即不可以嵌套定义函数,但可以嵌套调用函数。
在C语言中可从不同的角度对函数分类。
从函数定义的角度看,函数可分为库函数和用户定义函数两种。
1)库函数:
由C系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。
2)用户定义函数:
由用户按需要写的函数。
对于用户自定义函数,不仅要在程序中定义函数本身,而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。
从函数返回值来看,函数可分为有返回值函数和无返回值函数两种。
从参数角度来看,函数可分为无参函数和有参函数两种。
5.编译预处理
编译预处理不是C语言的一部分,不占运行时间,不加分号。
6.程序中的注释
C语言的注释符是以“/*”开头并以“*/”结尾的串。
在“/*”和“*/”之间的即为注释。
程序编译时,不对注释作任何处理。
注释可出现在程序中的任何位置。
注释用来向用户提示或解释程序的意义。
编写注释的规则
(1)/*和*/必须成对出现;
(2)/*和*/之间的内容为注释,可以用中文,英文,可以出现在任何位置;
(3)不可以再嵌套,也不可能在/和*号之间加内容。
7.源程序书写格式
一行可以写几个语句,一个语句也可以分写在多行上;每个语句和数据定义的最后必须由一个分号结束;
8.C语言的32个关键字
序号
关键字
含义
1
short
声明短整型变量或函数
2
int
声明整型变量或函数
3
long
声明长整型变量或函数
4
float
声明浮点型变量或函数
5
double
声明双精度变量或函数
6
signed
声明有符号类型变量或函数
7
unsigned
声明无符号类型变量或函数
8
char
声明字符型变量或函数
9
struct
声明结构体类型
10
enum
声明枚举类型
11
union
声明共用体类型
12
auto
声明自动存储类型
13
register
声明寄存器存储类型
14
static
声明静态存储类型
15
extern
声明外部存储类型
16
const
声明只读变量
17
volatile
说明变量在程序执行中随时可能发生变化
18
return
函数返回语句(可以带值,也可不带值)
19
break
跳出当前循环或switch结构
20
continue
结束当前循环,开始下一轮循环
21
for
循环语句
22
do
与while构成循环语句
23
while
循环语句
24
switch
多选择语句
25
case
与switch构成多选择语句
26
default
与switch构成多选择语句
27
goto
无条件跳转语句
28
if
选择语句
29
else
与if构成选择条件语句
30
void
声明函数无返回值或声明无类型指针
31
typedef
自定义类型
32
sizeof
求字节数运算符
注意:
在C语言中,关键字都是小写的。
9.标识符
所谓标识符(用户标识符)就是C语言中的变量名、函数名、数组名、文件名、类型名等。
C语言合法标识符的命名规则,由字母、数字、下划线组成,且必须是由字母或下划线开头的非C语言关键字。
标识符严格区分大小写;
不能用关键字。
注意:
main、define、scanf、printf都不是关键字都可以做为用户标识符号。
而If也可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
10.整型数据
整型常数
根据整型数据所占的位数,可以计算一个整型数据能表示的数据的取值范围。
通常情况下的常整数按2个字节存储,若按长整型处理,需在数的末尾加小写字母l或大写字母L。
整数的存储是以补码形式存储(原码、反码、补码);
第0位是符号位,如果符号位为0,表示是正整数,从0到15位全为1时表示的数最大。
则16bit能表示的最大整数是215–1,即32767。
最小的整数是-32768
整型常量(数)的分类
十进制表示
一般表示为正整数
八进制表示以数字0开头
十六进制表示以数字0x开头
注意:
如果整型常量超过机器所能表示的范围,则会发生溢出,而在C语言中的整数溢出并不会使程序出错,而是得到一个非正确的值。
整型变量
按照整型变量所占的二进制位数来分类:
short(短整型)2字节
int(普通整型)4字节
long(长整型)4字节
根据整型变量是否带符号位来分类:
不带符号的整型变量(无符号用关键字unsigned表示,unsignedshort、unsignedintunsignedlong)
带符号的整型变量
11.实型数据
实型常量(数)
浮点小数形式(不能省略小数点,但小数点前后若为零时可省略零)。
如下列实数都是合法的,210.352.345.34556.
指数形式常用形式,
。
e(或E)两边都至少有一位数,b必须为整数(范围为1到3位的整数),可以为负或正,正号可以省略。
如0.345E+2、1E-12为合法的指数形式,而e-2、E2、1.3E1.3、1.3E、1.3E9999为非法指数形式。
浮点常量在存储时按double类型存储,即占64位(bit)。
浮点常量也象整型常量一样,如果浮点常量超过机器所能表示的范围,则会发生溢出。
浮点溢出也不会使程序出错,而是得到一个非正确的值。
实型变量
单精度浮点数(float)4字节
双精度浮点数(double)8字节
注意:
不管是单精度数还是双精度数,在计算机中存放都以双精度数存放。
输出时小数点后都只能按四舍五入保留6位小数。
12.字符型数据
在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式类似。
一个字符变量只能存储一个字符。
标准ASCII编码是把每个字符与0~127的数值联系起来,用7位二进制表示,再将最高位置0,构成一个字节。
在ASCII编码表中,‘A’用数值65表示,‘a’用数值97表示‘0’用数值48表示。
空格用数值32表示。
C语言使字符型数据和整型数据之间可以通用。
一个字符数据既可以以字符形式输出,也可以以整数形式输出。
以字符形式输出时,需要先将存储单元中的ASCII码转换成相应字符,然后输出。
以整数形式输出时,直接将ASCII码作为整数输出。
也可以对字符数据进行算术运算,此时要相当于对它们的ASCII码进行算术运算。
值的注意的是,字符数据只占一个字节,它只能存放0~255之间的整数。
字符常量用单引号将一个字符括起来,如’A’、’a’、’\101’、’\x41’
13.转义字符
转义字符以反斜线\开头,后跟一个或几个字符。
常用的转义字符及其含义
转义字符
含义
ASCII码/值
\n
换行
10
\t
横向跳到下一制表位置
9
\b
退格
8
\r
回车
13
\f
走纸换页
12
\\
反斜线符\
92
\'
单引号符
39
\"
双引号符
34
\a
鸣铃
7
\ddd
1~3位八进制数所代表的字符
0ddd
\xhh
1~2位十六进制数所代表的字符
0xhh
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。
表中的'\ddd'和'\xhh'正是为此而提出的。
ddd和hh分别为八进制和十六进制的ASCII代码。
如'\101'表示字母A,'\102'表示字母B,'\134'表示反斜线,'\XOA'表示换行等。
要点:
'a'是字符占一个字节,"a"是字符串占两个字节(含有一个结束符号)。
14.强制类型转换
类型转换包括自动类型转换和强制类型转换。
自动类型转换,不同类型的数据进行运算时,系统会自动将运算优先级别低的转换成级别高的,结果和运算级别高的数据类型一样。
在赋值表达式中赋值运算符两边类型不一样时,系统会自动将右侧表达式的类型转换成左侧的变量类型,然后再赋值。
强制类型转换在运算时强制转换为所需要的数据类型,但不改变原来数据的类型。
其一般形式为:
(类型说明符)(表达式)
其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
注意(int)(a+b)和(int)a+b的区别。
前者是把a+b强制转换整型,后都是把a的类型强制转换为整型再加b。
15.运算符与表达式
运算符的优先级与结合性,以及C语言合法表达式的书写与表达式的求值(所有表达式都的值)。
知识要点:
(1)赋值表达式:
赋值表达式的赋值号左边为变量。
(2)算术表达式:
“%”:
要求参与运算的量均为整型。
求余运算的结果等于两数相除后的余数。
“/”:
若两边操作数都是整型,其结果必为整型。
(3)自加、自减表达式:
有定义inta=5;表达式++a值为6,表达式a++值为5;
运算原则:
++ii自增1,其表达式++i的值为i自增后的值。
--ii自减1,其表达式--i的值为i自减后的值。
i++i自增1,其表达式i++的值为i自增前的值。
i--i自减1,其表达式i--的值为i自减前的值。
(4)逗号表达式:
优先级别最低;表达式的数值逗号最右边的那个表达式的数值。
(5)关系表达式:
关系表达式的结果为1或0;
(6)逻辑表达式:
逻辑表达式的结果为1或0;
逻辑表达式的求值规则如下:
对于逻辑与运算,如果第一个操作量的值为“假”,系统不再判定或求解第二操作量。
对于逻辑或运算,如果第一个操作量的值为“真”,系统不再判定或求解第二操作量。
在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。
(7)位运算表达式:
几乎所有的位运算的运算原则先把十进制转换成二进制,再将二进制转换十进制。
在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。
第二章输入输出函数
在C语言中,所有的数据输入/输出都是由库函数完成的。
在使用C语言库函数时,要用预编译命令#include将有关“头文件”包括到源文件中。
标准输入输出库函数时要用到“stdio.h”文件(stdio是standardinput&outupt)因此源文件开头应有以下预编译命令:
#include
1)printf函数的格式:
printf(“格式控制字符串”,输出表列)
格式字符说明如下:
格式字符
意义
d
以十进制形式输出带符号整数(正数不输出符号)
md或-md
当列宽有余时空格加左或右,当列宽不够不起作用
ld
以十进制形式输出带符号长整数
o
以八进制形式输出无符号整数(不输出前缀0)
x,X
以十六进制形式输出无符号整数(不输出前缀Ox)
u
以十进制形式输出无符号整数
flf
以小数形式输出单、双精度实数
m.nf
以小数形式输出,共计m列,其中小数位数占n列,当超过共计时m不起作用。
e,E
以指数形式输出单、双精度实数
g,G
以%f或%e中较短的输出宽度输出单、双精度实数
c
输出单个字符
s
输出字符串
要点:
格式说明个数与输出项个数应一一对应,若格式说明个数与输出项个数不同时,格式说明的个数大于输出项的个数时,输出项正常输出后其后会出现随机信息。
当格式说明的个数小于输出项的个数时,只输出与格式说明个数相同的输出项的信息,其后的不输出。
输出项可以是常量、变量、表达式。
2)scanf函数的格式:
scanf(“格式控制字符串”,地址表列);
格式符和意义如下表所示。
格式
字符意义
d
输入十进制整数
o
输入八进制整数
x
输入十六进制整数
u
输入无符号十进制整数
f或e
输入实型数(用小数形式或指数形式)
c
输入单个字符
s
输入字符串
修饰符
含义
*
对应的数据输入后不赋给相应的变量,即跳过该输入值
如:
scanf("%d%*d%d",&a,&b);
当输入为:
123时,把1赋予a,2被跳过,3赋予b。
用十进制整数可以指定输入的宽度(即字符数)。
例如:
scanf("%4d%4d",&a,&b);输入:
1234567890将1234赋予a,5678赋予b,其余部分被截去。
使用scanf函数还必须注意以下几点:
(1)scanf函数中没有精度控制,如:
scanf("%5.2f",&a);是非法的。
不能企图用此语句输入小数为2位的实数。
(2)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。
C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
(3)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
3)putchar函数,只输出一个字符
putchar函数是字符输出函数,其功能是在显示器上输出单个字符。
其一般形式为:
putchar(字符变量)或putchar(字符常量)
例如:
putchar('A');(输出大写字母A)putchar(x);(输出字符变量x的值)
putchar(‘\101’);(也是输出字符A)putchar('\n');(换行),
4)getchar()函数
getchar函数的功能是从键盘上输入一个字符。
其一般形式为:
getchar();
通常把输入的字符赋予一个字符变量,构成赋值语句,如:
charc;c=getchar();
5)puts()函数,输出字符串
puts()函数的格式:
puts(字符串表达式)
功能:
将一个字符串输出到终端(显示器),并换行。
6)gets()函数,输入字符串
gets()函数的格式:
gets(字符串首地址)
功能:
从终端(键盘)输入一个字符串到字符数组。
该函数返回值是字符数组的首地址。
第三部分结构化程序结构
1.结构化程序设计的三种结构:
顺序结构、选择结构和循环结构。
2.逻辑值:
c语言中是用非0表示逻辑真值,用0表示逻辑假值。
3.选择结构分为:
单分支结构(if)、双分支结构(if-else)和多分支结构(if-else-if),用switch实现多分支结构。
3.if与else的匹配原则:
else与其前最近的并且末配对if相匹配。
4.条件表达式
表达式1?
表达式2:
表达式3
其求值规则为:
如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。
条件运算符的结合方向是自右至左。
例如:
a>b?
a:
c>d?
c:
d应理解为a>b?
a:
(c>d?
c:
d)
5.选择结构与条件表达式的相互转换:
6.switch语句:
C语言提供了另一种用于多分支选择的switch语句,其一般形式为:
switch(表达式)该表达式只能是整形或字符型表达式,若为实型,将其自动转换。
{
case常量表达式1:
语句1;break;
case常量表达式2:
语句2;break;
…
case常量表达式n:
语句n;break;
default:
语句n+1;
}
执行过程:
计算表达式的值。
并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,如果不加break语句则不再进行判断,继续执行后面所有case后的语句。
如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
7.三种循环结构:
(1)for(表达式1;表达式2;表达式3);
while(条件表达式)
do-while(条件表达式)
(2)循环执行的条件表达式2或条件表达式的值为非零。
(3)编写程序的时要注意,不能构成死循环。
(4)三种循环可以相互转换。
(5)嵌套循环
8.break和continue
(1)break:
用于switch结构和循环结构,中断所在的结构。
(2)continue:
只能用于循环结构。
中止本次循环,继续下一次循环。
就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件是否成立,进行新一轮的循环。
第四部分函数
函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能。
用户自定义函数的正确定义以及正确调用。
在C程序中,一个函数的定义可以放在任意位置;不能在函数的内部再定义函数;定义一个函数包含的因素:
函数的类型,函数名,函数的参数;
1.函数的定义
无参函数的定义形式
函数返回值类型函数名()
{
声明部分;
语句;
}
有参函数的定义形式
函数返回值类型函数名(形式参数表列)
{
声明部分;
语句;
}
在函数定义时,函数返回值类型若省略,则视为int类型函数
2.函数的返回值
函数的值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。
(1)函数的值只能通过return语句返回主调函数。
return语句的一般形式为:
return表达式;或return(表达式);
在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。
(2)函数值的类型和函数定义中函数的类型应保持一致。
如果两者不一致,则以函数类型为准,自动进行类型转换。
(3)如函数值为整型,在函数定义时可以省去类型说明。
(4)不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。
3.函数调用
C语言中,函数调用有两种形式:
(1)无返回值函数调用
函数名(实际参数表);
(2)有返回值函数调用,通常情况用在赋值表达式,输出项等等。
C=函数名(实际参数表);
4.形式参数(形参)和实际参数(实参)
形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。
实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
形参和实参的功能是作数据传送。
函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。
函数的形参和实参具有以下特点:
(1)形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。
因此,形参只有在函数内部有效。
函数调用结束返回主调函数后则不能再使用该形参变量。
(2)实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。
因此应预先用赋值,输入等办法使实参获得确定值。
(3)实参和形参在数量上,类型上,顺序上应严格一致。
(4)函数调用中的数据传送的两种方式,一是数值传递,此传递是单向的。
即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。
因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
另一是地址传递,此传递是双向的。
在函数调用过程中,形参的值发生改变,而导致实参中的值发生变化。
5.被调用函数的声明和函数原型
在主调函数中调用某函数之前应对该被调函数进行说明(声明),这与使用变量之前要先进行变量说明是一样的。
被调用函数声明的一般形式为:
类型说明符被调函数名(类型形参,类型形参…);
或为:
类型说明符被调函数名(类型,类型…);
C语言中规定在以下几种情况时可以省略在主调函数中对被调函数的函数声明。
(1)被调函数的返回值类型是整型或字符型时,可省略,而直接调用。
(2)被调函数的函数定义出现在主调函数之前时,可省略,而直接调用。
(3)如在所有函数定义之前,在函数外预先说明了各个函数的类型,则在以后的各主调函数中,可不再对被调函数作说明。
6.函数嵌套调用和递归调用
(1)函数嵌套调用
C语言中不允许作嵌套的函数定义。
因此各函数之间是平行的。
但是C语言允许在一个函数的定义中出现对另一个函数的调用。
这样就出现了函数的嵌套调用。
即在被调函数中又调用其它函数。
(2)递归调用(嵌套调用的一种特殊情况)
一个函数在它的函数体内调用它自身称为递归调用。
这种函数称为递归函数。
C语言允许函数的递归调用。
在递归调用中,主调函数又是被调函数。
执行递归函数将反复调用其自身,每调用一次就进入新的一层。
第五部分局部变量和全局变量及变量的存储类别
基础知识:
按作用域范围可分为两种,即局部变量和全局变量
从变量值存在的生存期来分,可以分为静态存储方式和动态存储方式。
这部分的内容掌握基本概念和静态变量的读程。
1.局部变量
局部变量也称为内部变量。
局部变量是在函数内作定义说明的。
其作用域仅限于函数内,离开该函数后再使用这种变量是非法的。
关于局部变量的作用域还要说明以下几点:
1)主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。
同时,主函数中也不能使用其它函数中定义的变量。
因为主函数也是一个函数,它与其它函数是平行关系。
这一点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 试题 学习 考试 大全 历年 23
![提示](https://static.bdocx.com/images/bang_tan.gif)