嵌套循环和循环综合

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020/7/11
11
马克思手稿中的数学问题
有30个人,其中有男人、女人和小孩,在一家 饭馆吃饭共花了50先令,每个男人各花3先 令、每个女人各花2先令,每个小孩各花1先 令,问共有几个男人、女人、小孩
2020/7/11
12
void main()
{
int x,y,z;
for(x=0;x<=16;x++)
if (i > k)
{ printf("Yes!\n");
} else
条 假件P 假

{
printf("No!\n");
A
}
printf("Program is over!\n");
}
2020/7/11
17
break和continue
对for、while、do-while循环进行内部手术 break,退出循环 break不能单独和if语句搭配使用 continue,中断此次循环体的执行,开始下一次 break和continue少用为妙 goto不做介绍
printf(“ m不能为负数!\n”); exit(0); }
k = sqrt(m);
/*计算m的平方根*/
for (i=2; i<=k; i++) /* i从2变化到k,依次检查m%i是否为0*/
{ /*若m%i为0,则终止对其余i值的检验*/
if (m % i == 0) break;
}
两个出口
5
打印下列图案
图案一 ***** ***** ***** *****
图案二 *
*** ***** *******
2020/7/11
6
嵌套循环
内层循环
外层循环
内层循环
内层循环
合法的嵌套循环
2020/7/11
7
2020/7/11
8
打印图案一
void main() {
int i, j; char star = '*';
迭代法(辗转法) –特点:不断用变量的旧值递推新值的过程 –应用:辗转相除法求最大公约数、更相减损术求
最大公约数
2020/7/11
4
主要内容
嵌套循环 –注意循环变量初值的设置 设计结构良好的程序 –减少使用break、continue、goto –学会使用标志变量flag 循环综合应用
2020/7/11
……
/*i<=k和flag中只要有一个为假就结束循环*/
for (i=2; i<=k && flag; i++)
{
if (m % i == 0) flag = 0;
} if (flag)
一个出口
for(y=0;y<=25;y++)
{
z=30-x-y;
if ((3*x+2*y+z)==50 )
printf(“men=%d,women=%d,childs=%d\n”,
x,y,z);
}
}
2020/7/11
13
编写结构良好的程序
采用“自顶向下、逐步求精” 的思想 结构化程序的特点:
–只有一个入口; –只有一个出口; –无死语句,即不存在永远都执行不到的语句; –无死循环,即不存在永远都执行不完的循环。 示例:判断某数是否是素数
2020/7/11
18
找出200-300之间能被3整除的数
#include <stdio.h>
void main()
{
int i;
for(i = 200;i <= 300;i++)
{
if( !(i % 3))
printf(“%d\n”,i);
}
}
2020/7/11
19
解法二核心代码
int m, i, k, flag = 1; /*标志变量flag初值置为1*/
***** ***** ***** *****
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
printf("%c", star);
}
printf("\n");
}
}
2020/7/11
9
打印图案二
void main() {
int i,j; /*内外层循环变量保持不同名*/ char space = ' ',star='*';
2020/7/11
14
素数问题
从键盘上输入一个数,编程判断该数是否是素 数。如果是,输出“Yes!”,否则,输出 “No!”
分析
– 从键盘上键入一个数m – 判断该数的正负,如果是负数,则退出程序 – 计算k=sqrt(m) – 循环变量i从2变化到k,依次检查m%i是否为0 – 若m%i为0,则判定m不是素数,中止循环,否则
表达式2用于判断循环是否结束
表达式3实现循环变量的累加。
3个表达式都可以省略,但分号不能省。
表达式2省略,代表循环条件永远为真
2020/7/11
3
主要算法思想
穷举法 –特点:列举指定范围类所有可能的情况进行计算 –应用:高斯问题
递推法 –特点:根据前面n-1项的值,计算第n项的值 –应用:累加、累乘
* *** *****
*******
for(i=1;i<=4;i++)
{
if(i<4) { printf("%*c",4-i,space); }
for(j=1;j<=2*i-1;j++)
{ printf("%c",star);
} printf("\n");
}
}
使用嵌套的循环体时,应注意以下问题
在嵌套的各层循环体中,使用复合语句(即用一对 大花括号将循环体语句括起来)保证逻辑上的正确 性 内层和外层循环控制变量不应同名,以免造成混乱 嵌套的循环最好采用右缩进格式书写,以保证层次 的清晰性 循环嵌套不能交叉,即在一个循环体内必须完整的 包含着另一个循环
重庆邮电大学计算机科学与技术学院 冯潇
fengxiao@cqupt.edu.cn
回顾
循环的分类 –当型循环 –直到型循环
循环的3种基本表示
while(表达式) {
循环体 }
do {
循环体 }while(表达式);
2020/7/11
2
循环结构控制语句3—for
格式:
Βιβλιοθήκη Baidu
– for(表达式1;表达式2;表达式3) –{ – 循环体 –} 表达式1一般为循环变量赋初值,可以为任何 表达式类型
遍历所有i值后退出循环,这时判定m是素数
2020/7/11
15
#include <math.h> #include <stdio.h> #include <stdlib.h> void main() {
int m, i, k;
解法一
printf("Please enter a number:"); scanf(“ %d ”, &m); /*从键盘输入一个正整数*/ if(m<0) {
相关文档
最新文档