内容正文:
教案用纸
第 4 周 总第 11 次 学时:2
教学班级: 课程:C语言程序设计 授课教师:
课题:嵌套循环及转向语句上机操作
教学方法:演示、启发
教具:计算机
教学目标:使同学们熟练掌握循环语句的使用
教学重点:循环语句的上机操作
教学难点:循环语句在实际生活中的应用
主要教学内容:
嵌套循环及转向语句上机操作
【练习3-3】 思考用while和do-while两种循环语句编程实现s=1*2*……*10的积的程序。
【练习3-4】 编程实现从键盘输入任意数给变量j,求1到j的和。
【练习3-5】 写一程序,从键盘上输入一个年份year(4位十进制数),判断其是否为闰年。闰年的条件是:能被4整除、但不能被100整除,或者能被400整除。
【练习3-6】 输出100~200之间的全部素数。所谓素数n是指,除1和n之外,不能被2~(n-1)之间的任何整数整除。
【练习3-7】 输出100~200之间不能被3整除的数。
课后回顾:
教案用纸
四个一:
提问:(1)循环语句包括几种(2)每种循环语句的格式
导入:上节课我们学习了循环语句,循环语句主要有while、do-while以及for语句,这节课我们通过上机来巩固循环语句的内容。
正文:
嵌套循环及转向语句上机操作
【练习3-3】 思考用while和do-while两种循环语句编程实现s=1*2*……*10的积的程序。
解:设一个循环体变量i和存放乘积的变量sum,初始设i等于1,sum等于1。使用循环语句,将每次的i值乘到sum上,然后将i值自加1,直到i大于10时循环结束。
(1)使用while循环解题程序如下:
main()
{ int sum=1,i=1;
while(i<=10)
{ sum*=i; i++; }
printf("1*2*……*10=%d
",sum);
}
程序运行结果如下:
(2)使用do-while循环解题程序如下:
main()
{ int sum=1,i=1;
do
{ sum*=i;
i++;
}while(i<=10);
printf("1*2*……*10=%d
",sum);
}
程序运行结果同使用while语句的程序运行结果。
【练习3-4】 编程实现从键盘输入任意数给变量j,求1到j的和。
解:设一个用于存放输入值的变量j,再设一个循环体变量i和存放和的变量sum。先从键盘中读入j的值,然后设i初始值等于1,sum等于0。再使用循环语句,将每次的i值加到sum上,然后将i值自加1,直到i大于j时循环结束。
解题程序如下:
main()
{ int i,j,sum=0;
printf("input to j:");
scanf("%d",&j);
for(i=1;i<=j;i++)
sum=sum+i;
printf("1+2+...+%d=%d
",j,sum);
}
程序运行结果如下:
【练习3-5】 写一程序,从键盘上输入一个年份year(4位十进制数),判断其是否为闰年。闰年的条件是:能被4整除、但不能被100整除,或者能被400整除。
解:闰年是年份能被4整除但不能被100整除的数,或是能被400整除的数。我们设年份为year,这样就构成了一个判断闰年的条件表达式:
(year%4==0 && year%100!=0)||(year%400==0)
源程序如下:
main()
{ int year;
printf("Please input the year:");
scanf("%d",&year);
if ((year%4==0 && year%100!=0)||(year%400==0))
/*判断年份是否是闰年*/
printf("%d is a leap year.
",year);
else
printf("%d is not a leap year.
",year);
}
程序运行结果如下:
第一次输入年份“1998”,输出结果“1998 is not a leap year.”,第二次输入年份“2000”,输出结果“2000 is a leap year.”
【练习3-6】 输出100~200之间的全部素数。所谓素数n是指,除1和n之外,不能被2~(n-1)之间的任何整数整除。
解:显然,只要设计出判断某数n是否是素数的算法,外面再套一个for循环即可。判断某数n是否是素数的算法:根据素数的定义,用2~(n-1)之间的每一个数去整除n,如果都不能被整除,则表示该数是一个素数。判断一个数是否能被另一个数整除,可通过判断它们整除的余数是否为0来实现。
解法程序如下:
#include <math.h>
main()
{ int m, j, k,n=0;
for(m=101;m<200;m+=2)
{ k=sqrt(m);
for( j=2; j<=m; j++)
if(m%j==0)
break;
if(j>=k+1)
{ printf("%5d",m);
n++;
if(n%10==0)
printf("
");
}
}
}
程序运行结果如下:
【练习3-7】 输出100~200之间不能被3整除的数。
解:设两个整型变量n和k,n为循环变量,k为格式控制变量。令n的初值为100,n小于等于200的时候,判断n是否能被3整除,能整除,则提前结束本次循环。如果不能整除,则输出该值,并将k自加1。当k整除10时,输出一个换行符。
解法程序如下:
main()
{ int n,k=0;
for(n=100;n<=200;n++)
{ if(n%3==0)
continue;
printf("%5d",n);
k++;
if(k%10==0)
printf("
");
}
}
程序运行结果如下:
小结:
本讲通过上机操作练习了循环语句的各种格式,希望大家能够熟练掌握循环语句的格式,并且能够在实际工作中熟练运用。
备 注
难点:while与do-while语句的区别。
while语句先判断条件后执行语句;do-while语句先执行语句后再判断条件。
思考:
是否能够用while或do-while语句来完成?
重点:解释如何识别闰年,通过举例方式使同学们易懂。
难点:循环语句的嵌套。
学科网(北京)股份有限公司
$$