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

上传人:本田雅阁 文档编号:2252329 上传时间:2019-03-11 格式:PPT 页数:100 大小:786.01KB
返回 下载 相关 举报
第2章C简单程序设计.ppt_第1页
第1页 / 共100页
第2章C简单程序设计.ppt_第2页
第2页 / 共100页
第2章C简单程序设计.ppt_第3页
第3页 / 共100页
亲,该文档总共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(num

2、ber is an odd) odd_sum=odd_sum+number; else even_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; do coutnumber; if(number%2!=0) odd_sum+=number; else even_sum+=number; n+; while(n10); cout“偶数之和为

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

4、判断条件是否成立,成立则执行语句A, 否则执行语句B。 条件通常是关系表达式或逻辑表达式。,选择语句,选择语句: if 语句 switch语句,简单if 语句,if(表达式) 语句,语法:,if (radius = 0) area = radius * radius * PI; cout “The area for the circle of “ “ radius “ radius “ is “ area; ,if else 语句,语法: if(表达式) 语句1 else 语句2,执行流程,#include using namespace std; int main() int year; b

5、ool IsLeapYear; cout year; IsLeapYear = (year % 4 = 0 ,16,块中有两条以上的语句,if ( life 0 ) cout “Im feeling pretty good n”; cout “lets go fight some bad guys n”; else / false块 cout “GaspI am dead n”; cout “goodbye cruel world n”; ,/ true 块,块中有两条以上的语句,if ( life 0 ) cout “Im feeling pretty good n”; cout “lets

6、 go fight some bad guys n”; else cout “GaspI am dead n”; cout “goodbye cruel world n”; ,使用if 语句的说明, if(表达式)中的表达式可以是任意形式, 任意类型,只要结果是或非值。 if语句的执行部分若为两条以上的语句时,一定要写成复合语句形式,否则仅执行if后的第一条语句。,条件运算符,对简单的if语句可以用赋值语句实现: / num1, num2 and max 都是 int类型 if ( num1 num2 ) max = num1; else max = num2; 可以写成: max = ( n

7、um1 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 less than or equal to k“;,注意,if语句嵌套时else总是与离它最近的且尚未匹配的if相匹配。,为了强迫else子句与第一个if子句匹配,必须加一对括号。,例:输入一个成绩,给出该成绩的等级,成绩90 输出A; 80成绩90输出B; 70成绩8

8、0输出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 score; if ( score = 90 ) cout = 80 ) cout = 70 ) cout = 60 ) cout “Grade: D n“; else cout “Grade: E n“

9、; 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; ,运行,#include using namespace std; int main( ) float a , b , c; cout a b c; if (a b) b = a; if (c b

10、) 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 =

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

12、mespace std; int main() int score; char grade; cin score; switch( 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;

13、 cin left operator right; cout left “ “ operator “ “ right “ = “; switch (operator) case + : cout left + right endl; break; 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 C

14、omputers,Computers are really quick Computers dont get bored They can do the same thing over and over and be “happy”,循环结构,循环结构: 程序中有时需要反复地执行某些操作,这种结构的程序称为循环结构。 循环语句: 被反复执行的某些语句,称为循环体。,循环,什么是循环? some C+ code; some C+ code; some C+ code; some C+ code; some C+ code; some C+ code; some C+ code; ,只要条件为真,

15、循环语句,循环语句,C+提供了3种实现循环的语句: while语句 dowhile语句 for语句,while循环(当型循环),while(表达式) 语句,语法:,当条件成立时,反复执行语句部分,直到条件不成立退出循环,继续执行循环结构后面的语句。,例:求自然数100以内的偶数之和,#include using namespace std; int main() int i = 2 , sum = 0; while( i = 100 ) sum += i; i += 2; cout “sum=“ sum endl; return 0; ,运行,int cnt = 0; / 初始化 while

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

17、ut = ( 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 = 0 while ( i 10 ) / 忘记 i+; ,执行次数?,while ( int i=3 ) i-;,例: 求数列 所有大于等于 0.00001的数据项之和。,方法一:利用通项公式 序号 分子 分母 2 2

18、2 ,#include 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.000

19、001) s += s0; i+; cout “s= “ s endl; return 0; ,系统函数,方法二:递推公式 序号 分子 分母 +1,#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; ,#include void main() int n = 1 , d 2; double s = 0.0 , s0; whil

20、e( (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 ) 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 ,

21、 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 endl; ,#include #include void main() double x , i =

22、 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

23、 namespace std; int main() int 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(初始化 ; 循环条件 ; 修改循环控制变量动作)

24、循环体 例: for (int i = 0 ; i 3 ; i+) cout “i is “ i endl;,for语句的执行流程,for(e1 ; e2 ; 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“

25、 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 “ 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 i is 1,运行举例,for (int i = 0; i 3; +i) cout “i i

26、s “ i endl; cout “all done“ endl;,i is 0 i is 1,运行举例,for (int i = 0; i 3; +i) cout “i is “ i endl; cout “all done“ endl;,i is 0 i is 1,运行举例,for (int i = 0; i 3; +i) cout “i is “ i endl; cout “all done“ endl;,i is 0 i is 1 i is 2,运行举例,for (int i = 0; i 3; +i) cout “i is “ i endl; cout “all done“ endl

27、;,i is 0 i is 1 i is 2,运行举例,for (int i = 0; i 3; +i) cout “i is “ i endl; cout “all done“ endl;,i is 0 i is 1 i is 2,运行举例,for (int i = 0; i 3; +i) cout “i is “ i endl; cout “all done“ endl;,i is 0 i is 1 i is 2 all done,for语句中的e1、 e2、 e3均可省略,但“;”不能省,# using namespace std; int main() /求自然数100以内的偶数之和

28、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 mai

29、n() 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 循环,可在语句块中放任意代码. .甚至其他循环,多重循环(循环的嵌套),多重循环

30、是在一个循环语句的循环体内又包含另一个循环语句。 嵌套时要注意必须将一个完整的循环结构整体放在另一个循环体内。 上述三种循环语句既可以自身嵌套,也可以互相嵌套。,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,

31、min; while ( hour 24 ) min = 0; while ( min 60 ) cout (hour 10 ? 0 : “” ) hour; cout : ; cout (min 10 ? 0 : “” ) min endl; 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;

32、j = 20; +j) cnt3+; cnt4+; cnt5+; cout “cnt1: “ cnt1 endl “cnt2: “ cnt2 endl “cnt3: “ cnt3 endl “cnt4: “ cnt4 endl “cnt5: “ cnt5 endl;,输出?,Answer:,cnt1: 1 cnt2: 10 cnt3: 200 cnt4: 10 cnt5: 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

33、; 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语句 (尽量不用),break语句,break;,形式:,用于switch语句 用于循环语句,用途:,当在循环

34、体执行过程中遇到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 = 0; c

35、in 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 something if ( ? ) break; / 将退出 col 循环 / col 循环 / row 循环,continue

36、语句,continue;,形式:,用途:,只用于循环语句中。,功能:,中断本次循环体的执行, 立即执行下一次循环。,例:将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,首先看看能否不

37、使用break 和 continue就能解决问题 若只能使用 break 和 continue 是否是唯一解法 或 使得代码更容易理解 注: 尽可能不用goto 总会有更好的方法,Break的另一种用法,break 可用于退出循环 /在一些游戏中 while ( life 0 ) / 玩游戏的代码 cout userResponse; if (userResponse = q ) break; / 结束 while 循环,不是最好的方法,/ 在一些游戏中 userResponse = c; while ( life 0 / 结束 while 循环,更好的解法,最好的解法,/ in some game do / play game cout userResponse; while ( life 0 ,好的代码风格,适当注释 命名要“见名知意” 适当缩格、空格、空行 块风格(Block Styles),代码的风格,编译器不需要空格 specDistance=speed+time/1.5235; 但对人来说加空格更易于阅读 specDistance = speed + time / 1.5235; 在运算符前后加空格,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1