上机实验五 循环结构程序设计一带参考答案.docx

上传人:b****8 文档编号:9683601 上传时间:2023-02-05 格式:DOCX 页数:11 大小:18.32KB
下载 相关 举报
上机实验五 循环结构程序设计一带参考答案.docx_第1页
第1页 / 共11页
上机实验五 循环结构程序设计一带参考答案.docx_第2页
第2页 / 共11页
上机实验五 循环结构程序设计一带参考答案.docx_第3页
第3页 / 共11页
上机实验五 循环结构程序设计一带参考答案.docx_第4页
第4页 / 共11页
上机实验五 循环结构程序设计一带参考答案.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

上机实验五 循环结构程序设计一带参考答案.docx

《上机实验五 循环结构程序设计一带参考答案.docx》由会员分享,可在线阅读,更多相关《上机实验五 循环结构程序设计一带参考答案.docx(11页珍藏版)》请在冰豆网上搜索。

上机实验五 循环结构程序设计一带参考答案.docx

上机实验五循环结构程序设计一带参考答案

上机实验五循环结构程序设计

(一)

一.目的要求

1.掌握while、do-while、for语句的语法规则、执行流程。

2.比较3种循环语句的异同。

3.按题目要求,完成代码。

二.实验内容

思考问题:

3种循环的异同点?

能否相互转换?

for循环控制单元的表达式与while循环中表达式是如何对应的?

第1题、分别用while、do-while、for语句编程,求数列前20项之和:

2/1,3/2,5/3,8/5,13/8······

算法提示:

1)定义实变量sum、term、a、b、c,整变量i

2)初始化:

sum=0,分子a=2,分母b=1

3)初始化:

i(计数器)=1

4)计算第i项term=a/b

5)累加sum=sum+term

6)计算c=a+b,更新b=a,更新a=c

7)计数器加1,i++

8)重复4、5、6、7,直到i>20

9)输出2位精度的结果

编写程序:

方法一,用while语句:

#include

voidmain(){

floats=0,a=2,b=1,c;

inti=1;

while(i<=20){

s=s+a/b;

c=a+b;

b=a;

a=c;

i++;

}

printf(“s=%.2f”,s);

}

方法二,用do-while语句:

#include

voidmain(){

floats=0,a=2,b=1,c;

inti=1;

do{

s=s+a/b;

c=a+b;

b=a;

a=c;

i++;

}while(i<=20);

printf(“s=%.2f”,s);

}

方法三,用for语句:

#include

voidmain(){

floats=0,a=2,b=1,c;

inti;

for(i=1;i<=20;i++){

s=s+a/b;

c=a+b;

b=a;

a=c;

}

printf(“s=%.2f”,s);

}

第2题、计算多项式的值:

s=1!

+2!

+3!

+4!

+·····+20!

算法提示:

该多项式迭代公式为:

term=term*i,sum=sum+term

注意:

哪些变量需要初始化?

变量应采用什么类型?

编写程序:

#include

voidmain(){

inti;

doubles=0,fact=1;

for(i=1;i<=20;i++){

fact*=i;

s=s+fact;

}

printf(“s=%f”,s);

}

把每一次迭代结果输出,程序应做怎样的修改?

 

第3题、输入x和n,计算并输出下式的值:

s=x/1+x/3+……+x/n

参考答案:

#include

intmain()

{

intn,i;

floatx,s=0;

printf("请输入x,n,以,分隔");

scanf("%f,%d",&x,&n);

for(i=1;i<=n;i+=2)

{

s+=(x/i);

}

printf("\ns=%f",s);

}

第4题、输入一批正整数,求出其中的偶数之和。

(思考:

如何表示输入的结束?

参考答案:

#include

intmain()

{

intsum=0,n;

printf("请输入若干正整数,以空格分隔,并以0表示结束");

scanf("%d",&n);

while(n>0)

{

if(n%2==0)sum+=n;

scanf("%d",&n);

}

printf("sum=%d",sum);

}

第6题、输入x,计算并输出下式的值:

s=x/(1*2)+x/(3*4)+x/(5*6)+……

直到最后一项的绝对值小于1E-5

参考答案:

#include

#include

intmain()

{

floatsum,x,item;

inti=1;

printf("请输入x=");

scanf("%f",&x);

do

{

item=x/(i*(i+1));

sum+=item;

i+=2;

}while(fabs(item)>=1E-5);

printf("sum=%f",sum);

}

第5题、输入正数n,要求输出Fibonacci数列的前n项。

1,1,2,3,5,8……

参考答案:

#include

#include

intmain()

{

longx1=1,x2=1,x,n,i;

printf("请输入n=");

scanf("%d",&n);

printf("%d\t%d\t",x1,x2);

for(i=3;i<=n;i++)

{

x=x1+x2;

printf("%d\t",x);

if(i%5==0)//每行输出5个数

printf("\n");

x1=x2;

x2=x;

}

}

第6题、求下列多项式的和,直到最后一项的绝对值小于1E-5。

s=1/2-1/5+1/8-1/11+……

参考答案:

#include

#include

intmain()

{

intflag=1;

floatsum=0,n=2,item;

do

{

item=flag*1/n;

sum+=item;

flag=-flag;

n+=3;

}while(fabs(item)>=1E-5);

printf("sum=%f",sum);

}

第7题:

计算e=1+1/1!

+1/2!

+1/3!

+1/4!

......,直到最后一项的绝对值<1E-5。

(分别用while语句和do...while语句实现)

参考代码:

(do-While语句)

#include

#include

voidmain()

{

floatsum=1,item=1;

intfm=1,i=1;

do

{sum=sum+item;

i++;

fm*=i;

item=1.0/fm;

}while(fabs(item)>=1E-5);

printf("e=%f\n",sum);

printf("谢谢,按回车键结束");

}

(While语句)

#include

#include

voidmain()

{

floatsum=1,item=1.0;

intfm=1,i=1;

while(fabs(item)>=1E-5)

{

sum=sum+item;

i++;

fm*=i;

item=1.0/fm;

}

printf("e=%f\n",sum);

printf("谢谢,按回车键结束");

}

第8题、给出任意一个位数不确定的正整数,要求分别从低位到高位、从高位到低位逐位分割输出。

比如输入123456,输出6,5,4,3,2,1和1,2,3,4,5,6

从高位到低位的参考答案:

#include

intmain()

{

longn,t=1;

printf("请输入一个长整数n=");

scanf("%ld",&n);

while(n/t!

=0)

{

t*=10;

}

t/=10;

while(t!

=0)

{

printf("\n%d\t%d\t%d",n,t,n/t);

n=n%t;

t=t/10;

}

putchar('\n');

}

从低位到高位的参考答案

#include

intmain()

{

longn,t=1;

printf("请输入一个长整数n=");

scanf("%ld",&n);

while(n!

=0)

{

printf("\n%d\t%d",n,n%10);

n/=10;

}

putchar('\n');

}

第9题、36块砖36人搬,男搬4女搬3,小孩2人搬1砖。

要求一次全搬完,问男、女、小孩各需多少(人)?

如有多种方案,输出第一种方案及方案的数量。

算法提示:

设x,y,z表示男、女、小孩的人数,则有不定方程:

x+y+z=36

4x+3y+z/2=36

对x,y,z所有可能的组合测试出满足条件的解。

x、y、z的取值范围:

✧x:

1~9,步长1

✧y:

1~12,步长1

✧z:

2~36,步长2

对x,y,z所有可能的组合重复测试条件:

4*x+3*y+z/2==36&&x+y+z==36

是否成立,若成立则打印出x、y、z的值。

编写程序:

#include

voidmain(){

intx,y,z;

for(x=1;x<=9;x++)

for(y=1;y<=12;y++)

for(z=2;z<=36;z=z+2)

if(x+y+z==36&&4*x+3*y+z/2==36)

printf(“%d,%d,%d\n”,x,y,z);

}

3,3,30

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1