计算机二级复习资料第二章.ppt
- 文档编号:5158164
- 上传时间:2023-05-08
- 格式:PPT
- 页数:74
- 大小:1.19MB
计算机二级复习资料第二章.ppt
《计算机二级复习资料第二章.ppt》由会员分享,可在线阅读,更多相关《计算机二级复习资料第二章.ppt(74页珍藏版)》请在冰点文库上搜索。
第二章C程序设计,2.1.顺序结构程序设计2.2.选择结构程序设计2.3.循环控制程序设计,新航线培训中心http:
/,2.1.顺序结构程序设计,程序是按照书写的顺序自上而下一步步执行,程序中的每一条语句都被执行一次,且仅能被执行一次.,main(),语句1,语句2,语句n,程序结束,自上而下,新航线培训中心http:
/,C语句概述,”;”表示一条语句结束所以每条语句必须有“;”。
1.表达式语句
(1)赋值语句。
例如:
sum=a+b;
(2)自动增1、减1运算符构成的表达式语句。
例如:
i+;a-;(3)逗号表达式语句。
例:
x=1,y=2;2.空语句语句仅有一个分号“;”,新航线培训中心http:
/,3.控制语句:
如ifelse、for、dowhile4.函数调用语句由一个函数调用加上一个分号组成一个语句,如:
printf(a=%d,b=%dn,a,b);5.复合语句由“”和“”把一些变量定义和执行语句组合在一起,称之为复合语句,又称语句块。
复合语句的语句形式如下:
语句1;语句2;语句n;,C语句概述,新航线培训中心http:
/,C语句概述,例如:
if(ab)c=a;a=b;b=c;知识点:
复合语句的“”内可能会有多个语句,但在语法上把它整体上视为一条语句看待。
复合语句中,又可以再嵌套其它的复合语句;,新航线培训中心http:
/,对于在复合语句中说明的变量,其作用范围只在这个复合语句中;如果在复合语句的内外都出现了同样的变量定义,则按“局部优先”的原则处理;,inta=9,c=10;在这个范围c,a的值各为多少?
intb=8,a=8;在这个范围c,a的值各为多少?
复合语句,新航线培训中心http:
/,C数据的输入与输出,C语言格式输入格式化输入函数:
scanf()功能:
用于从键盘上接收各种类型的数据。
形式:
scanf(“格式控制”,输入项地址列表);,新航线培训中心http:
/,常用格式控制:
%d从键盘上接收int型数据scanf(“%d”,C数据的输入与输出,新航线培训中心http:
/,C数据的输入与输出,格式符和意义如下表所示,新航线培训中心http:
/,C数据的输入与输出,C语言字符输入函数getchar()功能:
从标准输入设备(键盘)读入一个字符。
一般格式为:
c=getchar();includemain()charc,d;c=getchar();d=getchar();printf(%c%cn,c,d);,当执行程序时,按下列方式输入数据(从第一列开始,代表回车,注意:
回车是一个字符)1234则输出结果是:
12,新航线培训中心http:
/,C数据的输入与输出,C语言格式输出格式输出函数printf()一般格式:
printf(“格式控制”,输出项表);例:
输出普通字符:
printf(“Hello!
”);例:
输出整型、浮点型,字符型数据:
printf(“a=%d,b=%f,d=%c”,a,b,c);,普通字符,新航线培训中心http:
/,注意:
%o不输出前导符0,%x不输出前导符0x%o,%x,%u都不会输出负数,C数据的输入与输出,intm=-1;printf(%d,%u,%o,m,m,m);A)-1,-1,-1B)-1,32767,-177777C)-1,32768,177777D)-1,65535,177777,答案:
D),新航线培训中心http:
/,C数据的输入与输出,C语言字符输出函数putchar()一般格式为:
putchar(c)功能:
在标准输出设备(显示器)上输出c对应的一个字符。
如:
#includemain()charc=a;intb=97;putchar(c);putchar(b+1);,新航线培训中心http:
/,scanf()常见错误,1.在使用scanf输入数据时忘记取地址运算符,如:
scanf(“%d,%d”,a,b);正确写法:
scanf(“%d,%d”,正确输入:
a=90,7。
错误输入:
90,7,新航线培训中心http:
/,3.连续输入多个数值型数据时,数据之间要用空格、Tab键或回车键作分隔符。
如scanf(“%d%d”,正确输入:
AB。
错误输入:
A,B或AB或AB,scanf()常见错误,新航线培训中心http:
/,scanf()常见错误,5.数据型数据和字符型数据交叉输入时:
如可加空格、Tab键和回车键作分隔符scanf(“%c%d”,正确输入:
7a错误输入:
7a,新航线培训中心http:
/,scanf()常见错误,6.输入数据时,可以指定数据所占列数,系统自动按它截取所需数据。
如:
scanf(%3d%3d,是不合法的,新航线培训中心http:
/,练习-读程序,以下程序的输出结果是。
main()charc=z;printf(%c,c-25);,参考答案:
a【解析】z的ASCII码值为122,经过c-25运算后,得97,以字符形式输出是a,新航线培训中心http:
/,练习-读程序,下列程序的输出结果是main()doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf(%dn,d*y);,【解题要点】本题中,程序先执行语句x=1.2;,根据赋值运算的类型转换规则,先将double型的常量1.2转换为int型,即取整为1,然后将1赋值给变量x。
接下来执行语句y=(x+3.8)/5.0;得到4.8/5.0,其结果为0.96,赋值号左边变量y的类型为整型,于是对这个小于1.0的中间结果进行取整,结果为0,于是变量y的值为0,d*y的值也为0。
0,新航线培训中心http:
/,执行以下程序时输入1234567,则输出结果是。
#includemain()inta=1,b;scanf(%2d%2d,练习-读程序,参考答案1234【解析】本题scanf函数的输出格式说明中,变量a和b的格式控制都为%2d,即a和b都只获取两个字符的输入。
输入的前4个字符被分别赋给了a和b,其值分别为12和34。
例:
任意从键盘输入一个三位整数,要求正确地分离出它的个位、十位和百位数,并分别在屏幕上输出。
程序设计的分析:
例如,输入的是456,则输出的分别是4、5、6,最低位数字可用对10求余的方法得到,如456%10=6,最高位的百位数字可用对100整除的方法得到,如456/10=4,中间位的数字既可通过将其变换为最高位后再整除的方法得到,如(456-4*100)/10=5,也可通过将其变换为最低位再求余的方法得到,如(456/10)%10=5。
根据以上的分析,这个程序应这样设计:
(1)定义一个整型变量x,用于存放用户输入的一个三位整数;再定义三个整型变量b0、b1、b2,用于存放计算后个位、十位和百位数。
(2)调用scanf函数输入该三位整数。
(3)利用上述计算方法计算该数的个位、十位和百位数。
(4)输出计算后的结果。
#includevoidmain()intx,b0,b1,b2;/变量定义printf(pleaseinputanintegerx:
);/提示用户输入一个整数scanf(%d,/输出结果,新航线培训中心http:
/,例:
输入大写字母,转换为小写字母,#includemain()charch;printf(“输入大写字母:
”);scanf(“%c”,新航线培训中心http:
/,2.2.选择结构程序设计,if语句,main(),if(a5),复合语句块1,复合语句块2,else,程序结束,a5为真,a5为假,新航线培训中心http:
/,2.2.选择结构程序设计,if语句有两种形式:
(如果有多条语句要用括起来)
(1)不含else子句的if语句if()例:
如果a的值大于b则交换ab的值。
#includestdio.hmain()inta=7,b=0,t;if(ab)t=a;a=b;b=t;printf(“a=%d,b=%d”,a,b);,新航线培训中心http:
/,2.2.选择结构程序设计,
(2)含else子句的if语句if()else,新航线培训中心http:
/,if语句的条件表达式,分支条件的类型不限于逻辑/关系表达式,可以是任意的C语言有效表达式(如赋值表达式,算术表达式等等),因此也可以是作为表达式特例的常量或变量。
例:
if(78)x=9;if(7,新航线培训中心http:
/,if语句的条件表达式,例:
判断a的值是否等于2。
#includestdio.hmain()inta=1;if(a=2)printf(“a=2”);elseprintf(“a!
=2”);,想一想输出a=2还是输出a!
=2?
a=2,新航线培训中心http:
/,例:
以变量为分支条件的实例,#includestdio.h“main()intx,y;scanf(%d,现把程序中if(x)改成if(x!
=0),此时虽然条件表达式写法不同,但是完成的功能是相同的。
下面两种表示方法经常使用:
(重点)if(x)等价于if(x!
=0)if(!
x)等价于if(x=0),新航线培训中心http:
/,if语句的嵌套,在一个if语句中又包含另一个if语句,从而构成了if语句的嵌套使用。
内嵌的if语句既可以嵌套在if子句中,也可以嵌套在else子句中。
新航线培训中心http:
/,if语句的嵌套,新航线培训中心http:
/,if语句的嵌套,【例】输入两数并判断其大小关系#includemain()intx,y;printf(Enterintegerx,y:
);scanf(%d,%d,新航线培训中心http:
/,if语句的嵌套,ifelse配对原则缺省时,else总是和它上面离它最近的未配对的if配对.,if的嵌套时二义性的问题如:
y=0;if(x=0)if(x0)y=1;elsey=-1;思考:
else是与if(x0)配对还是与if(x=0)配对?
解决此类问题,最好的方法是用明确从属关系。
y=0;if(x=0)if(x0)y=1;elsey=-1;,新航线培训中心http:
/,练习读程序,阅读下面语句,则程序的执行结果是#includestdio.hmain()inta=-1,b=1,k;if(+a0),【解析】&运算的短路特性,+a0表达式的值0为假,!
(b-=0)表达式就不被执行。
1,0,新航线培训中心http:
/,练习读程序,以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO,请填空。
main()floata,b,c;scanf(%f%f%f,(a+bc)&(a+cb)&(b+ca),新航线培训中心http:
/,练习读程序,程序的执行结果是main()inta=3,b=5,c=7;if(ab)a=b;c=a;if(c!
=a)c=b;printf(%d,%d,%dn,a,b,c);,3,5,3,新航线培训中心http:
/,多路分支switch语句,switch语句的一般形式switch()case:
case:
case:
default:
用括起来的内容表示可选,新航线培训中心http:
/,switch语句的执行过程:
先计算表达式的值;当该值与某一个case后的常量表达式的值相等时,就执行此case后的语句。
若所有的case值与表达式的值均不匹配,则执行default后的语句。
执行完一个case语句后,并不会跳过它后面的case语句,而是顺序执行它下面的case语句。
若想终止switch结构的执行,可以用一个break语句来中断switch的执行。
新航线培训中心http:
/,例1:
根据变量i的值输出字符,#includevoidmain()inti;printf(pleaseinputi:
);scanf(%d,i的值分别为1,2,3,4时屏幕输出结果为?
1-ABCD,2-BCD,3-CD,4-D,新航线培训中心http:
/,例2:
根据变量i的值输出字符,#includevoidmain()inti;printf(pleaseinputi:
);scanf(%d,1-A,2-BC,3-C,4-DBC,i的值分别为1,2,3,4时屏幕输出结果为?
新航线培训中心http:
/,switch知识点,switch后的运算结果只能是整型、字符型或枚举型。
floata,b=4.0;scanf(%f,新航线培训中心http:
/,switch知识点,case后面的的值在运行前必须是确定的,不能改变,如:
intx=3,y=7;switch(x+y)case1+2:
/*是正确的*/casex+y:
/*是错误的*/case1,2:
/*是错误的*/,新航线培训中心http:
/,switch知识点,default可以出现在语句体中任何标号位置上。
在switch语句体中也可以无default标号。
如果case之后的语句最后有break语句则跳出switch语句体,否则继续执行下面case语句。
intz2;switch(z)case1:
printf(”1”)case2:
printf(”2”)break;case10:
printf(”10”),新航线培训中心http:
/,switch嵌套,例voidmain()intx=1,y=0,a=0,b=0;switch(x)case1:
switch(y)case0:
a+;break;case1:
b+;break;case2:
a+;b+;break;case3:
a+;b+;printf(“na=%d,b=%d”,a,b);,运行结果:
a=2,b=1,知识点:
break只能跳出离它最近的switch,新航线培训中心http:
/,练习-读程序,以下程序的运行结果是main()inta=2,b=7,c=5;switch(a0)case1:
switch(b0)case1:
printf();break;case2:
printf(!
);break;case0:
switch(c=5)case0:
printf(*);break;case1:
printf(#);break;case2:
printf($);break;default:
printf(,#&,新航线培训中心http:
/,练习-读程序,运行下面程序时,从键盘输入字母H,则输出结果是#includemain()charch;ch=getchar();switch(ch)caseH:
printf(Hello!
n);caseG:
printf(Goodmorning!
n);default:
printf(Bye_Bye!
n);,Hello!
Goodmorning!
Bye_Bye!
新航线培训中心http:
/,2.3.循环控制程序设计,while语句一般形式:
while(),while语句的执行过程
(1)计算while后的值。
当值为非零时,则执行步骤
(2);当值为零时,则执行步骤(3)。
(2)执行后,转去执行步骤
(1)。
(3)退出while循环。
新航线培训中心http:
/,【例】显示110的平方,#includevoidmain()inti=1;while(i=10)printf(%d*%d=%dn,i,i,i*i);i+;,运行结果:
1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100,新航线培训中心http:
/,while语句知识点,1.先判断表达式,后执行循环体,循环体有可能一次也不执行。
inta=0,b=0;while(a0)/a0为假,b+不可能执行b+;2.如果是多条语句,就一定要加“”构成复合语句。
3.表达式恒为非0常量时无限循环(死循环)如:
while
(1)printf(“hello!
”);,例用while循环语句实现从1加到100,并将结果打印出来.#includestdio.hmain()intsum=0,i=1;while(i=100)sum+=i;i+;printf(其和是%dn,sum);运行结果:
其和是5050,新航线培训中心http:
/,练习-读程序,设有以下程序段intx=0,s=0;while(!
x!
=0)s+=+x;printf(%d,s);,【解析】!
表示逻辑非运算符,!
=表示不等于运算符,逻辑非运算符比不等于运算符的优先级高,1,新航线培训中心http:
/,do-while语句,do-while语句的一般形式dowhile();,do-while语句的执行过程
(1)执行do后面的。
(2)计算while后一对括号中的的值。
当值为非零时,转去执行步骤
(1)。
当值为零时,则执行步骤(3).(3)退出while循环。
新航线培训中心http:
/,do-while语句知识点,1.先执行循环体,后判断表达式,至少执行一次循环体.,例:
inta=0,b=0;dob+;while(a0);printf(“%d”,b);,1,新航线培训中心http:
/,do-while语句知识点,2.在while结束后必须有分号,它表示该语句的结束.3.注意区别while循环与do-while循环分号问题。
如:
inti=9;while(i0)i=i-1;,inti=9;doi=i-1;while(i0);,如果有;表示没有循环体即语句i=i-1与while循环无关系,例:
将输入的正整数按逆序输出。
例如:
若输入135则输出531。
请填空。
#includemain()intn,s;printf(Enteranumber:
);scanf(%d,n/=10或n=n/10,新航线培训中心http:
/,for语句,for语句的一般形式for(;)循环体语句for语句的执行过程首先计算。
求的值;若其值为非零,则转去执行;若的值为零,则转去执行,结束for语句。
执行一次for循环体。
求解,转执行。
结束循环,执行循环之后的语句。
新航线培训中心http:
/,例:
读程序,#includemain()inty=9;for(;y0;y-)if(y%3=0)printf(%d,-y);,852,新航线培训中心http:
/,for语句知识点,1.三个表达式之间的必须用分号“;”隔开。
for(i=0;i用于计算循环变量初始值只执行一次循环体是否执行的条件循环变量的调整,新航线培训中心http:
/,for语句知识点,3.无限循环for循环的三个表达式中,任何一个都可以省略,但是分号“;”不可省略。
所以下面的写法:
for(;)语句是一死循环。
新航线培训中心http:
/,循环的嵌套,在一个循环内又完整地包含另一个循环,称为循环的嵌套,即循环体自身包含循环语句。
while()while()for(;).,知识点:
1.三种循环可互相嵌套,层数不限。
2.外层循环可包含两个以上内循环,但不能相互交叉。
外循环,内循环,内循环,外循环,新航线培训中心http:
/,例:
读下列程序,程序的运行结果是#includemain()inti,j,m=55;for(i=1;i=i;j-)printf(%dn,m%j);,110111,新航线培训中心http:
/,例:
读下列程序,程序运行后的输出结果是main()inti,j;for(i=1;i4;i+)for(j=i;j4;j+)printf(%d*%d=%d,i,j,i*j);printf(n);,1*1=11*2=21*3=32*2=42*3=63*3=9,新航线培训中心http:
/,break语句和continue语句,break语句在循环结构中,也可以用break语句使流程跳出本层循环体,从而提前强制性结束本层循环。
知识点:
(1)只能在switch语句体或循环体内使用break语句。
(2)break语句的作用跳出switch语句体或终止循环体(最近一层)。
新航线培训中心http:
/,break语句,while(表达式1)if(表达式2)break;语句,doif(表达式2)break;while(表达式1);语句,for(;表达式1;)if(表达式2)break;语句,新航线培训中心http:
/,break语句和continue语句,2.continue语句结束本次循环,跳过循环体中尚未执行的语句,继续进行下一次是否执行循环体的条件判断。
知识点:
仅用于循环体语句中。
新航线培训中心http:
/,continue语句,for()while()if()continue;,新航线培训中心http:
/,【例】求输入的十个整数中正数的个数及其平均值。
#includevoidmain()inti,a,num=0;floatsum=0;for(i=0;i10;i+)scanf(“%d”,假设输入的10个整数为:
2345678910,【例】求1100之间的所有素数,素数是指除了能被1和它本身整除外,不能被其它任何整数整除的数。
例如,17就是一个素数,除了1和17之外,它不能被216之间的任何整数整除。
#includevoidmain()intx,i;for(x=1;x100;x+)/1-100之间for(i=2;ix;i+)if(x%i=0)break;if(i=x)printf(%d,x);,【例】利用下面的公式求的近似值,要求累加到最后一项小于10-6为止。
问题分析:
这是一个累加求和的问题,但这里的循环次数是预先未知的,而且累加项以正负交替的规律出现,如何解决这类问题呢?
在本例中,累加项的构成规律可用寻找累加项通式的方法得到,具体表示为t=s/n;即累加项由分子和分母两部分组成,分子s按+1,-1,+1,-1,交替变化,可用赋值语句s=-s;实现,s的初始值取为1,分母n按1,3,5,7,变化,用n=n+2;语句实现即可,n的初始值取为1.0。
#include#includevoidmain()ints=1;floatn=1.0,t=1,pi=0;while(fabs(t)=1e-6)pi+=t;n+=2;s=-s;/正负交替变化t=s/n;pi*=4;printf(pi=%.6fn,pi);,运行结果:
pi=3.141594,新航线培训中心http:
/,练习-读程序,当执行以下程序时,输入1234567890,则其中while循环体将执行次。
#includemain()charch;while(ch=getchar()=0)printf(#);,0,通过getchar()函数来取得从键盘输入的数据,再判断其是否是字符0,如果是,则执行一次循环,新航线培训中心http:
/,练习-读程序,若有定义:
intk;,以下程序段的输出结果是for(k=2;k6;k+,k+)printf(#%d,k);,【解析】在for循环语句中,变量k的自增表达式为k+,k+,这是一个逗号表达式,所以输出结果为#2#4,#2#4,新航线培训中心http:
/,练习-读程序,以下程序输出结果为:
#includemain()intx=8;for(;x0;x-)if(x%3)printf(%d,x-);continue;printf(%d,-x);,8,5,4,2,新航线培训中心http:
/,练习-读程序,以下程序的输出结果是main()inta,i;a=0;for(i=1;i5;i+)switch(i)case0:
case3:
a+=2;case1:
case2:
a+=3;default:
a+=5;printf(%dn,a);,31,本章结束,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 复习资料 第二