第3章谭浩强《C++程序设计》课件.ppt
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #include iostream #include iomanip using namespace std; int main( ) {long f1,f2; int i; f1=f2=1; for(i=1;i=20;i++) {coutsetw(12)f1setw(12)f2; if(i%2==0) coutendl; f1=f1+f2; f2=f2+f1; } return 0; } 例3.14 找出100~200间的全部素数。 编写程序如下: #include iostream #include cmath #include iomanip using namespace std; int main( ) {int m,k,i,n=0; bool prime; //定义布尔变量prime for(m=101;m=200;m=m+2) {prime=true; //循环开始时设prime为真,即先认为m为素数 k=int(sqrt(m)); //用k代表根号m的整数部分 for(i=2;i=k;i++) if(m%i==0) //如果能整除,表示m不是素数 { prime=false; //使prime变为假 break; //终止执行本循环 } if (prime) //如果m为素数 {coutsetw(5)m; //输出素数m,字段宽度为5 n=n+1; //n用来累计输出素数的个数 } if(n%10==0) coutendl; //输出10个数后换行 } coutendl; //最后执行一次换行 return 0; } 例3.15 译密码。为使电文保密,往往按一定规律将电文转换成密码,收报人再按约定的规律将其译回原文。例如,可以按以下规律将电文变成密码:将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。见图3.20。字母按上述规律转换,非字母字符不变。如″Wonderful!″转换为″Asrhivjyp!″。输入一行字符,要求输出其相应的密码。 图3.20 程序如下: #include iostream using namespace std; int main( ) {char c; while ((c=getchar( ))!=′\n′) {if((c=′a′ c=′z′) || (c=′A′ c=′Z′)) {c=c+4; if(c′Z′ c=′Z′+4 || c′z′) c=c-26; } coutc; } coutendl; return 0; } 运行结果如下: I am going to Beijing!↙ M eq ksmrk xs Fimnmrk! while语句中括号内的表达式有3个作用: ①从键盘读入一个字符,这是用getchar函数实现的; ②将读入的字符赋给字符变量c; ③判别这个字符是否为′\n′(即换行符)。如果是换行符就执行while语句中的复合语句(即花括号内的语句),对输入的非换行符的字符进行转换处理。 按前面分析的思路对输入的字符进行处理。有一点请读者注意:内嵌的if语句不能写成 if (c′Z′|| c′z′) c=c-26; 因为所有小写字母都满足“c′Z′”条件,从而也执行“c=c-26;”语句,这就会出错。因此必须限制其范围为“c′Z′ c=′Z′+4”,即原字母为′W′到′Z′,在此范围以外的不是原大写字母W~Z,不应按此规律转换。请考虑:为什么对小写字母不按此处理,即写成c′z′ c=′z′+4而只须写成“c′z′”即可。 * * * * * * * * * * * * * * * * * * * * * * * * * 例如,要判别某一年(year)是否为闰年。闰年的条件是符合下面两者之一: ①能被4整除,但不能被100整除。 ②能被100整除,又能被400整除。 可以用一个逻辑表达式来表示: (year % 4 == 0 year
显示全部