第2章C简单程序设计.ppt

上传人:sccc 文档编号:5897026 上传时间:2023-08-31 格式:PPT 页数:100 大小:786.04KB
返回 下载 相关 举报
第2章C简单程序设计.ppt_第1页
第1页 / 共100页
第2章C简单程序设计.ppt_第2页
第2页 / 共100页
第2章C简单程序设计.ppt_第3页
第3页 / 共100页
第2章C简单程序设计.ppt_第4页
第4页 / 共100页
第2章C简单程序设计.ppt_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《第2章C简单程序设计.ppt》由会员分享,可在线阅读,更多相关《第2章C简单程序设计.ppt(100页珍藏版)》请在三一办公上搜索。

1、,第二章 C+简单程序设计,本章主要内容,算法的控制结构选择语句循环语句跳转语句,程序设计简介,1.偶数之和初始值设为零2.奇数之和初始值设为零3.输入一个整数4.如果该整数为奇数,则奇数和加上该数否则偶数和加上该数5.如果该数不是第十个数,转第3步否则输出奇数和及偶数和,例 输入10个整数,计算其中的偶数之和及奇数之和。,处理过程:自然语言描述算法,程序设计简介,处理过程:框图描述算法,程序设计简介,框图符号,程序设计简介,Begin:odd_sum=0;even_sum=0;n=1;Repeat:Input a integer to number;if(number is an odd)o

2、dd_sum=odd_sum+number;elseeven_sum=odd+number;n=n+1;Until(n10);Output even_sum;Output odd_sum;End,处理过程:伪代码描述算法,程序设计简介,#include void main()int odd_sum=0,even_sum=0,number,n=0;docoutnumber;if(number%2!=0)odd_sum+=number;elseeven_sum+=number;n+;while(n10);cout“偶数之和为:”even_sumendl;cout“奇数之和为”odd_sumendl

3、;,处理过程:程序描述算法,算法的基本控制结构,顺序结构分支结构循环结构,顺序结构,语句A,语句B,C+语句,表达式语句:表达式之后加上分号。空语句:只由一个分号构成。复合语句:将一组语句序列用括起来,在语法上等价于一条语句。如:控制语句:选择语句、循环语句和转移语句。,例:int x=1;/声明语句 x=x+10;/表达式语句,例:t=a;a=b;b=t;,如何解决分支问题?,输入一个年份,判断是否闰年。需用选择结构,选择结构(分支结构),流程图说明:,进入该结构后,判断条件是否成立,成立则执行语句A,否则执行语句B。条件通常是关系表达式或逻辑表达式。,选择语句,选择语句:if 语句 swi

4、tch语句,简单if 语句,if(表达式)语句,语法:,if(radius=0)area=radius*radius*PI;cout The area for the circle of radius radius is area;,if else 语句,语法:if(表达式)语句1else 语句2,执行流程,#include using namespace std;int main()int year;bool IsLeapYear;cout year;IsLeapYear=(year%4=0,16,块中有两条以上的语句,if(life 0)cout“Im feeling pretty goo

5、d n”;cout“lets go fight some bad guys n”;else/false块 cout“Gasp.I am dead n”;cout“.goodbye cruel world n”;,/true 块,块中有两条以上的语句,if(life 0)cout“Im feeling pretty good n”;cout“lets go fight some bad guys n”;else cout“Gasp.I am dead n”;cout“.goodbye cruel world n”;,使用if 语句的说明,if(表达式)中的表达式可以是任意形式,任意类型,只要结果

6、是或非值。if语句的执行部分若为两条以上的语句时,一定要写成复合语句形式,否则仅执行if后的第一条语句。,条件运算符,对简单的if语句可以用赋值语句实现:/num1,num2 and max 都是 int类型if(num1 num2)max=num1;elsemax=num2;可以写成:max=(num1 num2?num1:num2);,if语句的嵌套,当if语句中又出现另一个if语句时,称为if语句的嵌套。if语句嵌套时,else总是与离它最近的且尚未匹配的if相匹配。,if(i k)if(j k)cout i and j are greater than k;else cout i is

7、 less than or equal to k;,注意,if语句嵌套时else总是与离它最近的且尚未匹配的if相匹配。,为了强迫else子句与第一个if子句匹配,必须加一对括号。,例:输入一个成绩,给出该成绩的等级,成绩90 输出A;80成绩90输出B;70成绩80输出C;60成绩70输出D;成绩60输出E。,int main()float score;cout score;if(score=90)cout=80)cout=70)cout=60)cout Grade:Dn;else cout Grade:En;return 0;,等效,int main()float score;cout s

8、core;if(score=90)cout=80)cout=70)cout=60)cout Grade:D n;elsecout Grade:E n;return 0;,多路分支,例:求三个数中的最大数,#include using namespace std;int main()float a,b,c,amax;cout a b c;amax=a;if(b c)if(b a)amax=b;else if(c a)amax=c;cout max=amax endl;return 0;,运行,#includeusing namespace std;int main()float a,b,c;co

9、ut a b c;if(a b)b=a;if(c b)b=c;cout b 最大 endl;return 0;,switch语句的基本形式,switch(表达式)case 常量值:语句break;case 常量值:语句break;case 常量值:语句break;default:语句+1 break;,switch语句执行流程,例:分析程序运行结果,#include using namespace std;int main()int x,a,b,c,d;a=b=c=d=0;cin x;switch(x)case 1:a+;break;default:d=1;case 2:b+;break;ca

10、se 3:c+;break;cout a b c d endl;return 0;,输入 结果为 输入 结果为 输入 结果为 1,程序运行结果:,如何使用switch语句根据分数给出等级?,switch语句适合小范围的整数不适合 1-100范围内的整数,但有其他办法如何使用switch语句根据分数给出等级?A=90 100B=80 89C=70 79D=60 69F=0 59int score/包含整数 1 100char grade/根据分数给出等级,#include using namespace std;int main()int score;char grade;cin score;s

11、witch(score/10)case 10:case 9:grade=A;break;case 8:grade=B;break;case 7:grade=C;break;case 6:grade=D;break;default:grade=E;break;cout grade endl;return 0;,例:编写一个实现两个数+、运算的程序,float left,right;char operator;cin left operator right;cout left operator right=;switch(operator)case+:cout left+right endl;br

12、eak;case-:cout left-right endl;break;case*:cout left*right endl;break;case/:cout left/right endl;break;default:cout Illegal operation endl;,Advantages of Computers,Computers are really quickComputers dont get bored They can do the same thing over and over and be“happy”,循环结构,循环结构:程序中有时需要反复地执行某些操作,这种结

13、构的程序称为循环结构。循环语句:被反复执行的某些语句,称为循环体。,循环,什么是循环?some C+code;some C+code;some C+code;some C+code;some C+code;some C+code;some C+code;,只要条件为真,循环语句,循环语句,C+提供了3种实现循环的语句:while语句dowhile语句for语句,while循环(当型循环),while(表达式)语句,语法:,当条件成立时,反复执行语句部分,直到条件不成立退出循环,继续执行循环结构后面的语句。,例:求自然数100以内的偶数之和,#include using namespace st

14、d;int main()int i=2,sum=0;while(i=100)sum+=i;i+=2;cout sum=sum endl;return 0;,运行,int cnt=0;/初始化while(cnt 10)/检查/做一些事情.;.;cnt+;/修改循环条件中的变量,循环的常用用法,循环体,课堂练习,一般DOS 屏幕显示80个字符宽。用一个循环在屏幕上输出80个数字,总是从1到10(用0代表10)。,123456789012345.67890,答案,int count=1,output=1;while(count 9)/如果超过9重置0output=0;,另解,int count=1,

15、output=1;while(count=80)cout output;count=count+1;output=(output=9?0:output+1);,另解,int num=1;while(num=80)cout(num%10);num=num+1;,无限循环,无限循环 永远不会停止的循环,无限循环,常见的无限循环while(ch=y).,记住:非0 true 0 false,或int i=0while(i 10)./忘记 i+;,执行次数?,while(int i=3)i-;,例:求数列 所有大于等于0.00001的数据项之和。,方法一:利用通项公式序号分子分母 2 2 2,#inc

16、lude using namespace std;int main()int i=1;double s=0,s0,p=2;while(s0=(2*i-1)/p)=0.000001)s+=s0;p*=2;i+;cout s=s endl;return 0;,#include#include using namespace std;int main()int i=1;double s=0,s0;while(s0=(2*i-1)/pow(2,i)=0.000001)s+=s0;i+;cout s=s endl;return 0;,系统函数,方法二:递推公式序号 分子 分母+1,#include vo

17、id main()int n=1,d 2;double s=0.0,s0;while(s0=double(n)/d)=0.000001)s+=s0;n+=2;/ni+1=d+=d;/di+1=2di cout s=s endl;,#include void main()int n=1,d 2;double s=0.0,s0;while(s0=double(n)/d)=0.000001)s+=s0;n+=2;/ni+1=d+=d;/di+1=2di cout s=s endl;,可写为1.0*n/d,例:累加所有绝对值大于等于0.000001的项来计算sin x的近似值 序号 分子(n)分母(d

18、)1 x 1!2 x(-x2)=-x3 1!23=3!3(-x3)(-x2)=x5 3!45=5!4 x5(-x2)=-x7 5!67=7!i ni di i+1 ni(-x2)di(2i-2)(2i-1),void main()double x,i=1.0,n,d=1.0,s=0,s0;cout x;x=x*3.14159/180;n=x;s0=n/d;while(s0=0.000001|s0=-1.0e-6)s+=s0;/将通项值加到结果的近似值上 i+;/处理下一项 n=n*(-x*x);d=d*(2*i-2)*(2*i-1);s0=n/d;/计算新的通项值 cout sin x=s e

19、ndl;,#include#include void main()double x,i=1.0,n,d=1.0,s=0,s0;cout x;x=x*3.14159/180;n=x;s0=n/d;while(fabs(s0)=0.000001)s+=s0;i+;n=n*(-x*x);d=d*(2*i-2)*(2*i-1);s0=n/d;cout sin x=s endl;,系统函数,do-while循环,语法:do 语句while(表达式);,表达式,语句,非0,0,出口,入口,例:输入一个整数,将各位数字反序输出,#include using namespace std;int main()i

20、nt x;cout x;cout The number in reverse order is;do cout(x%10);x/=10;while(x!=0);cout endl;return 0;,运行,while 与 dowhile的区别,while:循环体将执行 0 N 次do.while:循环体将执行 1 N 次,for 循环,语法:for(e1;e2;e3)循环体其中e1、e2、e3 是三个表达式,它们的作用相当于 for(初始化;循环条件;修改循环控制变量动作)循环体例:for(int i=0;i 3;i+)cout i is i endl;,for语句的执行流程,for(e1;e

21、2;e3)循环体,运行举例,for(int i=0;i 3;+i)cout i is i endl;cout all done endl;,运行举例,for(int i=0;i 3;+i)cout i is i endl;cout all done endl;,运行举例,for(int i=0;i 3;+i)cout i is i endl;cout all done endl;,i is 0,运行举例,for(int i=0;i 3;+i)cout i is i endl;cout all done endl;,i is 0,运行举例,for(int i=0;i 3;+i)cout i is

22、 i endl;cout all done endl;,i is 0,运行举例,for(int i=0;i 3;+i)cout i is i endl;cout all done endl;,i is 0i is 1,运行举例,for(int i=0;i 3;+i)cout i is i endl;cout all done endl;,i is 0i is 1,运行举例,for(int i=0;i 3;+i)cout i is i endl;cout all done endl;,i is 0i is 1,运行举例,for(int i=0;i 3;+i)cout i is i endl;co

23、ut all done endl;,i is 0i is 1i is 2,运行举例,for(int i=0;i 3;+i)cout i is i endl;cout all done endl;,i is 0i is 1i is 2,运行举例,for(int i=0;i 3;+i)cout i is i endl;cout all done endl;,i is 0i is 1i is 2,运行举例,for(int i=0;i 3;+i)cout i is i endl;cout all done endl;,i is 0i is 1i is 2all done,for语句中的e1、e2、e3

24、均可省略,但“;”不能省,#using namespace std;int main()/求自然数100以内的偶数之和 int i=2,sum=0;for(;i=100;)/省略e1和e3 sum+=i;i+=2;cout sum=sum endl;return 0;,#using namespace std;int main()/求自然数100以内的偶数之和 int i=2,sum=0;for(i=2;i=100;i+=2;)sum+=i;cout sum=sum endl;return 0;,1、e2、e3均可为逗号表达式,#include using namespace std;int

25、main()int i,sum for(i=2,sum=0;i=100;sum+=i,i+=2);cout sum=sum endl;return 0;,没有循环体,不要忘了写分号,最好这样写,#include using namespace std;int main()int i,sum=0;for(i=2;i=100;i+=2)sum+=i;cout sum=sum endl;return 0;,while 循环,可在语句块中放任意代码.甚至其他循环,多重循环(循环的嵌套),多重循环是在一个循环语句的循环体内又包含另一个循环语句。嵌套时要注意必须将一个完整的循环结构整体放在另一个循环体内。

26、上述三种循环语句既可以自身嵌套,也可以互相嵌套。,hours,minutes,在我们每天的生活中存在一个嵌套循环:,嵌套循环(一个循环中套着另一个循环),时间,产生时间输出,int hour=0,min;while(hour 24)min=0;while(min 60)cout hour:min endl;min=min+1;/minute 循环结束 hour=hour+1;/hour循环结束,int hour=0,min;while(hour 24)min=0;while(min 60)cout(hour 10?0:“”)hour;cout:;cout(min 10?0:“”)min end

27、l;min=min+1;/end of minute loop hour=hour+1;/end of hour loop,输出?,int cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0;cnt1+;for(int i=1;i=10;+i)cnt2+;for(int j=1;j=20;+j)cnt3+;cnt4+;cnt5+;cout“cnt1:“cnt1 endl“cnt2:“cnt2 endl“cnt3:“cnt3 endl“cnt4:“cnt4 endl“cnt5:“cnt5 endl;,输出?,Answer:,cnt1:1cnt2:10cnt3:200cnt4:1

28、0cnt5:1,例:输出如下图形,*,行号 空格数*数 0 5 1 1 4 3 2 3 5 3 2 7 4 1 9 5 0 11.i 5-i 2i+1,#include using namespace std;int main()for(int i=0;i 6;i+)for(int j=0;j 5-i;j+)cout;for(j=0;j 2*i+1;j+)cout*;cout endl;return 0;,运行,*,跳转语句,跳转语句是辅助性语句,不单独使用,一般与选择语句或循环语句结合起来使用,起到控制程序结构的作用。跳转语句包括:break语句continue语句goto语句(尽量不用),

29、break语句,break;,形式:,用于switch语句用于循环语句,用途:,当在循环体执行过程中遇到break语句时,终止循环的执行,中途退出循环,转去执行循环体后面的语句。,功能:,判断输入的某一正整数是否为素数,#include using namespace std;int main()int m;cout m;for(int i=2;i m;i+)if(m%i=0)break;if(i=m)cout m 是一个素数n;else cout m 不是一个素数n;return 0;,运行,#include using namespace std;int main()int m,flag=

30、0;cin m;for(int i=2;i m;i+)if(m%i=0)flag=1;break;if(flag)cout m 不是一个素数n;else cout m 是一个素数n;return 0;,嵌套循环中Break的用法,break 仅退出一层循环(如果嵌套)for(int row=1;row 10;row+)for(int col=1;col 10;col+)/do somethingif(?)break;/将退出 col 循环/col 循环/row 循环,continue语句,continue;,形式:,用途:,只用于循环语句中。,功能:,中断本次循环体的执行,立即执行下一次循环。

31、,例:将100以内能被3整除的数输出,每行输出10个数。,#include using namespace std;int main()int k=0;for(int i=1;i 100;i+)if(i%3!=0)continue;cout i;if(+k%10=0)/控制每行输出10个数 cout endl;cout endl;return 0;,运行,在循环中使用break 和 continue,首先看看能否不使用break 和 continue就能解决问题若只能使用 break 和 continue是否是唯一解法 或使得代码更容易理解注:尽可能不用goto.总会有更好的方法,Break的

32、另一种用法,break 可用于退出循环/在一些游戏中while(life 0)./玩游戏的代码 cout userResponse;if(userResponse=q)break;/结束 while 循环,不是最好的方法,/在一些游戏中userResponse=c;while(life 0/结束 while 循环,更好的解法,最好的解法,/in some gamedo/play game.cout userResponse;while(life 0,好的代码风格,适当注释命名要“见名知意”适当缩格、空格、空行块风格(Block Styles),代码的风格,编译器不需要空格 specDistance=speed+time/1.5235;但对人来说加空格更易于阅读specDistance=speed+time/1.5235;.在运算符前后加空格,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号