第3章-C++程序设计基础教学课件_第1页
第3章-C++程序设计基础教学课件_第2页
第3章-C++程序设计基础教学课件_第3页
第3章-C++程序设计基础教学课件_第4页
第3章-C++程序设计基础教学课件_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章C++程序设计基础温蜜wenmi2222163上海电力学院计信学院本章主要内容§3.1C++语句的类型§3.2数据的输入输出§3.3程序的流程控制§3.1C++语句的类型

语句是组成C++程序的最基本的部分,执行语句会产生相应的效果:程序的执行部分程序的功能语句声明语句执行语句空语句复合语句§3.1.1声明语句声明语句主要用于声明变量、常量和函数等:charch;constintMAX_LEN=128;doublesqrt(double);§3.1.1执行语句表达式语句constintA=5; //赋值语句a+=9; //复合赋值语句控制语句条件判断语句if()~else~(条件语句)switch(多分支选择语句)循环执行语句for()(循环语句)while()(循环语句)do~while()(循环语句)转向语句break(终止执行switch或循环语句)continue(结束本次循环)goto(转向语句)return(从函数返回语句)空语句只由分号“;”组成的语句称为空语句;复合语句将两条以上的语句用{}括起,即称作复合语句,也可将其称为块语句或块程序。{a=a+b;if(a==b)cout<<"a=0"<<endl;}复合语句把多个语句用括号{}括起来组成的一个或多个语句称复合语句;

{

语句1;

语句2;……

语句n;}复合语句可以作为整体一条语句使用§3.2数据的输入输出§3.2.1输入流(cin)§3.2.2输出流(cout)§3.2.3C++保留的输入输出方式§3.2.1cin输入流通过键盘输入不同类型数据形式:cin>>变量1>>变量2>>……>>变量n;连续输入多个变量时,各个变量之间要添加空白符

如:doubleprice,total;intn;

cin>>price>>n;//输入时注意空白符分隔

total=n*price;§3.2.2cout输出流变量值以及文本字符串输出到屏幕。变量和字符串可以组合输出形式:cout<<变量1<<变量2<<……<<变量n;cout<<total;cout<<“字符串”<<变量;cout<<“总价为:”<<total;11例:使用setw指定宽度

使用*填充#include<iostream.h>#include<iomanip.h>

voidmain(){doublevalues[]={1.23,35.36,653.7,4358.24};for(inti=0;i<4;i++){cout<<setw(10);

cout<<setfill('*');cout<<values[i]<<'\n';}}输出结果:******1.23*****35.36*****653.7***4358.2412例:设置对齐方式#include<iostream.h>#include<iomanip.h>

voidmain(){doublevalues[]={1.23,35.36,653.7,4358.24};char*names[]={"Zoot","Jimmy","Al","Stan"};for(inti=0;i<4;i++)cout<<setiosflags(ios::left)<<setw(6)<<names[i]<<resetiosflags(ios::left)//取消对齐方式<<setw(10)<<values[i]<<endl;}输出结果:Zoot1.23Jimmy35.36Al653.7Stan4358.2413例:控制输出精度#include<iostream>#include<iomanip.h>usingnamespacestd;voidmain(){doublevalues[]={1.23,35.36,653.7,4358.24};char*names[]={"Zoot","Jimmy","Al","Stan"};cout<<setiosflags(ios::scientific);//用指数方式表示实数for(inti=0;i<4;i++)cout<<setiosflags(ios::left)<<setw(6)<<names[i]<<resetiosflags(ios::left)<<setw(10)<<setprecision(1)//控输出有效位数<<values[i]<<endl;}输出结果:Zoot1Jimmy4e+001Al7e+002Stan4e+003§3.2.3C++保留的输入输出方式putchar函数putchar函数是有参函数,参数可以是变量、数值和表达式。当参数是数字时,按ASCII码表输出相应字符。一般形式为:putchar(a);

getchar函数getchar函数是无参函数,其作用是从系统默认输入设备接收一个字符。无论用户输入多少个字符,getchar()只能接受第一个字符。一般形式为:getchar();

(c=getchar())!='\n'charch=‘A’;putchar(ch);等价于cout<<ch;§3.3程序的流程控制§3.3.1选择结构§3.3.2循环结构§3.3.3转向语句顺序结构就是指按照语句在程序中的先后次序一条一条顺序地执行。顺序结构由语句实现。

语句n结束开始语句1……#include<iostream>usingnamespacestd;voidmain(){ inta,b; cout<<"请分别输入整型变量a和b的值:\n"; cin>>a>>b;

{ boola=false,b=true; cout<<"复合语句中的a="<<a<<endl; cout<<"复合语句中的b="<<b<<endl; } cout<<"主函数中的a="<<a<<endl;cout<<"主函数中的b="<<b<<endl;}请分别输入整型变量a和b的值:8复合语句中的a=0复合语句中的b=1主函数中的a=4主函数中的b=8局部范围的变量会覆盖较大范围的同名变量,如复合语句中的a,b§3.3.1选择语句和选择结构选择语句if语句if语句用于两者选一switch语句用于多分支选一选择结构程序的流程由多路分支组成,在程序的一次执行过程中,根据不同的情况,只有一条支路被选中执行,而其他分支上的语句被直接跳过。选择结构由选择控制语句实现。

条件

语句2

语句110…………if语句—形式1if(条件表达式)

语句1;if

(a>0)

cout<<a<<“是个大于0的数”<<endl;if

(a>0){

cout<<a<<“是个大于0的数”cout<<endl;

}可以是一条语句或者复合语句。if语句—形式2if(条件表达式)

语句1;

else

语句2;if

(a>b)max=a;elsemax=b;cout<<“max=”<<max<<endl;

可以是一条语句或者复合语句。输入一个年份,判断是否闰年闰年的条件是能被4整除,但不能被100整除的年份都是闰年;或者,能被400整除的年份是闰年。

(year%4==0&&year%100!=0)||(year%400==0)#include<iostream>usingnamespacestd;intmain(){ intyear; boolleap; cout<<"请输入一个年份:"; cin>>year;

leap=(year%4==0&&

year%100!=0)||(year%400==0);

if(leap) cout<<year<<"年是闰年"<<endl;

else cout<<year<<"年不是闰年"<<endl;return0;}请输入一个年份:19001900年不是闰年if语句—形式3if

(条件表达式)

if

(条件表达式)

语句1;

else

语句2;else

语句3;if

(a>b)if(a>c)max=a;

elsemax=c;else

if(b<c)max=c;

elsemax=b;

一条if语句条件1语句1非00条件2条件3语句4语句3语句2非0非000购物商场中,根据不同的顾客身份对同一件商品给出不同的打折优惠,如VIP会员7折优惠,高级会员7.5折优惠,中级会员8折优惠,初级会员9折优惠,普通顾客没有优惠。

if(identity==1) { cout<<"VIP会员的购物总额为:"; total=count*price*0.7; }

else if(identity==2) {cout<<"高级会员的购物总额为:"; total=count*price*0.75; } else if(identity==3) { cout<<"中级会员的购物总额为:"; total=count*price*0.8; }else if(identity==4) { cout<<"初级会员的购物总额为:"; total=count*price*0.9; } else { cout<<"普通顾客的购物总额为:"; total=count*price; }注意else与if的配对

else必须与if配对使用,不能单独使用;

在多层嵌套中,else总是与前面最近的

if配对,与程序书写格式无关。x=8;y=14;z=10;if(x!=y)

if(y!=z)cout<<“三个数互不相等”;elsecout<<“x和y相等”;放在复合语句内配对加强练习1:

求ax2+bx+c=0

方程的解。

(1)a=0,不是二次方程

(2)b2–4ac=0,有两个相等实根。

(3)b2–4ac>0,有两个不等实根。

(4)b2–4ac<0,有两个共轭复根。voidmain(){if(a==0)……elseif(b*b–4*a*c==0)……elseif(b*b–4*a*c>0)……else……}加强练习2:判断输入字符种类#include<stdio.h>voidmain(){charc;cout<<"Enteracharacter:";cin>>c;if(c<0x20)cout<<"Thecharacterisacontrolcharacter\n";elseif(c>='0'&&c<='9')

cout<<

"Thecharacterisadigit\n";elseif(c>='A'&&c<='Z')

cout<<

"Thecharacterisacapitalletter\n";elseif(c>='a'&&c<='z')cout<<"Thecharacterisalowerletter\n";elsecout<<"Thecharacterisothercharacter\n";}运行:Enteracharacter:

Thecharacterisacontrolcharacter运行:Enteracharacter:8Thecharacterisadigit运行:Enteracharacter:DThecharacterisacapitalletter运行:Enteracharacter:hThecharacterisalowerletter运行:Enteracharacter:F1Thecharacterisothercharacterswitch多分支语句switch(表达式){case

常量表达式1:

语句组1;case常量表达式2:

语句组2;…….

case

常量表达式n:

语句组n;[default:

语句组;]}

整型或字符型表达式是常量且不同的常量表达式值互不相同switch表达式语句组1语句组2语句组n语句组…...12ndefaultcase

switch(identity){case1:cout<<"VIP会员的购物总额为:"; total=count*price*0.7;break;case2:cout<<"高级会员的购物总额为:"; total=count*price*0.75;break;case3:cout<<"中级会员的购物总额为:"; total=count*price*0.8;

break;case4:cout<<"初级会员的购物总额为:"; total=count*price*0.9;break;default:cout<<"普通顾客的购物总额为:"; total=count*price;}

常量表达式1…常量表达式n是常量,且值必须互不相同;常量表达式起语句标号作用,必须用break跳出switch语句的执行;case后可包含多个可执行语句,且不必加{};switch可嵌套多个case可共用一组执行语句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++;break;}cout<<“a=”<<a<<“,b=”<<b;}运行结果:a=2,b=1switch嵌套switch(identity){case1:cout<<"VIP会员的购物总额为:"; total=count*price*0.7;case2:cout<<"高级会员的购物总额为:"; total=count*price*0.75;case3:cout<<"中级会员的购物总额为:"; total=count*price*0.8;

case4:cout<<"初级会员的购物总额为:"; total=count*price*0.9;default:cout<<"普通顾客的购物总额为:"; total=count*price;}

常量表达式起语句标号作用,必须用break语句跳出switch语句的执行;否则只有在刚进入switch时进行条件判断,之后不再进行条件判断,顺序向下执行。编写程序,对输入的考试分数按照A等表示90分以上,B等89~80分,C等79~70分,D等69~60分,E等60分以下划分等级,并输出结果。

switch(grade){case‘A’:cout<<“90~100\n”;case‘B’:cout<<“80~89\n”;case‘C’:cout<<“70~79\n”;case‘D’:cout<<“60~69\n”;case‘E’:cout<<“<60\n”;}加强练习3:加强练习4:根据输入字母输出字符串

m:Goodmorning!n:Goodnight!h:Hello!

否则,输出????????#include<iostream>voidmain(){charc;cout<<"Entermornorhorother:";cin>>c;switch(c){case'm':cout<<"\nGoodmorning!\n";break;case'n':cout<<"\nGoodnight!\n";break;case'h':cout<<"\nHello!\n";break;default:cout<<"\n????????\n";break;

}}加强练习5:输入一个0~6的整数,转换成星期输出。

0-----Sunday1-----Monday2-----Tuesday

……intmain(){ intday;cin>>day; switch(day){case0:cout<<"Sunday"<<endl;break;case1:cout<<"Monday"<<endl;break;case2:cout<<"Tuesday"<<endl;break;case3:cout<<"Wednesday"<<endl;break;case4:cout<<"Thursday"<<endl;break;case5:cout<<"Friday"<<endl;break;case6:cout<<"Saturday"<<endl;break;default:cout<<"DayoutofrangeSunday..Saturday\n";break;}}39加强练习6:

编写程序,对输入的考试分数按照90分以上A等,89~80分B等,79~70分C等,69~60分D等,60分以下E等划分等级,并输出结果。

voidmain(){intscore; char grade;cin>>score;if(score>=90) grade=‘A’;elseif(score>=80) grade=‘B’;elseif(score>=70) grade=‘C’;elseif(score>=60) grade=‘D’;else grade=‘E’;cout<<“grade=”<<grade<<endl;}

voidmain(){intscore,s; char grade;cin>>score;s=score/10;switch(s){ case10: case9: grade=‘A’; break; case8: grade=‘B’; break; case7: grade=‘C’; break; case6: grade=‘D’; break; case5:case4:case3:case2:case1:case0: grade=‘E’; break; default:cout<<“Error\n”;break;

}}学习循环的经验切记:自己要学会写循环程序,首先必须学会“读”循环程序1,先画块,那块构成了一个循环,循环条件是什么?循环变量是哪个?循环体是哪部分?。2,进入循环,一次一次得去执行循环体,循环结束后得到什么?这个循环的功能是什么?接下来应该执行哪句?3,不再看这个程序,试着自己写出实现相同功能的循环程序。特别注意:课本、PPT、课后实训等的经典循环一点要再三推敲,反复消化,再做课后习题§3.3.2循环语句和循环结构C++循环语句:while语句do~while语句for语句循环语句用来实现循环结构while语句循环变量初始化条件表达式?非0循环体修改循环变量0循环语句后的语句while(条件表达式)

循环体语句;可以是一条语句或者复合语句。利用while循环结构计1+2+3+…+10观察各个加数之间的关系和变化后面的数比前面的依次多1,设i为加数变量,初值取1,从1~10变化;将和存放在一个变量sum中,一般初始化为0;假设sum=sum+i;表示把当前的i和前i-1个数之和;当i>10时,不再执行sum=sum+i计算。

#include<iostream>usingnamespacestd;intmain(){inti=1,sum=0;

while(i<=10){sum+=i;++i;}cout<<“sum=”<<sum;return0;}循环变量初始化循环变量增值循环条件i>10退出循环循环体语句while语句特点先判断条件表达式,如果为真执行循环体,否则退出循环直接执行while语句之后的语句。说明循环体语句可能一次也不执行当第一次条件表达式就为0时永真循环while(非0)当循环语句中存在如下语句时,强制退出循环break语句return语句goto语句如何求解n个自然数之和

#include<iostream>usingnamespacestd;intmain(){inti=1,sum=0;

intn;cin>>n;

while(i<=10){sum+=i;++i;}cout<<“sum=”<<sum;return0;}i<=n编程序,输出100以内能被3整除的数

#include<iostream>usingnamespacestd;intmain(){ inti=1; while(i<=100) {

if(i%3==0) cout<<

“\t

"

<<i; i++; }return0;}编程序计算5!

#include<iostream>usingnamespacestd;intmain(){inti=1,f=1;

while(i<=5){f*=i;++i;}cout<<“f=”<<f;return0;}编程序计算1!+2!+3!+…+n!while(i<=5){f*=i;++i;}n=1,2,3,….intsum=0,i=1;while(i<=n

){f*=i;++i;

sum+=f;}do~while语句do

循环体语句;

while(表达式);循环体1表达式while循环变量初始化do0循环语句后的语句包括循环变量更新语句do~while语句特点先执行循环体语句,再判断表达式真假至少执行一次循环体语句do~while语句可以转化为while语句循环体循环体表达式01while语句输入一个整数,将各位数字反转后输出#include<iostream>usingnamespacestd;intmain(){intn,d; cout<<"Enterthenumber:"; cin>>n; cout<<“反转后的数字序列为:"; do {

d=n%10; cout<<d; n/=10;

}while(n!=0);cout<<endl;return0; }for语句for([表达式1];[表达式2];[表达式3])

循环体语句;[]表示其中的表达式可以省略for表达式1循环体1表达式30表达式2循环变量初始化条件表达式循环变量更新语句for循环实现1…n个自然数之和

#include<iostream>usingnamespacestd;intmain(){inti,n,sum=0;cout<<“请输入自然数n:”;cin>>n;for(i=1;i<=n;i++)sum+=i;cout<<sum;return0;}表达式1表达式2表达式3for语句for(循环变量赋初值;循环条件;循环变量增值){

循环体语句;}注意:for语句中表达式1,表达式2,表达式3类型任意,都可省略,但分号;不可省无限循环:for(;;)for语句可以转换成while结构

表达式1;while(表达式2){

循环体语句;

表达式3;}输出100以内能被3整除的正整数while和for

#include<iostream>usingnamespacestd;voidmain(){

inti=0;while(i<=100){if(i%3==0)cout<<

“\t"

<<i;i++;}}inti;for(i=0;i<=100;i++){if(i%3==0)cout<<“\t"<<i;}输入一个整数,求出它的所有因子#include<iostream>usingnamespacestd;voidmain(){ intn,i; cout<<“输入一个整数:"; cin>>n; cout<<“数”<<n<<“的因子是:";

for(i=1;i<=n;i++) if(n%i==0)

cout<<i<<“\t";cout<<endl;}i<=sqrt(n)循环的嵌套当一个循环的循环体语句中包括另一个循环语句时,就形成了循环的嵌套:三种循环可以互相嵌套,层数不限循环语句之间不能相互交叉几种嵌套形式(1)while(){……

while(){……}…...}(2)do{……

do{……}while();…...}while();(3)while(){……

do{……}while();…….}(4)for(;;){……

do{……}while();……

while(){……}…...}嵌套循环的跳转禁止从外层循环跳入内层循环禁止跳入同层的另一循环输出以下图案

*************************菱形上半部分for(i=1;i<=4;i++)//上半部分{ for(j=1;j<=4-i;j++)

cout<<""; for(k=1;k<=2*i-1;k++)

cout<<“*";

cout<<endl;}菱形下半部分for(i=1;i<=3;i++)//下半部分{ for(j=1;j<=i;j++)

cout<<""; for(k=19-2*i;k>=1;k--)

cout<<“*";

cout<<endl;}编程输出下列图形#$##$$###$$$####$$$$#####$$$$$§3.3.3转向语句break语句continue语句goto(转向语句)return(从函数返回语句)break语句形式:break;功能终止并跳出switch终止并跳出当前循环

break举例:计算半径从1到10时的各圆的面积,直到面积大于100时为止。

constfloatPI=3.1415926voidmain(){intr;floatarea;for(r=1;r<=10;r++)

{area=PI*r*r;

if(area>100) break;cout<<"r="<<r<<"area="<<area;

}}continue语句形式:continue;功能结束本次循环。即跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中输出100以内能被3整除的正整数

for和continue

#include<iostream>usingnamespacestd;voidmain(){

inti;

for(i=0;i<=100;i++){

if(i%3!=0)continue;

cout<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论