C++学习之选择结构.doc_第1页
C++学习之选择结构.doc_第2页
C++学习之选择结构.doc_第3页
C++学习之选择结构.doc_第4页
C++学习之选择结构.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+程序设计学习用书推荐今天的主题是:选择结构例题例题1 给定两个整数a与b, 输出其中较小值。【分析】首先读入两个整数a和b,然后比较a和b的大小:如果ab则输出a,否则输出b。【参考程序1】 #include #include using namespace std; int min(int a, int b) if (a b) return a; else return b; int main() int a, b; printf(请输入a和b:); / %d 整型 %f实型 %e实型(科学计数法表示) %c 字符类型/coutab; printf(较小的是:%dn, min(a, b); /cout” 较小的是:”min(a,b)0)时,执行语句(块)1;否则,执行语句(块)2。其中else及以下部分不是必须的。注意表达式外一定要有小括号。布尔表达式1. 关系表达式在C+中,使用=、=、=、等表示大小关系的表达式,返回结果为0(结果为假,即情况不成立)或1(结果为真,即情况成立)。2. 其他表达式在C+中,若表达式返回的值为0,则结果被认为是假;若表达式返回的值不为0,则结果被认为是真。请观察下面的例子: if (-2) printf(True!n); else printf(False!n);屏幕上将输出True!,而不是False!。【参考程序2】 #include #include using namespace std; int min(int a, int b) return (a b)? a:b; int main() int a, b; printf(请输入a和b:); scanf(%d%d, &a, &b); printf(较小的是:%dn, min(a, b); system(pause); return 0; 条件运算符条件运算符的格式如下:表达式1 ? 表达式2 : 表达式3它表示:若表达式1为真(非0),则返回表达式2,否则返回表达式3。下面的函数返回两个数中较小的一个:long min( long a, long b) return (a0) ? sum/n : 0;例题2 已知三条线段的长度(均为正整数),判断这三条线段是否能构成三角形;若能构成三角形,判断所构成三角形的形状。【分析】读入三条线段的长度,依次记为a、b、c。如果(a+b=c)或(a+c=b)或(b+c=a)则可以判断这三条线段不可能构成三角形,否则对所构成三角形的形状进行判断。1. 构成等边三角形的条件是(a=b)并且(b=c)成立。2. 构成等腰三角形的条件是(a=b)或者(a=c)或者(b=c)成立。3. 构成直角三角形的条件是(a*a+b*b=c*c)或者(a*a+c*c=b*b)或者(b*b+c*c=a*a)成立。【参考程序】 #include #include using namespace std; int main() int a, b, c; printf(请输入a、b和c:); scanf(%d%d%d, &a, &b, &c); if (a+b=c)|(b+c=a)|(a+c0),则执行语句(块)1;否则,若表达式2为真(0),则执行语句(块)2;否则,若表达式3为真(0),则执行语句(块)3;以此类推注意,每个else都与最近的一个if匹配,而用大括号括起的另当别论。因此,我们可以使用大括号,使语句的表达结果符合我们的期望,如if (表达式1)语句(块)if (表达式2)语句(块)语句(块)else 语句(块)这时,else匹配的是第一个if,而非第二个if。例题3 为保密,QS星球使用了特殊的指令,指令以字符的形式发出,并且应用了加密策略。日前,他们加密的规则被我们获悉,原来规则如此有趣:将每一个字母变成它的后继,例如“A”变成“B”、“Z”变“A”,“z”变“a”,其它字符不变。现在,请你破译接收到的一个指令。【分析】破译指令,只要按加密的逆规则转换即可。于是,根据题意,对于字母,要转换成它的前驱,特殊地:A转换成Z、a转换成z;其他字符保持不变。由于字符很多,因此应该分多种情况进行处理。【参考程序1】 #include #include using namespace std; int main() char ch; /定义字符类型 printf(请输入一个字符:); scanf(%c, &ch); /注意字符类型的标识符%c if (ch=Z) /注意使用单引号,表示字母A对应的编码 printf(An); else if (ch=A)&(ch=a)&(chz) printf(%cn, ch+1); else printf(%cn, ch); system(pause); return 0; 请注意程序中的注释。【参考程序2】 #include #include using namespace std; int main() char ch; printf(请输入一个字符:); scanf(%c, &ch); switch (ch) case a: printf(bn); break; /case的情况匹配后继续比较,必须人为中止 case b: printf(cn); break; case c: printf(dn); break; case d: printf(en); break; case e: printf(fn); break; case f: printf(gn); break; case g: printf(hn); break; case h: printf(in); break; case i: printf(jn); break; case j: printf(kn); break; case k: printf(ln); break; case l: printf(mn); break; case m: printf(nn); break; case n: printf(on); break; case o: printf(pn); break; case p: printf(qn); break; case q: printf(rn); break; case r: printf(sn); break; case s: printf(tn); break; case t: printf(un); break; case u: printf(vn); break; case v: printf(wn); break; case w: printf(xn); break; case x: printf(yn); break; case y: printf(zn); break; case z: printf(an); break; case A: printf(Bn); break; case B: printf(Cn); break; case C: printf(Dn); break; case D: printf(En); break; case E: printf(Fn); break; case F: printf(Gn); break; case G: printf(Hn); break; case H: printf(In); break; case I: printf(Jn); break; case J: printf(Kn); break; case K: printf(Ln); break; case L: printf(Mn); break; case M: printf(Nn); break; case N: printf(On); break; case O: printf(Pn); break; case P: printf(Qn); break; case Q: printf(Rn); break; case R: printf(Sn); break; case S: printf(Tn); break; case T: printf(Un); break; case U: printf(Vn); break; case V: printf(Wn); break; case W: printf(Xn); break; case X: printf(Yn); break; case Y: printf(Zn); break; case Z: printf(An); break; default : printf(%cn, ch); /相当于if-else语句嵌套中的最后一个else system(pause); return 0; switch语句switch语句的格式如下:switch (有序类型) case 常量表达式1: 语句(块)1case 常量表达式2: 语句(块)2case 常量表达式3: 语句(块)3.case 常量表达式n: 语句(块)ndefault: 语句(块)它表示,当有序类型的值与常量表达式1匹配时,执行语句(块)1;当有序类型的值与常量表达式2匹配时,执行语句(块)2;当有序类型的值与常量表达式3匹配时,执行语句(块)3;以此类推而无论有序类型的值为多少,都可以会default匹配。注意,只有有序类型才可以使用switch语句。switch语句执行时,逐条尝试匹配case的情况,一旦匹配不会自动停止。default语句不是必须的,它总是被放在最后面,相当于if-else语句嵌套中的最后一个else。在switch语句中,多条case语句可以共用匹配后执行的语句(块),如下面的例子:int a;scanf(“%d”, &a);switch (a)case 1:case 2:case 3: printf(“OK!”); break; 当a为1、2或3时,屏幕上都会输出OK!。习题习题1 给定两个整数a与b, 输出其中较大值。习题2 输入任意三个互不相等的整数,将其按从大到小的顺序输出。习题3 超市为了促销,经常打折销售。购物超过50元,即可打折优惠:1. 超过50元,打9.5折;2. 超过100元,则打9折;3. 超过200元,则打8折;4. 超过300元,则打7折。当购物满s元时,实际付费多少呢?习题4 输入两个操作数和相应的运算符后,计算其运算结果。这里假设运算符只有+、-、*、/,且两个运算数均为整数。提示:可以使用switch语句实现。习题5 给定年份和月份,求该月共有多少天。提示:可以使用switch语句实现。习题6 现在学生档案中经常采用等级评价,于是李老师想将百分制成绩转化为等级。李老师的成绩单上的成绩都是整数,他约定等级与百分制之间的对应关系如下:A:90-100B:80-89C:60-79D:0-59请编程将任意给定的分数转化为等级。更多的习题机器人的移动问题【问题描述】在一个平面直角坐标系上,一个机器人处于某格点 (x0,y0)处,格点的横纵坐标均为整数。有一个遥控器可以让机器人实现9种可能的运动方式,它们依次是:1. 向左走一个单位2. 向右走一个单位3. 向上走一个单位4. 向下走一个单位5. 走到格点(x0,y0)关于x轴的对称点6. 走到格点(x0,y0)关于y轴的对称点7. 走到格点(x0,y0)关于原点的对称点8. 以格点(x0,y0)与原点的连线为轴,逆时针旋转90度9. 以格点(x0,y0)与原点的连线为轴,顺时针旋转90度其中,以横坐标x值增大为向右,以纵坐标y值增大为向上。现已知机器人的初始位置(x0,y0)以及遥控器此次发出的指令编号i(1=i=9),问机器人执行指令后所到的位置。【输入】三个整数x0、y0、i,彼此之间用空格隔开。【输出】两个整数x和y,表示机器人移动后所到坐标为(x,y)。解方程的困扰【问题描述】这几天,数学课上正在学习解一元二次方程。自然,这几天的数学作业都是解方程,里面有一元二次方程,也有一元一次方程,更有甚者,还有恒等式与矛盾式。数学老师希望同学们熟练地掌握求解方程的方法和技巧,所以留了上百道练习题。这下笑笑就惨了,他算了一下,即使他不睡觉也不可能完成那么多的作业。于是,笑笑找到了你,希望你能够编出一个程序帮助他完成解方程的任务。值得庆幸的是,作业中的方程都已经化成了ax2+bx+c=0的形式(其中a,b,c均为整数)。【输入】a,b,c三个整数,用空格隔开,表示所需求解的方程是ax2+bx+c=0。需要注意,a,b,c均有可能为零。【输出】解这个方程的全过程,即对于解这个方程而言,笑笑在作业中所需写出的步骤与结果。要求最后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论