实验6 循环结构程序设计(2)

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

实验6 循环结构程序设计(2)

一、实验目的:

1、继续熟悉循环程序设计,掌握不确定次数循环判定条件的设置;

2、掌握多重循环的使用,能够熟悉应用穷举法、迭代法、判定素数、求最大公约定等典型算法;

3、熟悉break语句和continue语句在循环中的应用,并区分两者的不同。

二、实验内容

1、(基础题)编写程序,输出从公元2000年到3000年所有闰年的年份,每行输出10个年份。判定闰年的条件是:

(1)年份能被4整除,但不能被100整除,则是闰年;

(2)年份能被400整除也是闰年。

(提示:循环变量从2000变化到3000,然后去判断每一个年份是否为闰年,若是,则输出。由于每行只能输出10年份,还要定义一个整型变量用于计数)

程序运行效果图如下图所示:

2、在全系1000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。请根据题目要求完善代码。

思路:①循环次数不确定,但最多循环1000次:在循环体中累计捐款总数,用if语句检查是否达到10万元,如果达到就不再继续执行循环,终止累加;②计算人均捐款数。

#include

______________//定义符号常量SUM,值为100000

int main()

{

float amount,aver,total;

int i;

for (i=1,total=0;i<=1000;i++)

{

printf("please enter amount:");

scanf("%f",_____);//输入用户捐款数额,存入amount变量

___________;//用户捐款数额累加进total变量中

if(total>=SUM) //判断捐款数额是否已够

_______;

}

//计算平均每人捐款的数目

if(i>1000) //循环正常结束

aver=total/(i-1);

else //循环提前结束

________;

printf("num=%d\naver=%10.2f\n",i,aver);

return 0;

}

3、(基础题)已知有式子:xyz+yzz=532, 其中x、y、z为数字,编写程序输出所有满足条件的x、y和z。(提示:可以利用三重循环去列举出所有可能组合,x、y、z

的值只能在0-9之间)。程序运行效果图:

4、(提高题)输入两个正整数,输出它们的最大公约数和最小公倍数。

(提示:参考课件例子,先求最大公约数,最小公倍数=这两个数的乘积/最大公约数)

⏹如果一个数既是数A的约数,又是数B的约数,称为A,B的公约数

⏹分析:用辗转相除法(欧几里德算法)

●先比较两个数的大小;

●(i)用较大数去除较小数,得到一个余数;

●(ii)如果余数为0,则除数(较小数)就是最大公约数,结束运算;

●(iii)如果余数不为0,则计算除数(较小数)和余数的最大公约数即可(舍去被除

数)。转向执行(i)。

以求288和123的最大公约数为例,操作如下:288÷123=2余42

123÷42=2余39

42÷39=1余3

39÷3=13

所以3就是288和123的最大公约数。

编程思路:

(1)输入两个正整数m,n(确保m大于n)

(2)用m除以n得到余数r;

(3)若r=0,则n为最大公约数,程序结束;否则用n取代m,用r取代n,转去执行第(2)

步。

程序运行效果图:

相关文档
最新文档