第六章 循环结构程序设计

上传人:仙*** 文档编号:33899974 上传时间:2021-10-19 格式:PPT 页数:43 大小:585.50KB
返回 下载 相关 举报
第六章 循环结构程序设计_第1页
第1页 / 共43页
第六章 循环结构程序设计_第2页
第2页 / 共43页
第六章 循环结构程序设计_第3页
第3页 / 共43页
点击查看更多>>
资源描述
第六章第六章 循环循环结构程序设计结构程序设计提出问题提出问题求整数求整数1到到5的连加,怎么编程的连加,怎么编程?求整数求整数1到到100的连加,怎么编程的连加,怎么编程?main() int sum=0; sum=sum+1; sum=sum+2; sum=sum+3; sum=sum+4; sum=sum+5; printf(sum=%d,sum);main() int sum=0; sum=sum+1; sum=sum+2; sum=sum+3; . sum=sum+100; printf(sum=%d,sum);分析:分析:让我们找出问题的规律让我们找出问题的规律sum=sum+i (i=1,2,3,100) sum=sum+i被被执行执行 变量变量i的变化的变化解决这类问题可以采用解决这类问题可以采用 结束结束 开始开始 i=1, sum=0 i=100 i=i+1 sum=sum+i 输出输出sum i=1i=2i=2i=3提出问题提出问题:反复执行同一段程序,反复执行同一段程序,直到满足一定的条件后直到满足一定的条件后才停止执行该段程序。才停止执行该段程序。对于有规律的事物,对于有规律的事物,一般都可以用一般都可以用来组织。来组织。i=101i=100i=101第六章第六章 循环结构程序设计循环结构程序设计主要内容主要内容goto 和和 if 语句构成循环语句构成循环while 语句语句dowhile 语句语句for 语句语句辅助控制语句:辅助控制语句:continue,breakgoto语句语句goto语句的一般形式:语句的一般形式:goto 标号标号;标号标号: 语句语句说明:说明:标号只能是标识符标号只能是标识符,不能用整数作标号,不能用整数作标号标号只能加在可执行语句前面标号只能加在可执行语句前面不能加在声明语句的前面不能加在声明语句的前面标号在一个函数体内唯一标号在一个函数体内唯一goto语句语句用用if 和和goto语句构成循环,求语句构成循环,求: 结束结束 开始开始 i=1, sum=0 i=100 YN i=i+1 输出输出sum sum = sum+i1001nnmain() int i=1, sum=0;loop: if (i=100) sum+=i; i+; goto loop; printf(%d,sum);goto语句语句goto语句语句的用途的用途与与 if 语句一起,构成循环语句一起,构成循环从一个循环体中,跳转到循环体外从一个循环体中,跳转到循环体外while() while() goto label; label: 语句语句C语言语言提供提供break来跳出本层循环,来跳出本层循环,提供提供continue来结束本次循环来结束本次循环goto语句的使用,有时会给程序带来语句的使用,有时会给程序带来致命的问题,结构化程序设计主张致命的问题,结构化程序设计主张限限制使用制使用goto语句语句while 语句语句while 语句的一般形式:语句的一般形式:while (exp) statement;expstatement真真(非非0)假假(=0)特点:特点:先判断表达式,先判断表达式, 后执行后执行循环体循环体while语句语句用用while语句求语句求: 结束结束 开始开始 i=1, sum=0 i=100 YN i=i+1 输出输出sum sum = sum+i1001nnmain() int i=1, sum=0; while ( i=100 ) sum=sum+i; i+; printf(%d,sum); 循环条件循环条件 循环体循环体 while语句语句用用while语句求语句求: 结束结束 开始开始 i=1, sum=0 i=100 YN i=i+1 输出输出sum sum = sum+imain() int i=1, sum=0; while ( i=100 ) sum=sum+i; i+; printf(%d,sum);1001nnmain() int i=1, sum=0; while ( i=100 ) sum=sum+i; i+; printf(%d,sum);while 语句语句while 语句的两个要素:语句的两个要素:while ( )表达式语句表达式语句 printf(sum=%d, sum=sum+i);空语句空语句 ;控制语句控制语句 if (sum=50) printf(i=%d,i);复合语句复合语句 sum=sum+i; i=i+1; printf(sum=%d, sum=sum+i);if (sum=50) printf(i=%d,i); sum=sum+i; i=i+1; while 语句语句while ( )while 语句的两个要素:语句的两个要素:dowhile 语句语句dowhile 语句的一般形式:语句的一般形式:dostatement;while (exp);expstatement真真(非非0)假假(=0)特点:特点:先执行先执行循环体循环体, 后判断表达式后判断表达式dowhile 语句至少会执行一遍循环体语句至少会执行一遍循环体while 语句不一定语句不一定dowhile 语句语句dowhile 语句的一般形式:语句的一般形式:expstatement真真(非非0)假假(=0)expstatement真真(非非0)假假(=0)statementdostatement;while (exp);statement; while (exp)statement;dowhile 语句可以转化为语句可以转化为while 语句语句dowhile语句语句用用do while语句求语句求: 结束结束 开始开始 i=1, sum=0 i=100 YN i=i+1 输出输出sum sum = sum+i1001nnmain() int i=1, sum=0; do sum=sum+i; i+; while ( i=100 );printf(%d,sum); 循环条件循环条件 循环体循环体 dowhile 语句语句dowhile 语句的两个要素语句的两个要素:while ( );dowhile 语句语句while语句语句 和和 dowhile 语句比较语句比较:main() int i, sum=0;scanf(%d, &i);do sum=sum+i; i+; while ( i=100 );printf(%d,sum);main() int i, sum=0;scanf(%d, &i); while ( i=100 ) sum=sum+i; i+; printf(%d,sum);1 50501 5050101 0101 101for 语句语句for 语句的一般形式:语句的一般形式:for (exp1; exp2; exp3)statement;exp2exp1真真(非非0)假假(=0)statementexp3for 语句语句for 语句的一般形式:语句的一般形式:for (exp1; exp2; exp3)statement; for 语句一般应用形式:语句一般应用形式:for (循环变量赋初值;循环条件;循环变量增值循环变量赋初值;循环条件;循环变量增值)循环体循环体;例如:例如:for(i=1; i=100; i+) sum=sum+i;for 语句语句for 语句的一般形式:语句的一般形式:for (exp1; exp2; exp3)statement; exp1 和和 exp3 可以是逗号表达式可以是逗号表达式:例如:例如:for(sum=0, i=1; i=100; sum+=i, i+);相当于:相当于:sum =0;for(i=1; i=100; i+) sum+=i;for 语句语句用用 for 语句求语句求: 结束结束 开始开始 i=1, sum=0 i=100 YN i=i+1 输出输出sum sum = sum+i1001nnmain() int i, sum=0; for(i=1; i=100; i+) sum=sum+i; printf(%d,sum);i=1;for(; i=100; i+) sum=sum+i; i=1;for(; i=100; ) sum=sum+i; i+; for( i=1; i=100 ; sum+=i, i+ );循环的嵌套循环的嵌套循环的嵌套是指:循环的嵌套是指:一个循环体内又包含另一个完整的循环结构一个循环体内又包含另一个完整的循环结构三种循环结构可以相互嵌套,层数不限三种循环结构可以相互嵌套,层数不限 (1)while() while() . (2)do do while( ); . while( ); (3)while() do while( ); . (4)for( ; ; ) do while(); while() . for( ; ;) do while() while(); . O Obreak 语句语句break 语句语句break;功能功能在循环语句中在循环语句中,跳出并终止循环体跳出并终止循环体在在switch语句中,跳出并终止分支语句体语句中,跳出并终止分支语句体说明说明break只能只能终止并跳出终止并跳出的结构的结构break不能用于循环语句和不能用于循环语句和switch语句之外的任何其它语句之外的任何其它语句之中体语句之中体break 语句语句break 语句语句break; 假假(0) expbreak;真真(非非0) while do break; exp 假假(0) 真真(非非0) while exp2 break; 假假(0) 真真(非非0) for exp1 exp3 break 语句语句用用 for 语句求语句求: 结束结束 开始开始 i=1, sum=0 i100) break; sum=sum+i; printf(%d,sum);i=1; for(; ;) if (i100) break; sum=sum+(i+); continue 语句语句continue 语句语句continue;功能功能结束本次循环,结束本次循环,进行下一次是否执行循环体的判断进行下一次是否执行循环体的判断说明说明continuecontinue 语句语句continue 语句语句continue;exp2continue;.假假(0) 真真(非非0)forexp1exp3 真真(非非0) do continue;.exp假假(0)while expcontinue;假假(0) 真真(非非0)whilecontinue 语句语句输出输出100200之间不能被之间不能被3整除的数整除的数:main()int n;for(n=100; n=200; n+)if (n%3=0)continue;printf(%5d, n);算法举例算法举例-穷举法穷举法穷举法穷举法将将2 2角钱换成角钱换成1 1分、分、2 2分和分和5 5分的硬币,列出所有可能的换法。分的硬币,列出所有可能的换法。main() main() intint x x,y y,z z,k= 0k= 0;for(z=0for(z=0;z=4 z=4 ;z+) z+) for(y=0 for(y=0;y=(20-5y=(20-5* *z)/2 z)/2 ; y+) y+) printfprintf(“ (“ 第第% %d d种种: 1: 1分分=%=%dt2dt2分分=%=%dt5dt5分分=%=%dn”dn”,+k+k,20-220-2* *y-5y-5* *z z,y y,z)z); printfprintf(“(“总的换法总的换法=%=%dn”dn”,k)k); 输入学生成绩,将及格者的成绩打印出来。输入学生成绩,将及格者的成绩打印出来。 main()main() intint n n,i i;float score;float score;printfprintf(“(“输入学生总数输入学生总数: ”): ”); / /* *输入学生总数输入学生总数* */ /scanf(“%d”,&nscanf(“%d”,&n) );for(i=1for(i=1;i=ni=60.0)printf(“if(score=60.0)printf(“第第 % %d d 学生的成绩是学生的成绩是 : : % %fn”,i,score)fn”,i,score); 算法举例算法举例-穷举法穷举法求求Fibonacci 数列的前数列的前40个数个数:F1 = 1 (n=1)F2 = 1 (n=2)Fn = Fn-1+Fn-2 (n3)循环语句举例循环语句举例f1 f2 ? ? ?f1f2 f1 f1=1, f2=1for i=1 to 20 输出输出f1,f2 f1=f1+f2 f2=f2+f1 main() long f1=1, f2=1; int i; for(i=1; i=20; i+) printf(%12ld %12ld,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1; i=1; while (i=20)printf(%12ld %12ld,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1;i +; i=1; doprintf(%12ld %12ld,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1;i +; while (i=20);main() long f1=1, f2=1; int i; for(i=1; i=20; i+) printf(%12ld %12ld,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1; 算法举例算法举例-迭代法迭代法辗转相除法辗转相除法 main( ) main( ) intint x,y,a,b,t; x,y,a,b,t; printfprintf(输入两个整数输入两个整数x,y: ); x,y: ); scanfscanf (%d,%d,&x,&y); (%d,%d,&x,&y); a=x; b=y; / a=x; b=y; /* * 保存保存x,yx,y以便求它们的最小公倍数以便求它们的最小公倍数 * */ / t=a%b; t=a%b; while ( t!=0 )/ while ( t!=0 )/* * 余数不为余数不为0 0,继续相除,直到余数为,继续相除,直到余数为0 0 * */ / a=b; b=t; t=a%b; a=b; b=t; t=a%b; printf(xprintf(x=%d,y=%d %d,%dn,x,y,b,x=%d,y=%d %d,%dn,x,y,b,x* *y/b);/y/b);/* *用乘积除用乘积除以最大公约数得到最小公倍数以最大公约数得到最小公倍数* */ /【例【例6.186.18】求两个整数的最大公约数和最小公倍数。求两个整数的最大公约数和最小公倍数。 用用 公式求公式求 的近似值,直到的近似值,直到某一项的绝对值小于某一项的绝对值小于 为止为止 71513114 610用循环输出如下图案:用循环输出如下图案: * * * * * * * * * * * * * * * * * * * * * * * * * * * * *main()main() intint i,m,n; i,m,n;for(i=1;i=5;i+) /for(i=1;i=5;i+) /* *行数的控制行数的控制* */ / for(m=1;m=5-i;m+)printf(“for(m=1;m=5-i;m+)printf(“”); /”); /* *空格的控制空格的控制* */ /for(n=1;n=for(n=1;n=i;n+)printfi;n+)printf(“(“* *”); /”); /* *输出输出* *个数的控制个数的控制* */ /printf(“nprintf(“n”); /”); /* *每一行要有回车换行每一行要有回车换行* */ / 打印所有的打印所有的“水仙花数水仙花数”(三位数:(三位数:153135333)。)。main()int i,ge,shi,bai; for (i=100;i k 真真假假输出输出:m是素数是素数 输出输出:m不不是素数是素数 的整数mk #include main()int m, i, k; scanf(%d, &m); k = sqrt(m); for(i=2; ik) printf(%d is a prime number, m); else printf(%d is not a prime number, m);#include main()int m, i, k; scanf(%d, &m); k = sqrt(m); for(i=2; ik) printf(%d is a prime number, m); else printf(%d is not a prime number, m); i=2; while (i=k)if( m%i=0 ) break; i +; i=2; do if( m%i=0 ) break; i +; while (i=k);#include main()int m, i, k; scanf(%d, &m); k = sqrt(m); for(i=2; i=k; i+)if( m%i=0 ) printf(%d is not a prime number, m); break;else if (i=k) printf(%d is a prime number, m);无法判断:无法判断:1、2、3这三个数!这三个数!循环语句举例循环语句举例输出输出100200间的全部素数间的全部素数:#include main()int m, i, k, n=0; for (m=101; m=200; m=m+2)k=sqrt(m);for (i=2; ik) printf(%5d, m);n=n+1; if (n%10=0)printf(n);循环语句举例循环语句举例输入一个正整数,要求逆序输出该数输入一个正整数,要求逆序输出该数:例如:输入例如:输入12345,输出,输出54321main()int n;printf (Input the number:);scanf (%d, &n); while ( n != 0 )printf(%d, n%10); n = n/10; /* number缩小缩小10倍倍 */循环语句举例循环语句举例输出乘法九九表:输出乘法九九表:1112122243133263394144284312 44165155210 5315 5420 5525循环语句举例循环语句举例输出乘法九九表:输出乘法九九表:1112122243133263394144284312 44165155210 5315 5420 5525main() int i, j; for(i=1; i10; i+) for(j=1; j=1) m *= n; n - ; printf(%d!=%dn, n, m);Please input a number:5 0!=120printf(%d!=, n);printf(%dn, m);5!=1208 8!=-25216longprintf(%ldn, m);8!=40320本章要点本章要点三种循环语句三种循环语句 while 语句语句 dowhile 语句语句 for 语句语句辅助循环语句辅助循环语句 continue break goto循环结构程序循环结构程序 求最大公约数和最小公倍数求最大公约数和最小公倍数 多个数字求积、求和多个数字求积、求和 Fibonacci数列数列 求素数求素数 一个整数的逆序输出一个整数的逆序输出 乘法九九表乘法九九表 求求n的阶乘的阶乘n!P130 一、单选题一、单选题P134 二、填空题二、填空题仔细阅读第六章的例题,特别是例仔细阅读第六章的例题,特别是例6.18P136 四、编程:四、编程:1、3、6、7、8、11、13作业作业
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 销售管理


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!