第3章控制结构成都理工大学孙淑霞C/C++程序设计教程(第4版)
授课提纲C语句和程序结构顺序结构分支结构循环结构控制结构程序举例
【实例1】编写程序,从0~9十个数中任取3个数用组合法组成1个3位数,计算其中各奇数之和。分析:3位数包含了100~999百位数b1:1~9十位数b2:0~9个位数b3:0~9任意一个3位数k=b1*100+b2*10+b3如果k%2!=0,则k为奇数如何根据b1、b2、b3组成一个3位数?如何判断一个数是否为奇数?
【实例1】编写程序,从0~9十个数中任取3个数用组合法组成1个3位数,计算其中各奇数之和。(续)#includemath.hintmain(void){inti,j,k,m;longsum=0; for(i=1;i10;i++)for(j=0;j10;j++) for(k=0;k10;k++){ m=i*100+j*10+k;if(m%2!=0)sum+=m; } printf(Sum=%ld\n,sum);}
【实例2】输出100~200之间9的倍数的自然数。#includestdio.hintmain(void){intn;for(n=100;n=200;n++){if(n%9!=0)continue;printf(%5d,n);}return(0);}continue的作用是结束本次循环,即跳过本次循环中尚未执行的语句,继续执行下一次循环。continue语句和break语句的区别:continue语句只结束本次循环,而不终止整个循环;break语句则是结束整个循环。
【实例3】输入一个正整数,将其逆序输出。#includestdio.hintmain(void){longn;intdig;printf(Enteranumber:);scanf(%d,n);while(n!=0){dig=n%10;n=n/10;printf(%d,dig);}printf(\n);return(0);}输入n开始结束Yn≠0?n%10→dign/10→n输出digN还有其他方法吗?
【实例3】输入一个正整数,将其逆序输出。(续)#includestdio.hintmain(void){longn,dig=0;printf(Enteranumber:);scanf(%d,n);while(n!=0){dig=dig*10+n%10;n=n/10;}printf(%ld\n,dig);return(0);}输入n开始结束Yn≠0?dig*10+n%10→dign/10→n输出digN
【实例4】编写一个猜数游戏的程序,随机生成一个0~100的猜数,允许猜10次。随机函数rand()的功能:产生0~32767之间的数。如何得到0~100的数?rand()%100说明:函数rand()产生的随机数是一个伪随机数,如果连续调用rand()所产生的一系列数将是相同的。解决该问题可用srand()函数为rand()函数设置随机数种子。
开始结束Ycount≤10?rand()%100→random输出youareright!N1→countguess=random?guessrandom?count+1→countYNNY输入guess输出Sorry!Toobig!输出Sorry!Toosmall!输出Gameisover!11
【实例4】编写一个猜数游戏的程序,随机生成一个0~100的猜数,允许猜10次。(续)#includestdio.h#includestdlib.hintmain(void){intrandom,guess,count=0;random=rand()%100;for(count=1;count=10;count++){printf(Inputyournumber:);sc