循环结构程序设计1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章 循环结构程序设计
第五章 循环结构程序设计
问题1:
sum=1+2+3+…+100;
问题2:
求学生平均成绩,分数相加后除以科目数
特点:一组重复执行的语句。
第五章 循环结构程序设计
5.1 问题提出
循环结构的概念 What
循环结构是指在算法中从某处开始,按照一定的条 件反复执行某一处理步骤的结构。
第五章 循环结构程序设计
下面程序段的运行结果是 ______。
a=1;b=2;c=2;
while(a<b<c)
{t=a;a=b;b=t;c--;}
printf(“%d,%d,%d”,a,b,c);}
A) 1,2,0 B)2,1,0 C) 1,2,1 D) 2,1,1
第五章 循环结构程序设计
编程序求1+3+5+7+9+…。如果累加数大于750 时, 则程序终止并输出结果。
如果累加数大于750时, 则程序终止并输出结果。
int i=1,sum=0; while(sum<=750) { sum=sum+i;
i=i+2;
} printf("\n%d",sum);
第五章 循环结构程序设计
例5.3:用do-while语句求1至1000之间满足‚用3除余 2,用5除余3,用7除余2”的数,且一行只打印五个数。 分析:
[<初始化>]
while(循环条件) { <循环体> }
第五章 循环结构程序设计
i=1; while (i <= 100) { ... i++; }
while 循环三要素举例应用
i
i 1
100
#include <stdio.h> void main() { int i,sum=0; 循环变量初值 i=1; while (i<=100) { sum+=i; i++; } printf("%d",sum); }
第五章 循环结构程序设计
例:求1到100的和
#include <stdio.h> void main() { int i=1,sum=0; do { sum=sum+i; i++; } while(i<=100); printf("%d\n",sum); }
第五章 循环结构程序设计
例5.2:编程序求1+3+5+7+9+…。
第五章 循环结构程序设计
float score, average=0; int n=0; /*n用来存放学生数,初值为0*/ scanf("%f",&score); /*输入第一个学生的分数*/ while(score>=0) { average+=score; /*average先用来放总分*/ n++; scanf("%f",&score); /*输入下一个分数*/ } if (n!=0) average=average/n; /*求平均成绩*/ printf("%6.2f",average); /*输出average*/
第五章 循环结构程序设计
以下程序实现什么功能,测试数据: I’m a student!
#include <stdio.h>
void main()
{int m=0,n=0;
char c;
while((c=getchar())!=„\n‟) if(c>=„A‟&&c<=„Z‟) m++; if(c>=„a‟&&c<=„z‟) n++; } printf(“%d,%d\n”,m,n);}
int i=1,sum=0;
while(sum<=750)
{
sum=sum+i;
i=i+2; } printf("\n%d",sum);
第五章 循环结构程序设计
编程练习:
1.编程求2*4*6*8*10的值。
2.在输入的一批整数中求出最大者,输入0结束循环。
第五章 循环结构程序设计
作业
1.从键盘输入的字符中统计大小写字母字符的个数, 用换行符结束循环。 2.从键盘输入一个整数,判断是否为素数。
判断一个数被另一个数除,用取模运算%。三个条 件是“与”的关系。 一行打印五个数,可以通过计数到5再回车换行。
第五章 循环结构程序设计
例5.1:
float score,average=0; int n=0; do { scanf("%f",&score); if (score>=0) {average+=score;n++;} }while (score>=0); if(n!=0) average/=n; printf("%6.2f\n",average);
if(n1<n2)
a=n1,b=n2;
{t=n1;n1=n2;n2=t;}
while(b!=0)
{ t=a%b; a=b; b=t; }
printf("GYS is:%d\n",a);
printf(“GBS is:%d\n”,n1*n2/a);}
第五章 循环结构程序设计
编写程序:输入正整数n,求0到n以内所以 奇数之和。
A) while循环执行10次 B) 循环是无限循环
C) 循环体语句一次也不执行
D) 循环体语句执行一次
第五章 循环结构程序设计
教材P88---2,程序运行时,输入12345,则 输出结果是多少?
……
{long data;
scanf(“%ld”,&data);
while(data)
{ printf(“%ld”,data%10); data=data/10; } }
while (1)
非0常量不会改变,代表永远为真
如条件永远为真,则不会正常退出循环,需 要强制退出措施。(后面介绍)
第一次判断条件便为假。 死循环,即不能正常退出
后两种情况请检查循环三要素是否合理。
第五章 循环结构程序设计
设有程序段
int k=10;
while (k=0) k=k-1;
则下面描述正确的是____。
第五章 循环结构程序设计
{
int y=1;
while(y--) ; printf("y=%d\n",y);
}
以上程序段执行后的输出结果是____。
A)y=0 C)y=1 B)y= -1 D)while构成无限循环
第五章 循环结构程序设计
例5.1:输入一个班学生的成绩,求全班的平均成绩。
分析:
输入成绩、计算平均成绩都是一个重复性过程,因 此可以用循环语句来实现。 在这里,我们并不知有多少个学生,也就是说不知 循环到底有多少次,但考虑到成绩没有负数,这样就 可以把循环条件定为:每当输入的分数大于等于0时就 继续输入成绩;输入的分数小于0时就停止输入。
下面程序的功能是实现从键盘输入若干学生的成 绩,统计最高成绩,当输入负数是结束输入。
#include<stdio.h>
void main()
{int score,max;
( 1
);
max=score; while( 2 ) { if(max<score) ( 3 ); scanf(“%d”,&score);} printf(“max=%d\n”,max);}
第五章 循环结构程序设计
当执行以下程序段时,循环体将执行( x=4; while (x>=2) {x=x-1;} A.1 B.2 C.3
)次 .
D.循环体将执行无数多次
第五章 循环结构程序设计
读程序,输入两组数:3,15和13,5,运行结果分别 为多少?
{int a,b,n1,n2,t; printf("input two numbers:"); scanf("%d,%d",&n1,&n2);
第五章 循环结构程序设计
循环条件
思考 : 如果将循环条件改 为 i<100结果有何变 化? 如将循环体中i++去 掉会怎样? 如果累加到1000该 如何修改程序? 。。。
循环体
编写程序,求100以内所以能被3整除的数之和。
第五章 循环结构程序设计
while循环特殊情况
条件永远为真
第五章 循环结构程序设计
char c; while((c=getchar())!='\n') { if((c>='a' && c<='z') || (c>='A' && c<='Z')) { c=c+4; if(c>'Z' && c<='a'+4 || c>'z') c=c-26; } printf("%c",c); }
第五章 循环结构程序设计
*使用while语句的时候,要注意一下问题:
1)循环体如果包含一个以上的语句,应该用花括号 括起来,以复合语句的形式程序。
2)在循环体中应有使循环体趋向于结束的语句。 3)循环体语句有可能一次也不执行。
第五章 循环结构程序设计
例5.14 编写给多个学生的成绩评定等级的程序。
执行过程:
先判断表达式的值。
若0,则执行其后面的语句, 否则while执行完毕。
第五章 循环结构程序设计
例:用while语句构成循环,求
怎么求?先分析,再设计,后编码
i
i 1
100
分析
设计
编码
分析题目已知 和未知条件
设计算法
编写程序并测试
• 找计算规律 • 分析数据, 采用合适数 据类型表示
int score; scanf("%d", &score); while(score>=0) { /*循环结构*/
......
scanf("%d",&score); }
第五章 循环结构程序设计
switch(score/10)
/*循环体嵌套选择结构*/
{
case 10: case 9: printf("%d:A\n", score); break; case 8: case 7: printf("%d:B\n",score); break;
当型循环
直到型循环
循环语句
1. if语句与goto语句
2. while 语句
3. do …while 语句
4. for语句
第五章 循环结构程序设计
5.1 while语句
while语句通过判断循环控制条件是否满足来决定是 否继续循环,又称“当型”循环 。
一般形式:
wຫໍສະໝຸດ Baiduile (表达式) 循环体语句
第五章 循环结构程序设计
2 循环结构与顺序结构以及选择结构的比较:
A
B
Y
条件
N
A
B
选择结构中满足条件的语句执行 顺序结构中的语句只执行一次 一次,而不满足的一次也不执行
第五章 循环结构程序设计
循环结构:按照一定的条件反复执行某一处理步 骤的结构。
条 件P
真
假
假
A
假
A
条 件P
真
第五章 循环结构程序设计
注意: 循环体如果为一条以上的语句,
第五章 循环结构程序设计
应使用复合语句。
9
知识拓展:while 循环三要素
三要素 : 为了使得循环有开始的机会,一般而言,与循环条件相关 的变量需要进行一定的初始化操作。 循环需要有结束的机会。 循环主体中的语句必须修改循环条件的值,否则会形成死 循环
第五章 循环结构程序设计
5.2 do …while语句
特点:先执行循环体,然后判断循环条件是否成立。
一般形式:
do 循环体语句
while (表达式);
执行过程:
先执行一次指定的循环体语句,然后判别表达式, 当表达式的值为非零(“真”) 时,返回重新执行循环体 语句,如此反复,直到表达式的值等于0为止,此时循 环结束。
第五章 循环结构程序设计
• 选用合适的结构 组织步骤 • 注意输入、处理 和输出三个环节 的逻辑性
•符合语法 •符合逻辑
例:用while语句构成循环,求
设计与编码
开始 sum=0 i=1
F
i
i 1
100
i<=100
T
sum+=i i++
输出sum
结束
源程序: #include <stdio.h> void main() { int sum = 0; //变量sum将用于存储累加和,将它初始化为0。 int i = 1; //i是每次要加的数,它从1开始。 while ( i<= 100) { sum += i; i++; } printf("1到100累加和为:%d",sum); //输出累加结果: }
case 6: printf("%d:C\n",score); break;
default: printf("%d:D\n",score); }
第五章 循环结构程序设计
例5.17: 电文加密问题。
已知电文加密规律为:将字母变成其后面的第4个字 母,其他字符保持不变。
例如,a→e,A→E,W→A。 编写一个程序,输入一行字符,要求转换成加密电 文输出。
#include<stdio.h> void main() {int n,s,i; s=0; printf(“请输入一个正整数:”)); scanf(“%d”,&n); while(i<=n) { s=s+i;i=i+2;} printf(“0到n以内所有奇数之和为:%d\n”,s);}
第五章 循环结构程序设计
第五章 循环结构程序设计
问题1:
sum=1+2+3+…+100;
问题2:
求学生平均成绩,分数相加后除以科目数
特点:一组重复执行的语句。
第五章 循环结构程序设计
5.1 问题提出
循环结构的概念 What
循环结构是指在算法中从某处开始,按照一定的条 件反复执行某一处理步骤的结构。
第五章 循环结构程序设计
下面程序段的运行结果是 ______。
a=1;b=2;c=2;
while(a<b<c)
{t=a;a=b;b=t;c--;}
printf(“%d,%d,%d”,a,b,c);}
A) 1,2,0 B)2,1,0 C) 1,2,1 D) 2,1,1
第五章 循环结构程序设计
编程序求1+3+5+7+9+…。如果累加数大于750 时, 则程序终止并输出结果。
如果累加数大于750时, 则程序终止并输出结果。
int i=1,sum=0; while(sum<=750) { sum=sum+i;
i=i+2;
} printf("\n%d",sum);
第五章 循环结构程序设计
例5.3:用do-while语句求1至1000之间满足‚用3除余 2,用5除余3,用7除余2”的数,且一行只打印五个数。 分析:
[<初始化>]
while(循环条件) { <循环体> }
第五章 循环结构程序设计
i=1; while (i <= 100) { ... i++; }
while 循环三要素举例应用
i
i 1
100
#include <stdio.h> void main() { int i,sum=0; 循环变量初值 i=1; while (i<=100) { sum+=i; i++; } printf("%d",sum); }
第五章 循环结构程序设计
例:求1到100的和
#include <stdio.h> void main() { int i=1,sum=0; do { sum=sum+i; i++; } while(i<=100); printf("%d\n",sum); }
第五章 循环结构程序设计
例5.2:编程序求1+3+5+7+9+…。
第五章 循环结构程序设计
float score, average=0; int n=0; /*n用来存放学生数,初值为0*/ scanf("%f",&score); /*输入第一个学生的分数*/ while(score>=0) { average+=score; /*average先用来放总分*/ n++; scanf("%f",&score); /*输入下一个分数*/ } if (n!=0) average=average/n; /*求平均成绩*/ printf("%6.2f",average); /*输出average*/
第五章 循环结构程序设计
以下程序实现什么功能,测试数据: I’m a student!
#include <stdio.h>
void main()
{int m=0,n=0;
char c;
while((c=getchar())!=„\n‟) if(c>=„A‟&&c<=„Z‟) m++; if(c>=„a‟&&c<=„z‟) n++; } printf(“%d,%d\n”,m,n);}
int i=1,sum=0;
while(sum<=750)
{
sum=sum+i;
i=i+2; } printf("\n%d",sum);
第五章 循环结构程序设计
编程练习:
1.编程求2*4*6*8*10的值。
2.在输入的一批整数中求出最大者,输入0结束循环。
第五章 循环结构程序设计
作业
1.从键盘输入的字符中统计大小写字母字符的个数, 用换行符结束循环。 2.从键盘输入一个整数,判断是否为素数。
判断一个数被另一个数除,用取模运算%。三个条 件是“与”的关系。 一行打印五个数,可以通过计数到5再回车换行。
第五章 循环结构程序设计
例5.1:
float score,average=0; int n=0; do { scanf("%f",&score); if (score>=0) {average+=score;n++;} }while (score>=0); if(n!=0) average/=n; printf("%6.2f\n",average);
if(n1<n2)
a=n1,b=n2;
{t=n1;n1=n2;n2=t;}
while(b!=0)
{ t=a%b; a=b; b=t; }
printf("GYS is:%d\n",a);
printf(“GBS is:%d\n”,n1*n2/a);}
第五章 循环结构程序设计
编写程序:输入正整数n,求0到n以内所以 奇数之和。
A) while循环执行10次 B) 循环是无限循环
C) 循环体语句一次也不执行
D) 循环体语句执行一次
第五章 循环结构程序设计
教材P88---2,程序运行时,输入12345,则 输出结果是多少?
……
{long data;
scanf(“%ld”,&data);
while(data)
{ printf(“%ld”,data%10); data=data/10; } }
while (1)
非0常量不会改变,代表永远为真
如条件永远为真,则不会正常退出循环,需 要强制退出措施。(后面介绍)
第一次判断条件便为假。 死循环,即不能正常退出
后两种情况请检查循环三要素是否合理。
第五章 循环结构程序设计
设有程序段
int k=10;
while (k=0) k=k-1;
则下面描述正确的是____。
第五章 循环结构程序设计
{
int y=1;
while(y--) ; printf("y=%d\n",y);
}
以上程序段执行后的输出结果是____。
A)y=0 C)y=1 B)y= -1 D)while构成无限循环
第五章 循环结构程序设计
例5.1:输入一个班学生的成绩,求全班的平均成绩。
分析:
输入成绩、计算平均成绩都是一个重复性过程,因 此可以用循环语句来实现。 在这里,我们并不知有多少个学生,也就是说不知 循环到底有多少次,但考虑到成绩没有负数,这样就 可以把循环条件定为:每当输入的分数大于等于0时就 继续输入成绩;输入的分数小于0时就停止输入。
下面程序的功能是实现从键盘输入若干学生的成 绩,统计最高成绩,当输入负数是结束输入。
#include<stdio.h>
void main()
{int score,max;
( 1
);
max=score; while( 2 ) { if(max<score) ( 3 ); scanf(“%d”,&score);} printf(“max=%d\n”,max);}
第五章 循环结构程序设计
当执行以下程序段时,循环体将执行( x=4; while (x>=2) {x=x-1;} A.1 B.2 C.3
)次 .
D.循环体将执行无数多次
第五章 循环结构程序设计
读程序,输入两组数:3,15和13,5,运行结果分别 为多少?
{int a,b,n1,n2,t; printf("input two numbers:"); scanf("%d,%d",&n1,&n2);
第五章 循环结构程序设计
循环条件
思考 : 如果将循环条件改 为 i<100结果有何变 化? 如将循环体中i++去 掉会怎样? 如果累加到1000该 如何修改程序? 。。。
循环体
编写程序,求100以内所以能被3整除的数之和。
第五章 循环结构程序设计
while循环特殊情况
条件永远为真
第五章 循环结构程序设计
char c; while((c=getchar())!='\n') { if((c>='a' && c<='z') || (c>='A' && c<='Z')) { c=c+4; if(c>'Z' && c<='a'+4 || c>'z') c=c-26; } printf("%c",c); }
第五章 循环结构程序设计
*使用while语句的时候,要注意一下问题:
1)循环体如果包含一个以上的语句,应该用花括号 括起来,以复合语句的形式程序。
2)在循环体中应有使循环体趋向于结束的语句。 3)循环体语句有可能一次也不执行。
第五章 循环结构程序设计
例5.14 编写给多个学生的成绩评定等级的程序。
执行过程:
先判断表达式的值。
若0,则执行其后面的语句, 否则while执行完毕。
第五章 循环结构程序设计
例:用while语句构成循环,求
怎么求?先分析,再设计,后编码
i
i 1
100
分析
设计
编码
分析题目已知 和未知条件
设计算法
编写程序并测试
• 找计算规律 • 分析数据, 采用合适数 据类型表示
int score; scanf("%d", &score); while(score>=0) { /*循环结构*/
......
scanf("%d",&score); }
第五章 循环结构程序设计
switch(score/10)
/*循环体嵌套选择结构*/
{
case 10: case 9: printf("%d:A\n", score); break; case 8: case 7: printf("%d:B\n",score); break;
当型循环
直到型循环
循环语句
1. if语句与goto语句
2. while 语句
3. do …while 语句
4. for语句
第五章 循环结构程序设计
5.1 while语句
while语句通过判断循环控制条件是否满足来决定是 否继续循环,又称“当型”循环 。
一般形式:
wຫໍສະໝຸດ Baiduile (表达式) 循环体语句
第五章 循环结构程序设计
2 循环结构与顺序结构以及选择结构的比较:
A
B
Y
条件
N
A
B
选择结构中满足条件的语句执行 顺序结构中的语句只执行一次 一次,而不满足的一次也不执行
第五章 循环结构程序设计
循环结构:按照一定的条件反复执行某一处理步 骤的结构。
条 件P
真
假
假
A
假
A
条 件P
真
第五章 循环结构程序设计
注意: 循环体如果为一条以上的语句,
第五章 循环结构程序设计
应使用复合语句。
9
知识拓展:while 循环三要素
三要素 : 为了使得循环有开始的机会,一般而言,与循环条件相关 的变量需要进行一定的初始化操作。 循环需要有结束的机会。 循环主体中的语句必须修改循环条件的值,否则会形成死 循环
第五章 循环结构程序设计
5.2 do …while语句
特点:先执行循环体,然后判断循环条件是否成立。
一般形式:
do 循环体语句
while (表达式);
执行过程:
先执行一次指定的循环体语句,然后判别表达式, 当表达式的值为非零(“真”) 时,返回重新执行循环体 语句,如此反复,直到表达式的值等于0为止,此时循 环结束。
第五章 循环结构程序设计
• 选用合适的结构 组织步骤 • 注意输入、处理 和输出三个环节 的逻辑性
•符合语法 •符合逻辑
例:用while语句构成循环,求
设计与编码
开始 sum=0 i=1
F
i
i 1
100
i<=100
T
sum+=i i++
输出sum
结束
源程序: #include <stdio.h> void main() { int sum = 0; //变量sum将用于存储累加和,将它初始化为0。 int i = 1; //i是每次要加的数,它从1开始。 while ( i<= 100) { sum += i; i++; } printf("1到100累加和为:%d",sum); //输出累加结果: }
case 6: printf("%d:C\n",score); break;
default: printf("%d:D\n",score); }
第五章 循环结构程序设计
例5.17: 电文加密问题。
已知电文加密规律为:将字母变成其后面的第4个字 母,其他字符保持不变。
例如,a→e,A→E,W→A。 编写一个程序,输入一行字符,要求转换成加密电 文输出。
#include<stdio.h> void main() {int n,s,i; s=0; printf(“请输入一个正整数:”)); scanf(“%d”,&n); while(i<=n) { s=s+i;i=i+2;} printf(“0到n以内所有奇数之和为:%d\n”,s);}
第五章 循环结构程序设计