5-3 循环结构程序设计
- 格式:doc
- 大小:95.50 KB
- 文档页数:9
C语言程序设计课件教案第五章循环结构教学目的掌握循环结构中的while语句、dowhile语句、for语句的用法,掌握中断语句中break和continue语句的用法。
教学要求1.熟练掌握while语句、dowhile语句、for语句2.熟练掌握break语句、continue语句重点和难点1.while语句、dowhile语句、for语句的使用2.break语句、continue语句的使用教学支撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学方法讲授法、练习法、讨论法授课课时6课时教学过程AM一、课程引入计算1+2+3+...+n有几种方法,需要多少步骤?、循环结构语句什么时候用到循环结构:处理重复的问题的时候。
循环结构的三大语句:while语句、dowhile语句、for语句。
1.while语句while(循环条件表达式)循环体语句;执行过程:只有循环条件表达式的值为真就执行循环体语句,先判断后执行。
1.输出1---n之间的数intmain(void){inti=1;intn=0;printf("请输入n的值:");scanf("%d",&n);//1015while(i<=n)15printf("%d\n",i);i++;}return0;}2.计算m+...+n 的值intmain(void){inti=1;intn=0;intm=0;intsum=0;printf("请依次输入m 和n 的值:");scanf("%d%d",&m,&n);//m+...n10while(m<=n){sum=sum+m ;m++;}printf("sum=%d\n",sum);return0;}2.do...while 语句do循环体语句;}while(循环条件表达式);执行过程:先执行循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环。
实验五循环结构程序设计一、实验目的(1)掌握使用while语句,do-while语句和for语句实现循环的方法。
(2)掌握在循环结构中使用break与continue语句的方法。
(3)掌握多重循环的使用方法。
二、实验步骤、数据记录及处理(1)编写程序输出半径为1到15的圆的面积,若面积在30到100之间则予以输出,否则,不予输出。
程序代码:#include<stdio.h>int main(){int i;float area;for(i=1;i<=15;i++){area=3.14*i*i;if(area<30) continue;else if(area>100) break;printf("半径为%d的圆的面积为%6.2f\n",i,area);}return 0;}运行结果:(2)输入一个正整数x(可以是1-9位的正整数),将其转换为逆序正整数y输出,例如输入x的值为3456,则输出y的值6543。
程序代码:#include<stdio.h>int main(){int num,temp,i=0;printf("请输入一个数字:");scanf("%d",&num);while(num>0){temp=num%10;++i;printf("%d",temp);num=num/10;}printf("\n这个数是%d位数",i);return 0;}运行结果:(3)编写程序,分行输出斐波那契Fibonacci数列的前20项(每行5个数)。
说明:斐波那契序列:1,1,2,3,5,8,13,21,……题目扩展(选做):求Fibonacci数列中小于t的最大的一个数,其中t由键盘输入。
例如:输入t=1000时,则输出987。
程序代码:#include <stdio.h>void main(){int i,a[20];a[0]=1;a[1]=1;for(i=2;i<20;i++)a[i]=a[i-1]+a[i-2];i=0;while(i<20){printf("%d\t",a[i++]);if(i%5 == 0)printf("\n");}}运行结果:(4)编写程序,输出“九九乘法口诀表”。
实验三:循环结构程序设计一、实验目的:1. 熟练使用for()、while()和do-while()三种语句实现循环程序设计;2. 理解循环条件和循环体,以及体会for()、while()和do-while()语句的相同及不同之处;3.掌握break和continue语句的使用。
二、实验要求:1. 参照《附件一:确定循环次数的程序设计》,完成相应的题目要求(共5题);2. 水仙花数是指各位数字的立方和等于该数本身的三位数。
例如,153是水仙花数,因为153=13+33+53。
请编程计算并输出所有的水仙花数,每个数占一行。
输出样例:153370371407#include<stdio.h>int main(){int s,d,z,i;for(i=100;i<=999;i++){s=i/100;d=i/10%10;z=i%10;if(i==s*s*s+d*d*d+z*z*z)printf("%d\n",i);}return 0;}3. 编写程序,输入一批正整数(以零或负数为结束标志),求其中的偶数和。
要求:使用while()语句实现此程序。
输入样例:1 2 3 4 5 0输出样例:6输入样例:-1输出样例:0#include<stdio.h>int main(){int n ,sum=0;while(scanf("%d",&n),n>0){if(n%2==0)sum+=n;}printf("%d",sum);return 0;}4.古代《张丘建算经》中有一道百鸡问题:鸡翁一,值钱五;母鸡一,值钱三;鸡雏三,值钱一。
百钱买百鸡,问鸡翁、母、雏各几何?其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。
请用穷举法编程计算,若用100元买100只鸡,则公鸡、母鸡和小鸡各能买多少只。
输出样例:0 25 754 18 788 11 8112 4 845.一球从100米高度自由落下,每次落地后反弹回原高度的一半,然后再落下再反弹。
5 循环结构程序设计本章重点:• while 语句及其构成的循环结构• do-while语句及其构成的循环结构• for语句及其构成的循环结构• break语句和continue语句• 多重循环结构的实现本章难点:• for循环结构• 多重循环结构的实现5.1 概述循环结构是高级语言程序设计中一种重要的、常用的控制结构,主要用于解决那些需要重复执行的操作。
循环结构是在重复性的操作过程中找到规律,然后按照指定的条件重复执行某个指定程序段的控制方式,也称重复结构。
其特点是在给定条件成立时,反复执行某程序段,直到条件不成立为止。
其中给定的条件称为循环条件,反复执行的程序段称为循环体。
C语言中常见的循环结构语句有以下三种。
(1) while语句(2) do-while语句(3) for语句另外,使用goto语句与if语句一起也可以构成循环结构。
goto语句也称为无条件转移语句,其一般格式如下:goto 语句标号;……标号:语句……说明:其中语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号(:)。
语句标号起标识语句的作用,与goto 语句配合使用。
如: loop: i=i+1;C语言不限制程序中使用标号的次数,但各标号不得重名。
goto语句的语义是改变程序流向,转去执行语句标号所标识的语句。
例5-1 用goto语句构造循环计算1到100的整数和。
算法分析:这是一个求连续数累加和的问题。
sum用来存放两数的和,初值为0,i用来表示下一个要进行求和的数。
main(){int i=1,sum=0;loop:sum=sum+i;i++;if(i<=100)goto loop;printf("the sum of 1 to 100 is:%d\n",sum);}运行结果如下:the sum of 1 to 100 is:5050本例用if语句和goto语句构成循环结构。
北京建筑工程学院
计算机教学与网络信息部计算机程序设计基础实验报告
实验5-3:实验名称循环结构程序设计(三) 实验地点大兴基础楼B座201
姓名张三专业土木工程班级土081 学号 2 日期2009.04.21
【实验目的】
(1)掌握循环嵌套和多重循环的使用
(2)掌握基本输入和输出多组数据的常用方法
【实验要求】
(1)掌握循环嵌套和多重循环的使用
(2)掌握基本输入和输出多组数据的常用方法
【实验环境】
(1) Microsoft XP操作系统
(2) Microsoft VC++ 6.0
【实验内容】
1.自然数的和之和
/acmhome/problemdetail.do?&method=showdetail&id=3063
题目描述:计算S=1+(1+2)+(1+2+3)+…+(1+2+…+N).已知N,要求写程序求出S。
输入:
第一行有1个整数T,表示有T组测试数据。
第二行~第T+1行,每行有1个整数N,1<=N<=200。
输出:对于每组输入数据,输出一行,包含一个整数,即此时S的值。
样例输入:
2
1
200
样例输出:
1
1353400
2.美食节之敲诈
/acmhome/problemdetail.do?&method=showdetail&id=2877
题目描述:
临海每年都会在临海体育馆举办一次美食节,可能xzc太宅了,大二才知道,虽然知道的有点晚了,但是不妨碍xzc好好吃一顿,可是很不巧啊,xzc忘了带money 了,为什么那么多香气腾腾的美食,xzc无耻的向同行的帅哥美女们打起了主意,但是打秋风的事是可一而不可再的,碍于脸面关系,每个人最多只请客x元,给出与xzc一同去逛美食节的人数n,以及n个人每个人所带的钱数,请你计算出xzc在美食节上最多能敲诈多少元?说明:X可能大于携带的money。
输入:
输入含多组数据,每组数据含两行,第一行有两个整数n和x,以空格分开,n 代表去美食节的人数,x代表xzc最多向其他人每个人敲诈x元;第二行为n个正整数,分别代表n个人每个人携带的money数量。
输入直到文件结束为止(即EOF)。
输出:每组输出数据占一行,即输出xzc在美食节上最多能敲诈的money数量。
样例输入:
5 2 // n,x
1 2 3 4 5 // m
样例输出:
9
提示:
while(n--){ if(m>=x)sum+=x;else sum+=x;}
3.水仙花数
/acmhome/problemdetail.do?&method=showdetail&id=1372
题目描述:
春天是鲜花的季节,MM们也是花枝招展,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。
输入:
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
输出:
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;如果给定的范围内不存在水仙花数,则输出no;每个测试实例的输出占一行。
样例输入:
100 120
no
370 371
4.自然数对
/acmhome/problemdetail.do?&method=showdetail&id=3062
题目描述:
知道2个自然数A,B,如果A+B,A-B都是平方数,那么A,B就是自然数对。
要求写程序判断给定的2个数A,B是否为自然数对。
输入:
第一行有1个整数T,表示有T组测试数据。
第二行~第T+1行,每行有2个数据A,B,其中0<=A+B<=2^31且A>B。
输出:
对于每组测试数据输出一行,包含"YES"或者"NO"。
"YES"表示该数对是自然数对,否则输出"NO"。
样例输入:
2
17 8
3 1
样例输出:
YES
NO
提示:
sqrt((a+b)*(a+b))= =(a+b) && sqrt((a-b)*(a-b))= =(a-b) ? YES : NO
5.切蛋糕
/acmhome/problemdetail.do?&method=showdetail&id=3299
题目描述:
今晚是GG的生日,大家的口福又来了哦,蛋糕可是少不了的,不过这蛋糕可不是人人都有的吃的哦,你得费点脑筋呢,只要你能用n刀切出最多块数的蛋糕(刀子每次都垂直于桌面),你就可以吃到美味的蛋糕了哦,(注意:切出的蛋糕大小可以不等)。
怎么样,相信聪明的你吃到这块蛋糕应该不是问题吧?
输入:输入包括多组数据,每组数据就是要切的刀数n(n<10000);
输出:每组输出切成的蛋糕数m
样例输入:
1
2
56
6.母牛的故事
/acmhome/problemdetail.do?&method=showdetail&id=1376
题目描述:
有一头母牛,它每年年初生一头小母牛。
每头小母牛从第四个年头开始,每年年初也生一头小母牛。
请编程实现在第n年的时候,共有多少头母牛?
输入:
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理
输出:对于每个测试实例,输出在第n年时母牛的数量。
每个输出占一行。
样例输入:
2
4
5
样例输出:
2
4
6
7.素数的判定
/acmhome/problemdetail.do?&method=showdetail&id=1374
题目描述:
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x,y<=50),判定该表达式的值是否都为素数。
输入:
输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。
输出:
对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。
样例输入:
0 0
样例输出:
OK
8.素数
/acmhome/problemdetail.do?&method=showdetail&id=1098题目描述:输出100->200之间的素数的个数,以及所有的素数。
输入:无
输出:100->200之间的素数的个数,以及所有的素数。
样例输入:
样例输出:
21
101 103 … 197 199
9.打印菱形
/acmhome/problemdetail.do?&method=showdetail&id=1172题目描述:从键盘输入一个整数n(1≤n≤9),打印出指定的菱形。
输入:正整数n(1≤n≤9)。
输出:指定菱形。
第一行前面有n-1个空格,第二行有n-2个空格,以此类推。
样例输入:
5
样例输出:
*
***
*****
*******
*********
*******
*****
***
*
10.打印直角三角形
/acmhome/problemdetail.do?&method=showdetail&id=1462
题目描述:从键盘输入一个整数n(1≤n≤9),打印出指定的菱形。
输入直角三角形的直角边长度(两个直角边相同),打印输出该图形。
如输入5,输出下列图形:
*
**
***
****
*****
输入:
输入数据第一行为n,表示一共有n组数据输入,后面有n行,每行表示直角边长度(两个直角边相同)。
输出:以*字符来打印输出直角三角形图形。
样例输入:
3
1
2
3
样例输出:
*
*
**
*
**
***
【实验方法】
1.自然数的和之和
【源代码】
【运行结果】
【结论】
2.美食节之敲诈
【源代码】
【运行结果】
【结论】3.水仙花【源代码】
【运行结果】【结论】
4.自然数对【源代码】
【运行结果】【结论】
5.切蛋糕【源代码】
【运行结果】【结论】
6.母牛的故事【源代码】
【运行结果】
【结论】
7.素数的判定
【源代码】
【运行结果】
【结论】
8.素数
【源代码】
【运行结果】
【结论】
9.打印菱形
【源代码】
【运行结果】
【结论】
10.打印直角三角形
【源代码】【运行结果】【结论】【成绩评定】。