基本控制结构程序设计.ppt
源程序如下:#includeiostreamusingnamespacestd;constintn=100;//用常变量利于修改程序intmain(){inti=1,sum=0;//循环初始条件while(i=n){ sum+=i; i++; //修改循环条件}coutsum=sumendl;return0;}在VC++平台上运行,试一试是否正确ok【例2.12】用迭代法求a的平方根近似值。求平方根的迭代公式为:要求前后两个迭代根之差小于10-5。do-while语句【例2.12】迭代法求解:a是已知正数,x0是迭代初值,给x0一个值,假定x0=a/2;则用迭代公式依次计算:x1=(x0+a/x0)/2;x2=(x1+a/x1)/2;……xk+1=(xk+a/xk)/2;当|xk+1–xk|ε(ε是一个较小的正数)时,迭代终止,取xk+1的值为a的平方根近似值。ok1、输入a(a0)及较小正数delta(也可用常变量);2、x0=a/2;用迭代公式算x1=(x0+a/x0)/2;3、while(|x1–x0|=delta) { x0=x1;//把最近的值给x0 x1=(x0+a/x0)/2;}//求xk+1时只需要知道xk的值,所以只需2个变量4、取x1的值为a的平方根近似值,输出。2、3步骤很适合用do/while语句实现:x1=a/2;do{ x0=x1; x1=(x0+a/x0)/2; }while(|x1–x0|=delta);和迭代法对应的程序算法是
递推算法:intmain(){floatx0,x1,a;cout输入一个正数:; cina;if(a0)couta不能开平方!endl;elseif(a0){ //有实数解的情况x1=a/2; //x1用于保存结果do{ x0=x1; x1=(x0+a/x0)/2; }while(fabs(x1-x0)=1e-5);couta的平方根为:x1endl;}else{ couta的平方根为:0endl; }return0;}在VC++平台上运行,输入2,3,4,5试一试是否正确【例2.13】输入一段文本,统计文本的行数、单词数及字符数。假定单词之间以空格或跳格或换行符间隔,且文本开始没有空行。算法分析:1、逐个读入文本中的字符,直到读到一个输入结束符EOF为止。2、如何算行数?行结束标志为读到字符′\n′;3、如何算单词数?设一个变量isword,读到字符时isword=1,读到间隔符时isword=0;如果读到一个间隔符而此时isword值为1,则说明刚读完一个单词;(如果读到一个字符而此时isword值为0,则说明刚开始读一个单词;)4、如何算字符数?do-while语句【例2.13】okDiaoyuIslandbelongstoChina!IlikeprogramminginC++.do-while语句【例2.13】算法:1、设置变量line、word、ch分别代表行数、单词数、非分隔字符数,并初始化;设置变量isword来辅助统计单词数;2、do{ 从键盘读入一个字符c; if(c==’\n’)line++; if(是单词开头)word++; if(c不是分隔符)ch++; }while(c!=EOF);3、输出统计结果。DiaoyuIslandbelongstoChina!IlikeprogramminginC++.intmain(){charc;intline=0,word=0,ch=0;boolisword=false;cout输入一段文本(无空行):endl;do{c=cin.get();if(c==′\n′)line++;//遇换行符行数+1if(c!=′′c!=′\t′c!=′\n′){//读到非间隔符if(isword==0)word++;//在单词的起始处给单词