欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

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

    • 资源ID:2252329       资源大小:786.01KB        全文页数:100页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    ,第二章 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) 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“偶数之和为:”even_sumendl; cout“奇数之和为”odd_sumendl; ,处理过程:程序描述算法,算法的基本控制结构,顺序结构 分支结构 循环结构,顺序结构,语句A,语句B,C+语句,表达式语句:表达式之后加上分号。 空语句:只由一个分号构成。 复合语句:将一组语句序列用括起来,在语法上等价于一条语句。如: 控制语句:选择语句、循环语句和转移语句 。,例:int x = 1; /声明语句 x = x + 10; /表达式语句,例: t = a; a = b; b = t; ,如何解决分支问题?,输入一个年份,判断是否闰年。需用选择结构,选择结构(分支结构),流程图说明:,进入该结构后,判断条件是否成立,成立则执行语句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; bool IsLeapYear; cout year; IsLeapYear = (year % 4 = 0 ,16,块中有两条以上的语句,if ( life 0 ) cout “I'm feeling pretty good n”; cout “let's go fight some bad guys n”; else / false块 cout “GaspI am dead n”; cout “goodbye cruel world n”; ,/ true 块,块中有两条以上的语句,if ( life 0 ) cout “I'm feeling pretty good n”; cout “let's 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 = ( 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 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 score; if ( score = 90 ) cout = 80 ) cout = 70 ) cout = 60 ) cout “Grade: D n“; else cout “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; ,运行,#include using namespace std; int main( ) float a , b , c; cout 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; 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 namespace 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; 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 Computers,Computers are really quick Computers don't 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; ,只要条件为真,循环语句,循环语句,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 ( 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; 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 = 0 while ( i 10 ) / 忘记 i+; ,执行次数?,while ( int i=3 ) i-;,例: 求数列 所有大于等于 0.00001的数据项之和。,方法一:利用通项公式 序号 分子 分母 × 2 × 2 × 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.000001) 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; 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 ) 1 x 1! 2 x ·(-x2)= -x3 1!·2·3=3! 3 (-x3)·(-x2)= x5 3!·4·5=5! 4 x5·(-x2)= -x7 5!·6·7=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 endl; ,#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() 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(初始化 ; 循环条件 ; 修改循环控制变量动作) 循环体 例: 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“ 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 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,运行举例,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,运行举例,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以内的偶数之和 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 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 循环,可在语句块中放任意代码. .甚至其他循环,多重循环(循环的嵌套),多重循环是在一个循环语句的循环体内又包含另一个循环语句。 嵌套时要注意必须将一个完整的循环结构整体放在另一个循环体内。 上述三种循环语句既可以自身嵌套,也可以互相嵌套。,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 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; 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; 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语句 用于循环语句,用途:,当在循环体执行过程中遇到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; 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 something if ( ? ) break; / 将退出 col 循环 / col 循环 / row 循环,continue语句,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,首先看看能否不使用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; 在运算符前后加空格,

    注意事项

    本文(第2章C简单程序设计.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开