c语言基础复习总结提纲.docx
《c语言基础复习总结提纲.docx》由会员分享,可在线阅读,更多相关《c语言基础复习总结提纲.docx(28页珍藏版)》请在冰点文库上搜索。
c语言基础复习总结提纲
二、C语言的结构化语句
C语言中有三种结构化语句,分别为:
1. 顺序结构:
2 .选择结构:
3. 循环结构:
三、语句
C语言中的语句主要有以下几种需要大家掌握:
1.表达式语句
在表达式之后加上一个分号“;”,就构成了一个表达式对应的语句。
在这里要强调每个C语言的语句之后都必须要有一个“;”
【注意事项】
一行内可以有多句表达式语句,但是在程序的写法上要求书写规范,便于阅读。
2.空语句
若一个语句只有一个“;”,即构成空语句。
【注意事项】
(1)“空语句”表示程序执行时不产生任何动作。
(2)但随意使用空语句会导致逻辑上出现错误,需要慎用。
(3)空语句一般用在延时程序中,表示等待时间。
【注意事项】
一条空语句即一个“;”也是一条语句。
3.复合语句
用花括号括起来的多个语句组成一个复合语句。
其表示为:
{语句1;语句2;…语句n;}
注意!
一条复合语句在语法上相当于一条语句。
【经典例题】
例4:
以下叙述中错误的是( )
A)C语句必须以分号结束。
B)复合语句在语法上被看作一条语句。
C)空语句出现在任何位置都不会影响程序运行。
D)赋值表达式末尾加分号就构成赋值语句。
【注意事项】
(1)一个复合语句在语法上等同于一个语句,也可称为是一个语句块。
(2)凡是单个语句能够出现的地方复合语句都能够出现。
(3)复合语句花括号的后面不能加有“;”。
4.注释
以“/*”开头并且以“*/”结尾。
【注意事项】
(1)强调注释可以在程序中的任何地方。
(2)对程序的编译和运行不起作用,不影响程序的运行结果。
(3)程序运行时将无视注释的存在。
(4)注释是给阅读程序的人看的。
程序中以“/*”开头并且以“*/”结尾的部分表示程序的注释部分,注释可以加在程序的任何位置。
【经典例题】
例 有以下程序段:
main()
{ inta=0,b=0;
a=10; /*给a赋值
b=20; 给b赋值*/
printf("a+b=%d\n",a+b); /*输出计算结果*/
}程序运行后的结果是(B)
A)a+b=30 B)a+b=10 C)30 D)程序出错
四、输出函数
总共有两个,分别为printf和putchar函数。
1.printf函数
(1)printf函数的一般格式:
printf(格式输出控制,输出列表)
1)格式输出控制:
需用一对双引号括起来,双引号内包含“格式说明”和“普通字符”两部分。
2)输出列表:
需要输出的数据,多个数据之间用逗号隔开。
(2)格式说明(详见教材197面,把上面输出格式要求全部掌握)
注:
在printf函数中,若格式说明的个数少于输出项的个数,多余的输出项则忽略不输出,这是二级C考试中经常出现的题目。
(3)普通字符会原样输出,转义字符需要输出对应的字符。
注:
printf函数输出数据时,做题时很容易忽略普通字符(除了格式控制符之外的字符)的输出。
在考试中,这类题目常出现。
例:
main()
{inta,b;
a=10;
b=15;
printf("a+b=%d",a+b); }程序运行结果为:
(4)数据输出实例(已知inta=66;floatb=123.56;)
通过以下各输出语句,掌握输出函数的各种格式。
(1)printf("%d",a); 66
(2)printf("%3d",a); □66
(3)printf("%-3d",a); 66□
(4)printf("%f",b); 123.560000
(5)printf("%7.2f",b); □123.56
(6)printf("%-7.2f",b); 123.56□
(6)printf("%c",a); B
(7)printf("%x",a); 42
【注意事项】
1)输出控制是由双引号括起来的格式转换控制信息.它分为两种信息:
用于说明的信息,计算机会按照原样输出;以上例子中的“a=”它可以是任意的常量,变量,表达式汉字,字符等。
2)带有"%"的格式转换说明,用于指定输出数据的格式。
例如”%d”。
3)输出数据列表包括需要输出的一些数据。
各个数据之间用逗号分隔开。
输出数据的个数与输出控制中的格式转换说明的个数相等,并且在顺序上要一一对应且类型匹配。
输出数据列表中的数据可以是任意合法的常量、变量或表达式。
4)在输出控制中,格式说明的个数应与输出项的个数相同。
如果格式说明的个数少于输出项的个数,多余的输出项则不予输出;如果格式说明的个数多于输出项的个数,则对多余的格式说明将输出不定值。
【经典例题】
例:
输出语句printf("%d,%d",2,3,4);的输出结果为2,3。
例:
输出语句printf("a=%d,b=%d",2.3,4.0);的输出结果为a=2,b=3。
【注意事项】
1)可以在%和格式字符之间加入一个整数来控制输出数据所占的宽度,强调如果整数指定的宽度大于实际输出数据的宽度,数据的输出采用右对齐的方式,左边自动补空格;反之,则以输出数据的实际宽度输出。
2)当在%和格式字符f之间加入“整数1.整数2”来控制输出数据的格式时,强调“整数1”用于指定输出数据占的总宽度,“整数2”用于指定输出实数的小数部分的个数。
当输出数据的小数个数多于“整数2”指定的个数时,截去多余的数据,并对截去的第1位小数作四舍五入处理。
当输出数据的小数个数少于“整数2”指定的个数时,在小数的右边添0补足。
3)如果需要在输出的八进制数前添加0,或在输出的十六进制数前添加0x,可在%号和格式字符o和x之间插入一个#号(注意:
#号对其他格式字符通常不起作用)
4)如果要输出"%"时,则应该在格式控制中用两个连续的"%",即"%%"来表示,也就是在格式控制中出现两个连续的"%",则此时"%"不再用来代表格式说明。
下面是关于以上几种特殊情况下数据的输出格式以及输出结果:
各种特殊情况时数据输出结果对比
输出语句输出结果输出语句输出结果
printf("%d",254);254printf("%2d",254);254printf("%4d",254); 254
printf("%f",1.25);1.250000printf("%10f",1.25); 1.250000
printf("%4.4f",1.25);1.2500printf("%7.4f",1.25); 1.2500
printf("%2.0f",1.25); 1printf("%o",254);376
printf("%#o",254);0376printf("%#x",254);0xfe
printf(“%%”);%printf(“%%d”,254);%d
2.putchar函数
此函数只能输出字符型的数据。
表示将括号里面的字符型数据以字符的形式输出到屏幕上。
(1)输出格式为:
putchar(字符型变量或常量);
(2)举例:
例:
putchar(c);其中“c”为变量。
例:
putchar(‘C’);其中“C”为字符型常量。
【注意事项】putchar函数的参数只有一个,可以是字符型的变量或者常量。
如果是常量必须用单引号括起来。
五、输入函数
数据的输入函数,总共有两个,分别为printf和putchar函数。
1.scanf函数
(1)输入格式:
scanf(输入控制,输入数据列表)
【说明】
1)“输入控制”的含义与printf函数的“输出控制”相同,它的作用是指定输入时的数据转
换格式。
例子中的“%d”。
2)输入数据列表是一个或者多个合法的地址表达式。
例子中的“&a”。
其中“&”为取地址的符号,后面必须跟变量或者变量表达式。
我们要从键盘上将不同的数据输入计算机中时,也要限制以什么格式输入,可以接受那些数据,这就是格式化的输入函数。
【历年考题】
例:
若有定义:
inta,b;,通过语句scanf("%d;%d",&a,&b);,能把整数3赋给变量a,5赋给变量b的输入数据是( )。
A)35 B)3,5C)3;5 D)35
例:
若变量已正确定义为int型,要通过语句scanf(〞%d,%d,%d〞,&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(u代表一个空格符)()
A)uuu1,2,3<回车> B)1u2u3<回车>
C)1,uuu2,uuu3<回车> D)1,2,3<回车>
【注意事项】
在scanf函数中的格式控制部分中,说明部分按照原样输入,而输入项必须是表示地址的地址变量。
(2)scanf函数中的格式说明:
(详见教材195面,记熟表格内容)
【注意事项】
(1)当从键盘输入多个数值数据时,输入数值数据之间用分隔符(包括空格符、制表符和回车符,但是不包括逗号)隔开。
(2)在输入控制中,格式说明的类型与输入项的类型应该一一对应匹配。
如果类型不匹配,系统并不给出出错信息,但不能得到正确的输入数据。
当输入长整型数据(long)时,必须使用%ld格式;输入double数据时,必须使用%lf或%le,否则不能得到正确数据。
(3)与printf相似,在scanf函数中的格式字符前可以用一个整数指定输入数据所占的宽度,但对实数不能指定小数的位数。
(4)在输入控制中,格式说明的个数与输入项的个数应该相同。
如果格式说明的个数少于输入项的个数,系统自动结束输入,多余的数据没有被读入,可作为下一个输入操作的输入数据;如果格式说明的个数多于输入项的个数,系统同样自动结束输入。
(5)跳过输入数据的方法。
可以在格式字符与%之间加入一个“*”使输入过程跳过输入的数据。
(6)若在scanf函数的输入控制串中含有其他的字符,则在输入时要求按一一对应的位置原样输入这些字符。
2.getchar函数:
从终端输入一个字符。
(1)输入格式:
getchar()
第三章:
If结构
一、关系运算
1.C语言中的逻辑值:
(1)真:
非零即真,包括:
整数、负数、小数
(2)假:
零即假
2.关系运算符和表达式:
(1)关系运算符:
>、>=、<、<=、==、!
=
(2)优先级:
算术运算符>关系运算符>赋值运算符>逗号运算符
(3)关系表达式:
由关系运算符组成的表达式叫做关系表达式。
例如:
a>b a!
=10
(4)关系运算的结果:
1表示真,0表示假
(5)结合方向:
从左向右,即先算左边再算右边
二、逻辑运算
(1)逻辑运算符:
&&、||、!
(2)逻辑表达式:
由逻辑运算符组成的表达式
a&&b a真b真为真,否则为假(一假则假)
a||b a假b假为假,否则为真(一真则真)
!
a a为真时!
a为假,a为假时!
a为真(非真则假,非假则真)
(3)优先级:
!
>算术运算符>关系运算符>&&>||>赋值运算符>逗号运算符
(4)例一:
判断下列表达式是真还是假?
10&20 10>20||20<30 a=10>20 !
5
(5)例二:
计算变量a,b,c,d的值
int a=0,b=0,c=0,d=0;
a++;
b=a+10>10;
c=a>b&&b>=c;
d=(++b<=0)||(d++);
三、if语句
1.if语句结构形式:
if(表达式)语句
(1)表达式可以为任何合法的表达式。
包括:
常量表达式、算术表达式、关系表达式、逻辑表达式和赋值表达式。
(2)语句:
只能是一条或是一个复合语句
2.if语句的执行过程:
(1)首先判断表达式的真假
(2)如果表达式结果为真,则执行语句;否则不执行语句。
3.例一:
判断学生的成绩是否优秀?
int a;/*用来表示某个学生的成绩*/
scanf("%d",&a);/*通过键盘将成绩输入给变量a*/
if(a>=90)
printf("成绩优秀!
");
通过输入不同的值来判断输出的内容,如果输入的数据不小于90,则输出。
4.此题必须要求完全掌握。
inta=4,b=3,c=5,t=0;
if(a
if(ainta=4,b=3,c=5,t=0;
if(a
if(a5.例:
判断一个数是否能被2整除?
?
int a;/*用来表示某个数*/
scanf("%d",&a);/*通过键盘输入一个数给变量a*/
if(a%2==0)
printf("a=%d能2整除",a);
6.例:
判断一个数是否能被3和7同时整除?
?
int a;/*用来表示某个数*/
scanf("%d",&a);/*通过键盘输入一个数给变量a*/
if(a%3==0&&a%7==0)
printf("a=%d能被3和7同时整除",a);
7.例:
判断输入的一个字符是否是数字字符?
charch;
scanf(“%c”,&ch);
if(ch>=’0’&&ch<=’9’)
printf("ch=%c是一个数字字符",ch);
8.例:
判断输入的一个字符是否是大写字母?
charch;
scanf(“%c”,&ch);
if(ch>=’A’&&ch<=’Z’)
printf("ch=%c是一个大写字母",ch);
四、if-else语句
if-else语句结构的一般形式:
if(表达式)
语句1
else
语句2
(1)表达式可以为任何合法的表达式。
包括:
常量表达式、算术表达式、关系表达式、逻辑表达式和赋值表达式。
(2)语句:
只能是一条或是一个复合语句
1.if-else语句的执行过程:
(1)首先判断表达式的真假
(2)如果表达式结果为真,则执行语句1,否则执行语句2
2.例一:
判断变量a是不是一个偶数,
如果a是一个偶数则输出a是一个偶数,
否则输出a是一个奇数
int a;
scanf("%d",&a);
if(a%2==0)
printf("a=%d是一个偶数",a);
else
printf("a=%d是一个奇数",a);
3.陷阱题:
main()
{ inta=1,b=2,c=3;
if(c=a)printf(“%d\n”,c);
else printf(“%d\n”,c);}
main()
{ inta=1,b=2,c=3;
if(c==a) printf(“%d\n”,c);
else printf(“%d\n”,c);}
重点比较上面两个例子中c=a和c==a的区别,赋值和比较是不同的概念。
if表达式中如果是赋值语句,只要赋的值不为0,条件就永远为真。
if表达式中如果是关系语句,只要判断逻辑值为真或假。
五、 嵌套的if语句
1.嵌套的if语句即多个if或者if-else语句嵌套在一起,
记住一句话:
else总是与它前面没有配对的if配对
2.例:
判断表达式的真假是重点
main()
{ inta=5,b=4,c=3,d=2;
if(a>b>c)
printf(“%d\n”,d);
elseif((c-1>=d)==1)
prinft(“%d\n”,d+1);
else printf(“%d\n”,d+2);}
注意两点:
一是学会配对if-else,采用从后往前配对;
二是必须掌握判断a>b>c的真假,(c-1>=d)==1的真假。
六、 条件表达式
1.条件表达式的形式如下:
表达式1?
表达式2:
表达式3
2.条件表达式求职规则:
(1)首先判断表达式1的值是否为真
(2)如果表达式1的值为真则表达式2的值为整个表达的值,
否则表达式3的值为整个表达式的值
3.多个条件表达式的结合方向:
自右向左
4.例:
求两个数中的最大值:
max=a>b?
a:
b;
5.例题
intk=0,b=2,c=3;
k=a
b:
a; k=k>c?
c:
k;
mian()
{ inta=5,b=4,c=6,d;
printf(“%d\n”,d=a>b?
(a>c?
a:
c):
(c));}
七、 switch语句
1.switch语句的一般格式:
switch(表达式)
{ case常量表达式1:
语句块1;break;
…
case常量表达式n:
语句块n;break;
default:
语句块n+1;break; }
(1)switch、case、default、break都是关键字
(2)圆括号中的表达式:
必须是整型或字符型,不能为实型。
case后面的表达式可以是求得整型量和字符型量的常量表达式,但是常量表达式后面不能含有变量。
(3)执行switch语句的步骤:
① 首先计算switch后圆括号内表达式的值;
② 如果计算结果与case后面某个常量表达式相等,则执行该case后面的语句块;
③ 如果没有任何一个常量表达式与之相等,则执行default后的语句块。
(4)执行switch语句的执行策略:
① 执行过程中如果遇到break语句,则跳出switch语句
② 如果执行完一个case或是default没有遇到break,则继续顺序往下执行,直到遇到break语句或是switch语句体被执行完毕。
(5)default最多只能有一个,通常出现在switch的最后部分,但也可以出现在case之间或所有case之前。
例二:
int a=1;
switch(a)
{ case1:
a++;
case2:
a++;
case3:
a++;
default:
a++; }
printf("a=%d\n",a);
请问输出的结果为多少?
2.区别下列两个例子
例一:
int a=1;
switch(a)
{ case1:
a++;break;
case2:
a++;break;
case3:
a++;break;
default:
a++;break; }
printf("a=%d\n",a);
请问输出的结果为多少?
注:
switch语句中,注意在case的语句块后加break语句和不加break语句的区别,在考试中,经常考查该类题。
另外,考查default语句的执行(只有所有case后的常量表达式都不成立时,才执行default后的语句)。
第四章循环结构
一、 本章学习要点
1. 明白并熟练掌握循环的过程,特别for循环是考试的重点,请必须注意以下细节:
(1)什么是循环?
重复做同样的事情就称为循环。
循环有四要素,请同学们谨记:
① 循环的起点,就是循环从什么时候开始
② 循环的终点,就是循环到什么时候结束,同学们千万要记住一般的循环
是要结束的,但是有种循环永远也结束不了,这样的循环称为死循环
③ 循环的步长,指的是循环每次变化的值,如果循环每次都没有变化,
很容易变为死循环
④ 循环体,循环体是每次重复做的事情
(2)for循环的基本结构,表达式1,表达式2和表达式3分别代表什么
(3)必须掌握循环的执行步骤
2. 掌握几种常见的使用循环解决的问题,考试中涉及很多和循环相关的考点,
因此在学习循环的过程中一定要慢慢训练使用循环解决问题的思路。
二、 while循环
1. while循环和for循环的循环执行过程差不多一致,
只是表达式1,2,3的位置不同而已
2.while的一般形式
while(表达式)
{ 循环体语句}
(1while是C语言的关键字,必须小写
(2表达式是任意合法的表达式(包括:
常量、算术、关系、逻辑、赋值表达式)
(3循环体语句只能是一条语句或是一个复合语句
(4表达式不能省略,循环体语句省略时表示不做任何的操作
3. while的执行过程
(1)判断表达式的真假
(2)如果表达式为真则执行循环体语句,否则结束循环
4. 例
main()
{ int k=5;
while(--k)
printf(“%d”,k-=3);
printf(“\n”);}
执行过程如下:
(1)初值k=5,判断表达式:
--k的真假,--k为4故为真,
执行循环体:
输出k=k-3,输出1
(2)初值k=1,判断表达式:
--k的真假,--k为0故为假,
循环执行完毕
(3)执行循环以后的语句printf(“\n”);输出一个回车,
所以结果为:
1<回车>
5. 例,特别注意循环体为空,还有执行过程中y--的变化
main()
{ inty=10;
while(y--);printf(“y=%d\n”,y) ;
}程序运行后y的值是:
三、 do-while循环
1. do-while语句的一般形式
do
{ 循环体语句
}while(表达式);
(1)do是C语言的关键字,需要和while搭配使用
(2)表达式可以是任意合法的表达式
(3)循环体语句只能是一条语句或是一个复合语句
(4)表达式不能省略,循环体语句省略时表示不做任何的操作
(5)while后面的分号不能省略
2. do-while语句的执行过程:
(1)首先执行循环体语句
(2)判断表达式的真假
(3)如果表达式为真,则继续执行循环体语句,否则结束循环
执行步骤如下:
(1)初值:
i=0,n=0 执行循环体语句:
i++;++i->i=2,
判断:
n!
=0为假,则结束循环;
(2)执行完循环后继续执行循环后面的语句:
printf("%d",i);
输出结果为:
2
3. 知识点举例:
Inti,n=0;
i=0;
do
{i++;
++i;
}while(n!
=0);
printf("%d",i);
执行步骤如下:
(1)初值:
i=0,执行循环体:
printf(“%d”,i);输出i的值为0,
判断表达式i++的真假,因为i的初值为0,则i++的值为0,
i的值为1,表大事i++值为0为假,结束循环
(2)执行循环体后面的语句:
printf(”%d\n”,i);输出的值为1
4. 例