[从业资格考试]C++课件二.ppt

上传人:音乐台 文档编号:1999637 上传时间:2019-01-30 格式:PPT 页数:44 大小:435KB
返回 下载 相关 举报
[从业资格考试]C++课件二.ppt_第1页
第1页 / 共44页
[从业资格考试]C++课件二.ppt_第2页
第2页 / 共44页
[从业资格考试]C++课件二.ppt_第3页
第3页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[从业资格考试]C++课件二.ppt》由会员分享,可在线阅读,更多相关《[从业资格考试]C++课件二.ppt(44页珍藏版)》请在三一文库上搜索。

1、问题:从键盘读入一个整数,反序输出其各个位数,比如输入123,输出321。 算法:(三位数) int main() int a;cina; couta%10;a=a/10;/输出个位数 couta%10;a=a/10;/输出十位数 couta%10;a=a/10;/输出百位数 return 0; ,热身,算法:(三位数) int main() int a;cina; while(a!=0) couta%10;a=a/10;/输出当前a的个位数 return 0; ,(任意位数),继续,int main() int n,a,b,c; coutn; a=n/100;n=n%100;/取百位数 b=

2、n/10;n=n%10; /取十位数 c=n/1;n=n%1; /取个位数 if(a*a*a+b*b*b+c*c*c = n ) cout“是水仙花数”endl; else cout“不是水仙花数”endl; return 0; ,热身(赋值表达式改变变量的值),int n,a,b,c,d;,d=n;,d,C+程序设计,第3章 程序设计初步,课堂教学材料,基本内容: 1、顺序结构 2、关系表达式与选择结构 3、循环控制结构 重点: 选择结构和循环结构,程序设计初步,1、C+程序和语句 )C+源程序基本组成 预编译命令 声明或定义 函数 #include using namespace std;

3、 int main() 函数体;/由一系列语句组成 )声明语句(告诉编译程序一些基本信息) int a,b,c;/变量类型声明 int max(int x,int y);/函数声明,1、顺序结构,)执行语句 通知计算机执行一定操作。 (1)控制语句(选择和循环控制) (2)输入输出语句 cina;coutb; (3)表达式语句 c=a+b; c+a/3; (4) 空语句 ; (5)复合语句 c=a+b; c+a/3; /多个语句当做一个语句来看(使用),1、顺序结构,4)顺序结构(示例) int main() int n,a,b,c; coutn; a=n/100;n=n%100;/取百位数

4、b=n/10; n=n%10; /取十位数 c=n/1; n=n%1; /取个位数 cout“各个位数的平方和为“ a*a+b*b+c*c; return 0; 特点:每个语句依次被执行到。,问题:一个数成为同构数,如果它的平方的尾数为自己。比如:5是同构数,因为 55=25 又6是同构数,因为 66=36。 编写一个程序,从键盘读入一个1位数,判定它是否是同构数。 int main() int a,b; couta;b=a*a; couta; if(b%10-a!=0)cout“不“; cout“是同构数“;return 0; ,1)布尔型数据 bool 空间=1字节 两个值 真true 假

5、false 解决条件是否成立的判定问题 2)C+关系运算符 恒等= 不等!= 大于 小于= 小于等于= 3)C+逻辑运算符 与& 或| 非!,2、选择结构,4)c+允许数值数据自动转换为逻辑数据使用,非零数值转换成真,零值转换成假。 比如:bool b1,b2;b1=0.1;b2=-0.001; couta;b=a*a;couta; if(b%10-a!=0)cout“不”; cout“是同构数”;return 0; ,2、选择结构,if(b%10-a)cout“不”;,int main() int n,a,b,c,d; coutn;d=n; a=n/100;n=n%100;/取百位数 b=n

6、/10;n=n%10; /取十位数 c=n/1;n=n%1; /取个位数 if(d=a*a*a+b*b*b+c*c*c) cout“是水仙花数”endl; else cout“不是水仙花数”endl; return 0; ,C+条件语句,1)形式 if(表达式1) 语句; else 语句2; (1) 表示可有可无 (2) 执行过程: 如果表达式1为真, 执行语句1 否则,执行语句2,2)更一般的形式 if(表达式1) 语句; else if(表达式2) 语句2; else 语句n; 3)嵌套选择 int a;cina; if(a=0) if(a0)cout“输入的是正数”; else cout

7、“输入的是零”; else cout“输入的是负数”;,条件语句自身是一个语句,C+条件语句,if(a0) cout“输入的是正数”; else if(a=0)cout“输入的是零”; else cout“输入的是负数”;,C+条件语句,编写一个C+程序,从键盘读入两个整数,显示两数中较大的那个数。 int main() int a,b;cinab; if(ab)couta; else coutb; return 0; ,问题:编写一个程序,从键盘读入一个3位数数,判定它是否被9整除。 int main() int n,a,b,c; coutn;coutn; a=n/100;n=n%100;/

8、取百位数 b=n/10; n=n%10; /取十位数 c=n/1; n=n%1; /取个位数 if(a+b+c)%9!=0)cout“不“; cout“能被9整除。“;return 0; ,if(n%9!=0)cout“不“; cout“能被9整除。“; return 0; ,5)C+条件语句的特点 (1)表示条件的关系表达式放在括号内 If(条件)语句; (2)条件语句使得程序中的语句不是全部被执行到,既有选择的执行语句。 If(条件)语句1;else 语句2; (3)条件语句中的语句如果很多,必须用 ,使它们变成一个复合语句。 If(a0)b=a;a=a+1;c+;,问题:编写一个程序,从

9、键盘输入17,输出星期一星期日。 int main() int a;cina;cout“星期”; if(a=1) cout“一”; else if(a=2) cout“二”; else if(a=3) cout“三”; else cout“日”; return 0;,分支选择结构和switch语句 1)形式 switch(整数值表达式) case 值1:语句1;break; case 值2:语句2;break; . case 值n:语句n;break; default:语句n+1; ,2)要求 表达式的值为整数(相当于) 3)执行 根据表达式的值,执行相应的值:后的语句 直到遇到break;语

10、句 (case 值i:不是语句,只是指示开始执行一段代码的起始入口点) 课堂练习1:应用分支选择结构,根据键盘输入的月份的值,输出该月份相对应的季节。,算法: 1)输入月份 2)使用开关选择语句,根据月份的值,输出季节 既 11,12,1冬季;2,3,4春季;5,6,7夏季; 8,9,10秋季,作业:P85 10,11 问题:从键盘读入一个整数,反序输出其各个位数,比如输入123,输出321。 分析: 1)如何求出个位数并显示 2)如何求出十位数并显示 3)如何继续上面做法求相应的位数并显示 4)如何停止,问题:求和 s=1+2+3+4。 解法分析: 1)语句 s=1+2+3+4; 2)s=0

11、; s=s+1; s=s+2; s=s+3; s=s+4;,3)s=0;i=1; s=s+i;i+; s=s+i;i+; s=s+i;i+; s=s+i;i+;,4)s=0;i=1; while(i=4) s=s+i;i+;,5)s=0;i=1; while(i=4) s+=i+;,循环结构和循环语句 1)while 循环 (1)形式 while(条件)语句; 示例: int i,s=0; i=1;while(i=100)s=s+i;i+; (2)与条件语句的区别 if(条件)语句; 表示如果条件为真就执行一次语句 while(条件)语句; 表示只要条件为真就反复执行语句,直到 条件为假。,条

12、件,语句,真,假,2)for循环 for(变量初值;条件;变量增量)语句; 示例: i=1;while(i=100)s=s+i;i+; for(i=1;i=100;i+) s=s+i; (1)表示先执行语句i=1,然后判定条件 (2)如果条件为真,执行s=s+i; (3)执行语句i+,回到(2) (4)如果条件为假,退出循环。,问题:从键盘读入一个整数,显示该整数是几位数。 分析问题:1)从键盘读cina; 2)计算位数:如果a是一位数,则a/10=0 如果a是两位数,则a/100=0 如果a是三位数,则a/1000=0 int i;i=0;while(a!=0)i+;a=a/10; 3)显示

13、couti; int i;for(i=0;a!=0;i+)a=a/10;,3)for循环变形 int s=0,i; for(i=0;i=100;i+) s+=i; int s=0,i=0; for(;i=100;i+) s+=i; int s=0,i=0; for(;i=100;)s+=i;i+; int s=0,i=0;while(i=100)s+=i;i+; 作业: 86页 15,18,素数(除1和自身没有其他因数)问题 (1)判断一个数是否素数 从键盘读入一个整数,显示是素数或不是。 算法:(1)从键盘输入一个整数放入n; (2)用2n-1去除它 (3)如果除尽,不是素数,否则素数 (2

14、)打印一个范围内的所有素数 从键盘读入一个整数,显示所有小于等于该数的素数,问题1:从键盘读一整数,判定是否素数 int main() int i,a;bool pd; cina;pd=true; for(i=2;ia;i+)if(a%i=0)pd=false; if(pd)couta“是素数“; return 0; ,问题2:显示2100以内的所有素数 int main() int i,a;bool pd; for(a=2;a=100;a+)pd=true; for(i=2;ia;i+)if(a%i=0)pd=false; if(pd)couta“,“; return 0; ,4)break

15、; 作用:从循环中强制退出循环。 int i,s=0;for(i=1;i=10;i+) if(i=5)break; s=s+i; 5)continue; 作用:强制进入下一个循环。 int i,s=0;for(i=1;i=10;i+) if(i=5)continue;s=s+i;,问题3:的计算(arctg(x)的级数展开,x取值1) /4=1-1/3+1/5-1/7+1/9- =(-1)0/(2*0+1)+(-1)1/(2*1+1)+ (-1)2/(2*2+1)+(-1)3/(2*3+1)+ (-1)i/(2*i+1)+ 直到最后一项的绝对值为10-7为止。 符号正好是 + - + - +

16、- ,即每次都反号。 int i;double s=0,t=1.0; for(i=0;1.0/(2*i+1)=1e-7;i+) s=s+t/(2*i+1);t=-t;,完整代码: #include using namespace std; int main() int i; double s=0,t=1.0; for(i=0;1.0/(2*i+1)=1e-7;i+) s=s+t/(2*i+1); t=-t; cout“的近似值为:“4*sendl; return 0; ,问题4: 猴子吃桃问题:书86页22题。 第一天吃前:x0个桃子 吃后:x1=x0/2-1个桃子 第二天吃前:x1个桃子 吃

17、后:x2=x1/2-1个桃子 第三天吃前:x2个桃子 吃后:x3=x2/2-1个桃子 第四天吃前:x3个桃子 吃后:x4=x3/2-1个桃子 第五天吃前:x4个桃子(1个桃子),反向分析: 第五天吃前:x4个桃子(1个桃子) 第四天吃后:x4个桃子 第四天吃前 x3=2*(x4+1)个桃子 第三天吃后:x3个桃子 第三天吃前 x2=2*(x3+1)个桃子 第二天吃后:x2个桃子 第二天吃前 x1=2*(x2+1)个桃子 第一天吃后:x1个桃子 第一天吃前 x0=2*(x1+1)个桃子,不管下标: int i,x; 第五天吃前:x个桃子(1个桃子) 第四天吃后:x个桃子 第四天吃前 x=2*(x

18、+1)个桃子 第三天吃后:x个桃子 第三天吃前 x=2*(x+1)个桃子 第二天吃后:x个桃子 第二天吃前 x=2*(x+1)个桃子 第一天吃后:x个桃子 第一天吃前 x=2*(x+1)个桃子 int i,x=1; for(i=4;i0;i-)x=2*(x+1);,代码: #include using namespace std; int main() int i,x=1; for(i=9;i0;i-) x=2*(x+1); cout“第一天有桃子”x“个“; return 0; ,问题4:设计一个程序,从键盘读入一个正数,输出它的平方根。 分析:假设x是a的平方根 就有 x*x=a; 既 2

19、*x*x=x*x+a; 也就是 x=(x+a/x)/2; 现在假设 y=1; x=y; y=(x+a/x)/2;,既给y一个初值,通过联立的公式,可以反复计算(x,y)。 现在如果计算到某一步时,xy; 会发生什么情况呢? xy=(x+a/x)/2; x(x+a/x)/2; x*xa; x是a的平方根的近似值。,思路总结: 要求计算a的平方根 x*x=a; 化成 2*x*x=x*x+a; x=(x+a/x)/2; 随便一个初值y=1 x=y; 有右边的计算公式 y=(x+a/x)/2; 如果计算到某步,有yx 就可以得到 x(x+a/x)/2; 最后算出a的近似平方根,现在的问题是如何判定 x

20、y; 通常我们用 x-y 的大小来判定它们的近似程度。比如:它们的绝对值小于10-7,表示xy 或者等价地 (x-y)*(x-y)=1e-14) x=y;y=(x+z/x)/2; return x; ,int main() double a;cina; double sroot(double z); cout=1.0e-14) x=y;y=(x+z/x)/2; return x; ,在来看程序运行的效果,也就是说,我们要用一批数据,去测试程序的正确程度,既平方根的近似程度。 用1,4,81,121,144,625 测试平方数的平方根 用2,3,5,7,122,146,629 测试非平方数的平 方根 在来看程序的初值 x=0 y=1 改为 x=1 y=10 或改为 x=10 y=100,结果很好,结果不依赖初值,这种设定一个初值,经过反复计算就可以求得问题的近似解的方法称为迭代法。 迭代法求解问题的要点:是设计一个反复计算的式子,找到近似解的判定条件。,作业:用迭代法,从键盘读入一个正数,显示它的立方根。,

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

当前位置:首页 > 其他


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