国家计算机二级C语言考试复习知识点1.docx
- 文档编号:10091177
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:54
- 大小:43.14KB
国家计算机二级C语言考试复习知识点1.docx
《国家计算机二级C语言考试复习知识点1.docx》由会员分享,可在线阅读,更多相关《国家计算机二级C语言考试复习知识点1.docx(54页珍藏版)》请在冰点文库上搜索。
国家计算机二级C语言考试复习知识点1
1.C语言的基本构成和格式
#include“stdio.h”
main()
{
inta,b,sum;/*定义变量*/
a=10;/*把整数10赋值给变量a*/
b=20;/*把整数20赋值给变量b*/
sum=a+b;/*把两数之和赋值给变量sum*/
printf(“a=%d,b=%d,sum=%d\n”,a,b,sum);/*输出计算结果*/
}
(1).C程序由函数组成,一个程序必须且只能有一个主函数(main()),C程序总是从主函数开始执行,在主函数中结束。
(2).定义函数时函数名后必须有一对小括号,函数体必须放在一对花括号内,在函数体中,函数体有两个部分:
定义部分和执行部分。
定义语句必须出现在执行语句之前,我们先定义了a,b,sum,然后才给它们赋值。
(3).C语言中每条语句都以分号“;”结束,分号时C语句的一部分。
即使是程序的最后一个语句也不例外。
分号是语句结束的标志。
(4).一行可以写多条语句,一条语句也可以分在多行上写,但是,不能将一个整体分开。
例如:
int是错误的,而int正确。
(5).C语言的注释必须放在“/*”和“*/”之间,“/”和“*”之间不允许有空格。
“/*”和“*/”之间不允许再插入“/*”或“*/”。
注释可以出现在程序中的任意位置。
注释部分不被执行。
(6).C语言程序书写格式自由,语句可以从任一列开始书写,一行内可以写多个语句。
但是过于“自由”的程序书写格式往往使人们很难读懂程序,初学者应该从一开始就养成好的习惯,是程序便于阅读。
2.标识符
(1)标识符只能由字母、数字和下划线组成。
(2)标识符的第一个字符必须是字母或下划线。
(3)标识符的大小写字母是有区别的,如abc和ABC是两个完全不同的标识符。
(3)标识符的分类:
关键字:
关键字是具有特定的含义的、专门用来说明C语言特定成分的一类标识符。
详细的查阅附录二。
预定义标识符:
在C语言中它也有特定的含义。
预定义标识符可以用位“用户表标识符”使用,只是这将使这些标识符失去了原来的意义。
用户标识符:
由用户根据需要定义的标识符被成为用户标识符。
用户标示符用来给变量、函数、数组或者指针等命名。
3.C语言的数据类型
3.1数据可以分为常量和变量。
常量是指在程序执行中不变的量,常量分为:
整型常数、实型常数、字符常量、字符串常量。
整型数据:
进制间的转换
3.11.二、八、十六进制转为十进制规则:
“按权相加”
3.12.十进制转为二、八、十六进制规则:
整数部分:
基数除取余,逆序排列小数部分:
基数乘取整,顺序排列
3.13.二进制转为八、十六进制规则:
三(四)合一,按序相拼(整数部分,从右向左取,小数部分从左向右取,位数不足补零)。
3.14.八、十六进制转为二进制规则:
一分三(四),按序相拼
3.2整型数据在内存中的存放形式
1字节=8位,1Byte=8bit
字长:
指CPU能同时处理的二进制位数。
由CPU的型号而定。
如:
16位微机的字长就是16位或2字节。
1GB=1024MB,1MB=1024KB,1KB=1024B
B:
表示字节,字节是表示存储容量的最小单位。
位(bit):
是计算机中信息表示的最小单位。
3.21.正整数在内存中用“原码”形式存放。
(直接转换为二进制即可)。
如:
5
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
二字节能存放的最大数是:
32767
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
对带符号数,最高位是符号位,用0表示正,用1表示负。
3.22.负整数在内存中用“补码”形式存放。
取补码的步骤:
(1)忽略负号,求出原码。
(2)将原码按位取反(0、1互换)。
(3)在第二步的基础上加1。
如:
取-5的补码。
(1)
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
(2)
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
(3)
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
将补码转换成相应的整数的步骤:
(1)将补码按位取反加1。
(2)将步骤1得到的二进制数转换成十进制数,然后加上负号即可。
例如:
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
按位取反加1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
+1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
转换成十进制:
1×215=32768
加负号:
-32768
几个特殊的带符号整数:
1000000000000000-32768
011111111111111132767
1111111111111111-1
3.23.无符号整数:
只有正整数,没有负整数,最高位不表示符号位,每一位均参与转换。
二进制
带符号整数
无符号整数
111111*********1
-1
65535
1000000000000000
-32768
32768
例2-12:
若有:
inta=-1;unsignedb=65535;则
printf(“%d,%u,%d,%u”,a,a,b,b);输出结果是:
-1,65535,-1,65535
数据益出问题:
例2-13:
若有inta=32767;则a=a+1的结果是:
-32768
例2-14:
若有unsignedb=65536;则b的值是:
0
分析:
32767:
01111111111111111
+1
100000000000000
将100000000000000按照带符号数转为十进制为-32768
65535:
111111*********1
+1
11111111
11111111
+1
1
00000000
00000000
65536
unsignedb=655536;而b属于无符号整型,在内存中只占两字节,所以只能包括16位。
标准C没有具体要求规定各类型数据所占内存的字节数,现以这次考试标准viusal c++6.0为例,说明各类型变量所占的位数。
类型
所占位数
所占字节数
类型
所占位数
所占字节数
short
16
2
unsigned int
32
4
int
32
4
unsigned long
32
4
long
32
4
float
32
4
unsigned short
16
2
double
64
8
3.3实型数据(浮点数)
3.31.实型常量
(1)小数形式:
由数字和小数点组成,必须有小数点,小数点的某一侧可以没有数字。
如:
.23,123.876,123.
(2)指数形式:
用“e”或“E”后接一个整数,表示以10为底的幂数。
注意:
“e”或“E”之前之后必须有数字,且之后的数字必须是整数。
他们和前后的数字之间不能有空格。
例如:
例2-15:
下列合法的常量是()。
A.-32169B.0128C.0XDEFGD.13E0.5
例2-16:
下列合法的实型常量是( )。
(A)0Xff(B)124E(C)1.23E5.0(D)3.E2(E)1.25E+2(F).23e+02
3.32.实型变量
单精度型float占4字节
双精度型double占8字节
长双精度longdouble占16字节(较少用)
4.表达式与运算符
4.1算术运算符及其表达式:
+-*/%%:
(求余运算)
注意:
(1)%两边必须是整型数据。
12.0%3表达式是错误的。
(2)求余(%)的方法是:
忽略符号,求出余数,再将所得余数的符号定为与被除数相同。
例如:
17%3结果是:
217%-3结果是:
2,-17%3结果是:
-2,-17%-3结果是:
-2
4.2强制类型转换
强制类型表达式:
(类型名)表达式
注意:
类型名(表达式)这种形式是C++的强制类型表达方式。
5.赋值运算符及其表达式
5.1.赋值运算符=
格式:
变量名=表达式
功能:
将表达式的值赋给左边的变量。
注:
(1)赋值运算符左边只能是一个变量,不能是常量,也不能是表达式。
a+b=34=3是非法的表达式
a=6a+(b=3)都是合法的表达式
a=b=20a=(b=10)/(c=2)都是合法的表达式
(2)实型数据赋给整型变量时,小数部分被舍去,整型数据赋给实型变量时,系统自动将整型数据转换为实型数据。
例如:
floata;intb;
表达式a=10%3的值是1.0
表达式b=a=10%3的值是1
5.2.复合赋值运算符及其表达式:
+=-=*=/=%=&=|=^=>>=<<=
例如:
a+=3相当于a=a+3,a/=b+4相当a/=(b+4)或a=a/(b+4)
例:
若a=12,则执行表达式a+=a-=a+a后a的值是多少?
分析:
a+=a-=(a+a)/*a的值是12*/
a+=a-=24/*a的值是12*/
a+=a=a-24/*a的值是12*/
a+=a=-12/*a的值是12*/
a+=-12/*a的值是-12*/
a=a+(-12)/*a的值是-12*/
a=-24/*a的值是-24*/
5.3.自增、自减运算符及其表达式
++--注意:
(1)只能用于变量,不能用于常量和表达式。
如:
6++(a+b)--都是错误的。
(2)当它们用于变量名前时,表达式的值为变量的值加一或减一。
当位于变量名后时,表达式的值为变量原来的值。
不论位于变量名前还是变量名后,只要进行了自增、自减运算,变量的值都会在原来的基础上加1或减1。
如:
a=3则a++表达式的值是3运算之后变量的值是4
a=3则++a表达式的值是4之后变量的值是4
a=3则a--表达式的值是3之后变量的值是2
a=3则--a表达式的值是2之后变量的值是2
(3)口诀:
j=i++;这个表达式是先引用后增值。
即:
先把i的初始值给变量j,然后 i再自加1。
j=++i;这歌表达式是先增值后引用。
即:
i先自加1,然后再将我们自加后的值赋值给变量j。
但是记住它们是一起执行的,就是说:
例如j=i++先引用后增值实际上是一起执行的,它们之间不存在先后关系,我们只是位了好记才用到了上面的方法。
老师在上课的时候先不要说,但是你们必须知道。
j=i--,j=--i和上面j=i++,j=++i的方法是一样。
5.4逗号运算符及其表达式
1.格式:
表达式1,表达式2,…,表达式n
注意:
1.逗号表达式的值是整个逗号表达式中最后一个表达式的值。
2.求值顺序是从左到右依次求解。
例如:
a=(3,b=1)的值是1运算结束后a的值是1,b的值是1。
第二章顺序结构
二.教学内容
1.语句
C语句共分为5类:
1.1控制语句
1.2函数调用语句:
printf(“thisisacstatement”);
1.3表达式语句
每一个合法的表达式后加上分号(;)就构成了表达式语句。
++a;i+j;
语句和表达式的区别:
表达式有唯一确定的值,而语句没有值。
1.4赋值语句
格式:
赋值表达式;
i=1,j=2是逗号表达式
i=1;j=2;是两条赋值语句
i++;i--;++i;--i;都是赋值语句
等价于i=i+1;或i=i-1;
1.5空语句:
只有一个单独的分号构成的语句。
如:
;就是一条空语句。
1.6复合语句:
用一对{}将若干语句括起来构成一条复合语句。
2.输入输出语句
在使用库函数时必须先用预编译命令#include<头文件名>或#include“头文件名”将相应的头文件包含到源程序中。
如:
#include
2.1.printf()函数
格式:
printf(“格式控制”,输出列表);
功能:
按格式控制指定的格式输出数据。
注意:
格式控制包括以%开头的“格式说明符”和原样输出的普通字符。
如:
printf(“a=%d,a+b=%d”,30,4+7);输出结果是:
a=30,a+b=11
(1)d格式%d:
按实际长度输出十进制整数。
%md:
输出占m列,若小于m列,左边补空格,若大于m列,按实际输出。
%-md:
输出占m列,若小于m列,右边补空格,若大于m列,按实际输出。
%ld:
输出长整型数据,输入输出长整型数据时必须用该格式。
例如:
printf(“%d,%6d,%-6d,%ld”,386,1234,3456,12345L);
输出结果:
386,1234,3456,12345
printf(“%2d”,12345);输出结果:
12345
(2)u格式%u:
以无符号十进制形式输出整数。
printf(“%u”,-1);65535printf(“%u”,-32768);32768
(3)o格式%o:
以无符号八进制形式输出整数,不输出前导符0。
printf(“%d,%o”,-1,-1);-1,177777
(4)x或X格式
%x或%X以无符号十六进制形式输出整数。
不输出前导符0x或0X,小写对小写,大写对大写。
printf(“%d,%x,%X,%x”,-1,-1,0xabc,0XAbc);-1,ffff,ABC,abc
注:
若要输出十六进制和八进制的前导符,则要用%#o和%#x、%#X格式。
printf(“%#o,%#x,%#X”,-1,-1,0xaBc);
0177777,0xffff,0XABC
(5)c格式%c用来输出一个字符,不输出单引号定界符。
%c和%d可以相互转换。
printf(“%c,%d”,’a’,’a’);a,97printf(“%c,%d”,100,100);d,100
(6)s格式用来输出一个字符串,不输出双引号和字符串结束符。
%s:
输出字符串的有效字符。
printf(“%s”,”china\0yunnan”);china
%ms:
输出占m列,若小于m列,左边补空格,大于m列,按实际输出。
printf(“%5s,%-5s,%2s”,”swfc”,”swfc”,”swfc”);
swfc,swfc,swfc
%m.ns:
输出占m列,只输出字符串的左n个字符到m列的右端。
如:
printf(“%7.5s”,”yunnan”);yunna
(7)f格式:
按小数形式输出实型数据。
%f:
默认输出6位小数。
如:
printf(“%f,%f”,543.12,5.4312e+2);543.120000,543.120000
%m.nf:
输出占m列,其中有n位小数。
若超过m列,确保n位小数后按实际输出。
注意四舍五入问题。
如:
printf(“%7.3f,%-7.3f,%4.2f”,3.1415726,3.1415926,314.5926);3.142,3.142,314.59
(8)e格式以指数形式输出一个实数。
小数点前只有一位非零数,5位小数,3位指数。
如:
printf(“%e,%e”,123.4,123.45e-7);234000e+002,1.234500e-005
(9)g格式自动在%f和%e中选择较短的一种输出,对于小数部分不输出无意义的0。
如:
printf(“%g,%g”,123.45,123.45e-2);123.45,1.2345
printf(“%g”,123000000.0);23e+08
小结:
(1)%%表示输出一个%。
如:
printf(“%%d=%d”,10,10);%d=10
(2)除了x,e,g大小写均可外,其它都只能小写。
如:
printf(“%d=%D”,20,20);20=%D
(3)输出格式说明符所能操作的数据类型必须与输出项的类型一致。
如:
printf(“%d”,1.234);/*出错*/
2.2.scanf()函数
格式:
scanf(“格式控制”,地址列表);
注意:
(1)可指定数据所占的列数,输入后由系统自动截取相应的位数。
如:
scanf(“%3d%2d”,&a,&b);若输入:
3863018则:
a的值是:
386b的值是:
30
若输入:
3863a的值是:
386b的值是:
3
scanf(“%3c%2d”,&ch,&c);若输入:
3863018则:
ch的值是:
’3’b的值是:
30
(2)%*md:
表示跳过m列不读。
如:
scanf(“%*3d%3d%4d”,&a,&b);
若输入:
123456则:
a的值是:
456b的值是:
原来的值。
(3)不能在scanf()函数中指定输入数据的小数位数。
如:
scanf(“%7.5f”,&a);/*出错*/在scanf()函数中,输入时普通字符原样输入。
如:
scanf(“a=%d,b=%d”,&a,&b);若要给a赋值5,b赋值10,正确的输入是:
a=5,b=10
scanf(“%d*,%d#,%d”,&a,&b,&c);
若要让a,b,c分别得到1,2,3,正确的输入是:
1*,2#,3<回车>
若两个格式说明符之间没有其它字符,则在输入数据时,两数据之间要用回车或空格分隔,回车或空格可以是多个。
但是,%c格式除外。
如:
scanf(“%d%d”,&a,&b);
若想让a的值为5,b的值为10。
则正确的输入是:
5空格10<回车>或5<回车>10<回车>或5空格空格空格10<回车>
(6)多个%c格式之间没有其它字符,仍然不能用回车或空格来分隔。
如:
scanf(“%c%c%c”,&a,&b,&c);
若输入:
a空格b空格c<回车>
a的值是’a’,b的值是空格,c的值是’b’。
(7)格式说明符所能操作的数据类型必须与对应变量的类型相同。
如:
inta;scanf(“%f”,&a);/*出错*/
总结:
1.普通字符原样输入,原样输出。
2.对于%d格式,指定宽度小于输出宽度,原样输出。
3.%#o,%#x,%#X表示要输出八进制的前导符数字0,和十六进制的前导符0x,0X。
4.%x,%X格式,小写对小写,大写对大写。
5.%*md:
表示跳过相应的输入项。
6.注意进制间的转换,以及无符号数和带符号数之间的转换。
7.在scanf()函数中,给double类型变量输入数据时,应该使用%lf类型说明符,而输出时,可以用%lf,也可以用%lf。
第三章选择结构
二.教学内容
1.关系运算与逻辑运算
1.1逻辑值
真(非零值)假(零)
1.2关系运算符及其表达式
<<=>>===!
=
关系运算符优先级别低于算术运算符,高于赋值运算符。
(<<=>>=)优先级别高于(==!
=)
如:
a>b+c等价于a>(b+c)a==b a=b 4=4表达式不合法 关系表达式的值只有1和0,其中1表示“真”,0表示“假”。 1.3逻辑运算符及其表达式 &&逻辑“与”||逻辑“或”! 逻辑“非” 优先级别: ! 》&&》|| 运算规则: 逻辑&&: 遇假则假逻辑||: 遇真则真逻辑! : 真假互换 逻辑表达式的值: 1(真)、0(假)例如: 3>4结果是: 03&&4结果是: 1 ! 3&&4结果是: 00||3结果是: 1 注意: 在求解逻辑与(&&)表达式时,若&&运算符左边表达式的值为0(假),则不再进行&&右边表达式的运算,且将整个&&表达式的值定为0;在求解逻辑或(||)表达式时,若||左边表达式的值为非0值(真),则不再进行||右边表达式的运算,且将整个逻辑||表达式的值定为1(真)。 2.if语句 2.1.if语句格式: 1)if(表达式)2)if(表达式) 语句1;语句1; else 语句2; 称为: 全if单if 注意: (1)if后的表达式必须用()括起,else后没有表达式。 (2)if和else都只能控制紧跟它的一条语句,若要控制多条语句,必须用一对{}括起构成一条复合语句。 2.2执行方式: 2.21if语句的执行方式: 首先判断表达式的值是否为“真”,若“真”,则执行语句部分。 如果表达式的值为“假”,则“跳过”语句部分执行if语句后面的其它语句。 2.22if-else语句的执行方式: 首先判断表达式的值是否为“真”,若“真”,则执行语句部分。 如果表达式的值为“假”,则执行else语句后面的语句。 例1: main() {intm=5; if(m++>5)printf(“m=%d”,m); elseprintf(“m=%d”,m--); } 例2: main() {intm=5; if(++m>5)printf(“m=%d”,m); elseprintf(“m=%d\n”,m--); printf(“m=%d”,m); } 2.3if语句的嵌套 if(表达式1) if(表达式2)语句1; else语句2; else if(表达式3)语句3; else语句4; else总是与前面最近的且未配对的if语句配对,组成一对if-else语句。 if(表达式1) if(表达式2)语句1; else if(表达式3)语句2; else语句3; 第一个else语句有的同学会把它误以为和第一个if配对,但是实际的情况是和第二个if语句配对,即: if(表达式1) if(表达式2)语句1; else if(表达式3)语句2; else语句3; 例1.请分析下列程序的输出结果。 main() {ints,t,a,b; sanf(“%d%d”,&a,&b); s=1;t=1; if(a>0)s=s+1; if(a>b)t=s+1; elseif(a==b)t=s; elset=2*s; printf(“%d\n”,t); } 若运行时输入510回车,则程序的执行结果是? main() {ints,t,a,b; sanf(“%d%d”,&a,&b); s=1;t=1; if(a>0){s=s+1; if(a>b)t=s+1;} elsei
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 国家 计算机 二级 语言 考试 复习 知识点