《C程序设计教案172课时——循环结构习题.docx》由会员分享,可在线阅读,更多相关《C程序设计教案172课时——循环结构习题.docx(5页珍藏版)》请在第一文库网上搜索。
1、教案序号17周次授课形式新授授课章节名称循环结构习题教学目的掌握循环结构的程序设计教学重点掌握循环结构的程序设计教学难点掌握循环结构的程序设计使用教具机房课外作业课后体会授课主要内容5.8循环程序举例例5.7用公式求的近似值,直到发现某一项的绝对值小于IO6为止(该项不累计加)。5.8循环程序举例解题思路:求近似值的方法很多,本题是一种其他方法: 5.8循环程序举例 每项的分子都是1 后一项的分母是前一项的分母加2 第1项的符号为正,从第2项起,每一项的符号与前一项的符号相反 5.8循环程序举例#inc1ude#inc1udeintmain()intsign=1;doub1epi=O,n=1,
2、term=1;whi1e(fabs(term)=1e-6)pi=pi+term;n=n+2;sign=-sign;term=signn;)pi=pi*4;printf(,pi=%10.8fn,pi);return0;)#inc1ude#inc1udeintnain()intsign=1;doub1epi=0,n=1,term=1;whi1e(fabs(term)=1e-6)pi=pi+term;n=n+2;sign=-sign;term=signn;)pi=pi*4;printf(npi=%10.8n,pi);return0;)例5.8求费波那西(FibOnaCCi)数列的前40个数。这个数列
3、有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和。即:这是一个有趣的古典数学问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子。 小兔子长到第3个月后每个月又生一对兔子。 假设所有兔子都不死,问每个月的兔子总数为多少?#inc1udeintnain()int=1,f2=1,f3;inti;printf(,*%12dn%12dn,f2);for(i=1;i=38;i+)f3=f1+f2;printf(,%12dn,f3);=f2;f2=f3;)return0;)#inc1udeintmain()intf1=1,f2=1;inti;for(i=1;i解题思路:让n被
4、i整除(i的值从2变到n1)如果n能被2(n1)之中任何一个整数整除,则表示n肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环注意:此时i的值必然小于n#inc1udeintnain()intn,i;printf(wn=?*);scanf(,%d,fen);for(i=2;i=n-1;i+)if(n%i=0)break;if(in)printf(,%disnotn,n);e1seprintf(,%disn,n);return0;)#inc1udeintnain()intn,i;printf(Mn=?n);scanf(,%d,n);for(i=2;i=n-1;i+)if(n%i=0
5、)break;if(in)printf(,%disnotn,n);e1seprintf(,%disn,n);return0;)#inc1udeintnain()intn,i,k;printf(wn=?*);scanf(,%d,fen);for(i=2;i=k;i+)if(n%i=0)break;if(in)printf(,%disnotn,n);e1seprintf(,%disn,n);returnO;)#inc1udeintnain()intn,i,k;printf(ttn=?*);scanf(,*%d*,fen);for(i=2;i=k;i+)if(n%i=0)break;if(i解题思路
6、:使用例5.9的算法在例5.9程序中只要增加一个外循环,先后对100-200间的全部整数一一进行判定即可for(n=101;n=200;n=n+2)k=sqrt(n);for(i=2;i=k+1)printf(%d,n);m=m1;)if(m%10=0)Printfdn);例5.11译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。ABCDEFGWXYZ非字母字符保持原状不变输入一行字符,要求输出其相应的密码解题思路:问题的关键有两个:(1)决定哪些字符不需要改变,哪些字符需要改变,如果需要改变,应改为哪个字符处理的方法是:输入一个字符给字符变量C,先判定它
7、是否字母(包括大小写),若不是字母,不改变C的值;若是字母,则还要检查它是否,W,到,Z,的范围内(包括大小写字母)。如不在此范围内,则使变量c的值改变为其后第4个字母。如果在Mr到Z的范围内,则应将它转换为AD(或ad)之一的字母。解题思路:问题的关键有两个:(1)决定哪些字符不需要改变,哪些字符需要改变,如果需要改变,应改为哪个字符处理的方法是:输入一个字符给字符变量c,先判定它是否字母(包括大小写),若不是字母,不改变C的值;若是字母,则还要检查它是否,W,到,Z,的范围内(包括大小写字母)。如不在此范围内,则使变量c的值改变为其后第4个字母。如果在,Wr到的范围内,则应将它转换为AD(
8、或ad)之一的字母。解题思路:问题的关键有两个:(1)决定哪些字符不需要改变,哪些字符需要改变,如果需要改变,应改为哪个字符处理的方法是:输入一个字符给字符变量c,先判定它是否字母(包括大小写),若不是字母,不改变C的值;若是字母,则还要检查它是否,W,到,Z,的范围内(包括大小写字母)。如不在此范围内,则使变量c的值改变为其后第4个字母。如果在Mr到2,的范围内,则应将它转换为AD(或a(1)之一的字母。解题思路:问题的关键有两个:(2)怎样使C改变为所指定的字母?办法是改变它的ASCI1值例如字符变量C的原值是大写字母,A,想使C的值改变为,E,只需执行“c=C+4”即可,因为W的ASC11值为65,而E的ASCi1值为69,二者相差4chare;c=getchar();whi1e(c!=tn,)if(c=ta,&c=tA,&CV=Z)if(c=,W,&c=,w&c=tA,&c=ta,&c=4Z,&ctz,)c=c-26;)printf(,%c,c);