




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C C+语言程序设计语言程序设计if语句语句switchswitch语句语句循环语句循环语句循环中途的退出(循环中途的退出(breakbreak、continuecontinue)2 语法一语法一 if(表达式)(表达式) 程序段;程序段; 。;。;若表达式的值为真若表达式的值为真( (非非0) ),执行,执行程序段,再执行下一语句;否则程序段,再执行下一语句;否则直接执行下一语句。直接执行下一语句。 P483e.g. 从键盘输入一个字符,若是小写字母从键盘输入一个字符,若是小写字母则转换成大写字母并输出。则转换成大写字母并输出。# include using namespace std; v
2、oid main( ) char a; couta; if ( ) a=a-32; couta=97 & a=90) printf(excellent!); else if (score=80) printf(good!); else if (score=70) printf(fair!); else printf(bad!); if-else的的else部分部分还可嵌套还可嵌套if语句语句6请注意请注意 else不能单独使用,必须与不能单独使用,必须与if成对成对出现。出现。 从前到后,每个从前到后,每个else与离它最近的与离它最近的且还未配对的且还未配对的if进行配对。进行配对。
3、7e.g. 计算符号函数计算符号函数 的值。的值。 -1 x0# include using namespace std; void main( ) int x, y; coutx; if (x0) y= -1; else if (x=0) y=0; else y=1; cout“x=”x“,y=”yendl; 8 用一对用一对 括起来的一组语句,括起来的一组语句, 称为复合语句。称为复合语句。 末尾不需要分号。末尾不需要分号。如:如:if (x0) y+; x=2*x; if (x0) y+;x=2*x;9e.g. 输入三个整数,将它们按从小输入三个整数,将它们按从小 到大的顺序输出。到大的
4、顺序输出。10# include using namespace std; void main( ) int a, b, c, t; coutabc; if (ab) t=a; a=b; b=t; /如果如果ab,ab,交换交换a a和和b b的值的值 if (ac) t=a; a=c; c=t; if (bc) t=b; b=c; c=t; cout“排序结果为排序结果为:”a b cb?a:b; abs=x0?-x:x;? : 叫做条件运算符。叫做条件运算符。12 条件运算符的优先级高于赋值运条件运算符的优先级高于赋值运算符,低于逻辑运算符算符,低于逻辑运算符 条件运算符为右结合性条件运算
5、符为右结合性 只有当只有当if的两个分支为给同一变量的两个分支为给同一变量赋值时才可用条件表达式取代。赋值时才可用条件表达式取代。13e.g. 从键盘输入一个字符,若是小写字母从键盘输入一个字符,若是小写字母则转换成大写字母并输出。则转换成大写字母并输出。# include using namespace std; void main( ) char a; couta; a= ; couta=97 & a=122 ? a-32 : a14 语法:语法: switch( (表达式表达式) ) case 常量常量1: 程序段程序段1; case 常量常量2: 程序段程序段2; case 常
6、量常量n: 程序段程序段n; default: 程序段程序段n+1; 空格空格 P5015 功能:计算表达式的值,若其值功能:计算表达式的值,若其值 等于某常量等于某常量i,则从程序段,则从程序段i 开始往下执行。开始往下执行。 说明:说明:1case后应是一个固定的常量值,后应是一个固定的常量值, 且且均为整型值或字符。均为整型值或字符。2各各case后的常量值必须互异。后的常量值必须互异。164通常,每个程序段最后用通常,每个程序段最后用break语句语句 退出退出switch;若没有;若没有break,则继,则继 续执行下一个续执行下一个case后的程序段。后的程序段。5多个多个case
7、可以共用同一程序段。可以共用同一程序段。 说明:说明:3case分支中的程序段可包含多条分支中的程序段可包含多条语句,且可以不用语句,且可以不用 176若没有常量值与表达式的值相等,若没有常量值与表达式的值相等, 就执行就执行default后的程序段;若无后的程序段;若无 default部分,就直接退出部分,就直接退出switch 语句。语句。default部分可有可无。部分可有可无。 说明:说明:18e.g. 从键盘上输入一个从键盘上输入一个17的整数的整数day,输出对应星期数。输出对应星期数。19# include using namespace std; void main( ) in
8、t day; cinday; switch(day) case 1: cout“星期一星期一n”; break; case 2: cout“星期二星期二n”; break; 20case 3: cout“星期三星期三n”; break;case 4: cout“星期四星期四n”; break; case 5: cout“星期五星期五n”; break; case 6: cout“星期六星期六n”; break;case 7: cout“星期日星期日n”; break;default: cout“输入错误输入错误!n”; 21 语法:语法: while( (表达式表达式) ) 循环体;循环体;
9、功能:当表达式的值非功能:当表达式的值非0时,反复时,反复 执行循环体。执行循环体。 P5222表达式表达式循循 环环 体体whileTF循环控制条件循环控制条件23e.g. 求正整数求正整数n的所有约数及约数个数的所有约数及约数个数# include using namespace std; void main( ) int i, n, count=0; coutn;24 i=1; /i/i表示表示n n的整数,初始值为的整数,初始值为1 1 while(i=n) if (n%i=0) /如果如果i i是是n n的约数的约数 couti ; count+; i+; /准备考查下一个准备考查下
10、一个i i是否是否n n的约数的约数 cout“nFind ”count“ factors”endl; 复合语句25 语法:语法: do 循环体循环体 while ( (表达式表达式);); 功能:先执行循环体,再检测表达式功能:先执行循环体,再检测表达式 的值。若非的值。若非0,则继续执行循,则继续执行循 环体;否则,退出循环。环体;否则,退出循环。 P5326e.g.:do coutn; while(n=0);要求必须输入正数要求必须输入正数27e.g. 不断从键盘输入实数,边输入边累加,不断从键盘输入实数,边输入边累加,直到它们的和超过直到它们的和超过1000时停止。时停止。 28# i
11、nclude using namespace std; void main( ) double x, s; coutx; s+=x; while(s=1000); cout“累加结果:累加结果:”sendl; 29while语句和语句和do-while语句的区别:语句的区别: 执行执行while语句,可能一次都不语句,可能一次都不 执行循环体。执行循环体。 执行执行do-while语句,至少执行一语句,至少执行一 次循环体。次循环体。30 语法:语法: for( (表达式表达式1; 表达式表达式2; 表达式表达式3) ) 循环体;循环体; 功能:功能:1先执行表达式先执行表达式1 2检测表达式
12、检测表达式2的值,若非的值,若非0, 则执行循环体,再转则执行循环体,再转3; 否则,退出循环否则,退出循环 3执行表达式执行表达式3,转,转2 P5431for表达式表达式1循循 环环 体体表达式表达式3表达式表达式2TF通常用来初始化通常用来初始化循环变量循环变量循环控制条件循环控制条件通常用来改变通常用来改变循环变量循环变量32e.g. 一只老鼠咬坏了书,公式中符一只老鼠咬坏了书,公式中符号代表被老鼠咬掉的数字,要想号代表被老鼠咬掉的数字,要想恢复以下等式,在中可填上哪个恢复以下等式,在中可填上哪个相同的数字?相同的数字? 3623733564 33# include using nam
13、espace std; void main( ) int i; for(i=1; i=9; i+) if(30+i)*6237=(10*i+3)*3564) cout“处填处填”iendl; 34e.g. 若一个正整数若一个正整数n的所有小于的所有小于n的约的约数之和等于数之和等于n,则称,则称n为完全数。例如,为完全数。例如,6=1+2+3,6是完全数,是完全数,28、496、8128也都是完全数。判断正整数也都是完全数。判断正整数n是否是否完全数。完全数。35# include using namespace std; void main( ) int i, n, s; coutn; s=
14、0; for(i=1; in; i+) if (n%i=0) s+=i; if(s=n) coutn“是完全数是完全数”endl; else coutn“不是完全数不是完全数”endl; 36若循环体中仍包含循环语句,称为若循环体中仍包含循环语句,称为多重循环。多重循环。e.g. 求求n以内的所有完全数。以内的所有完全数。 37# include using namespace std;void main( ) int i, j, n, s; coutn; for(i=1; in; i+) s=0; for(j=1; ji; j+) if(i%j=0) s+=j; if (s=i) couti
15、“ ” ; 38e.g. 编写程序输出行数为编写程序输出行数为n的如下图形的如下图形( (如如n=4) )。 * * * * * * * * * * * * * * * * * * *39# include using namespace std; void main( ) int i, j, n; coutn; for(i=1; i=n; i+) for(j=1; j=n-i; j+) cout“ ”; for(j=1; j=2*i-1; j+) cout“*”; coutendl; /一行一行* *输入完毕,需换行输入完毕,需换行 40# include #includeusing nam
16、espace std; void main( ) int a, b, c, m, n; for(a=1; a=9; a+) for(b=0; b=9; b+) for(c=0; c=9; c+) m=a*100+b*10+c; n=pow(a, 3)+pow(b, 3)+pow(c, 3); if (m=n) coutm“ ”; e.g. 求三位数的水仙花数求三位数的水仙花数 ( (abc=a3+b3+c3) )。 411. break语句语句 功能:提前退出循环。功能:提前退出循环。 只用于循环语句和只用于循环语句和switch语句中。语句中。 P5642# include using na
17、mespace std;void main( ) int i, n; coutn;e.g. 判断某整数判断某整数n是否质数。是否质数。 43 if (n2) cout“请输入请输入2的整数的整数!”endl; else for(i=2; i=n) / for循环没有中途退出,循环没有中途退出,n是质数是质数 coutn“是质数是质数”endl; else / for循环中途退出,循环中途退出,n不是质数不是质数 coutn“不是质数不是质数”endl; break语句只能退出当前层循环。语句只能退出当前层循环。44# include using namespace std;void main(
18、 ) int i, n; coutn; if (n2) cout“请输入请输入2的整的整 数数!”endl;e.g. 求求n以内的所有质数。以内的所有质数。 45for(j=2;jn;j+) for(i=2; i=j) coutj是质数endl; else coutj不是质数endl; 462. continue语句语句 功能:提前结束本次循环,功能:提前结束本次循环, 进入下一次循环。进入下一次循环。e.g. 统计统计1n中能被中能被3整除的数的个整除的数的个数。数。 只用于循环语句中。只用于循环语句中。47# include using namespace std; void main(
19、) int x, n, total=0; coutn; for(x=1; x=n; x+) if (x%3!=0) continue; total+; coutn“之内有之内有”total“个数能被个数能被3整除整除”; 1.有如下程序段有如下程序段 int x=3; do x-=2; coutx; while(!(-x); 执行这个程序的输出结果为(执行这个程序的输出结果为( ) A. 1 B.30 C.1-2 D.死循环死循环 C2006年等级考试试题年等级考试试题随堂练习随堂练习2.执行下列语句段后,输出结果是(执行下列语句段后,输出结果是( ) int i=0; while (i25)
20、 i+=3; couti; A. 24 B.25 C.27 D.28 C2006等级考试试题等级考试试题3.执行下列语句后,变量执行下列语句后,变量sum的值是(的值是( ) int sum=0; for(int i=1;i=3;i+) for (int j=1;j=I;j+) sum+; 62007等级考试试题等级考试试题4.下面程序段的运行结果为(下面程序段的运行结果为( ) void main()() int i; for(i=1;i=4;i+) if(i%2)cout “*”; else continue; cout“#”; cout“$”endl; *#*#$5.下面程序段的运行结果
21、为(下面程序段的运行结果为( ) int i=0,a=0,s=1;do a=a+s*i; s=-s; i+; while(i10);cout“a=“aendl; -5习题课(习题课(1 1)54eg.求求n!(n由键盘输入由键盘输入)void main( ) int i,s,n; coutn; s=1; for (i=1; i=n;i+) s=s*i; couts; 【思考思考】求求 (即求即求1!+2!+10!)。)。 提示提示用双重循环实现求和(外循环作累加,内用双重循环实现求和(外循环作累加,内循环求阶乘)循环求阶乘) 101!nn eg.有一分数序列有一分数序列: 求这个数求这个数列前
22、列前10项之和。项之和。 提示提示 观察分子、分母变化的规律。观察分子、分母变化的规律。12233558分析分析 因为已知求前因为已知求前10项之和,所以利用项之和,所以利用for循循环,循环环,循环10次,每次算出当前项次,每次算出当前项 ai ,并并把它加到和把它加到和 s上。上。57void main( )float a, b, t, s;int i;a=2; /* 分子分子 */b=1; /* 分母分母 */s=0; 保证后面分子、分母保证后面分子、分母相除得到的是小数相除得到的是小数58for(i=1;i=10;i+) /* 控制循环控制循环10次次 */s+=a / b;t =a;
23、 /*必须引入中间变量必须引入中间变量 t */ a=a+b;b= t;coutsum=s;59e.g.求输入的正整数求输入的正整数m和和n的最大公约数的最大公约数算法算法 以以m=12,n=16为例说明为例说明循循 环环即即 辗转相除法辗转相除法: m%nr 若若r!=0,则则n m r n m%nr直到直到r=0时,输出此时的时,输出此时的n 即为所求。即为所求。60void main( ) int m,n,r;coutmn;61 r=m%n; while(r!=0)m=n;n=r;r=m%n; coutresult“ n; while( r )e.g.百元买百鸡:用一百元钱买一百只鸡。已
24、知百元买百鸡:用一百元钱买一百只鸡。已知公鸡公鸡5元元/只,母鸡只,母鸡3元元/只,小鸡只,小鸡1元元/3只。只。分析分析:这是个不定方程:这是个不定方程三元一次方程组问三元一次方程组问题(三个变量,两个方程)题(三个变量,两个方程) xyz=100 5x3yz/3=100设公鸡为设公鸡为x只,母鸡为只,母鸡为y只,小鸡为只,小鸡为z只。只。则则0 x 100、 0 y 100、 0 z 100void main( ) int x,y,z; for (x=0;x=100;x+) for (y=0;y=100;y+) for (z=0;z=100;z+) if (x+y+z=100 & 5*x+3*y+z/3.0=100 ) coutxyz; 【 讨 论讨 论 】 此 为此 为 “ 最 笨最 笨 ”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论