教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

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

来源:网络收集 时间:2026-09-06
导读: 上机实验五 循环结构程序设计(一) 一.目的要求 1.掌握while、do-while、for语句的语法规则、执行流程。 2.比较3种循环语句的异同。 3.按题目要求,完成代码。 二.实验内容 思考问题:3种循环的异同点?能否相互转换?for循环控制单元的表达式与while循

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

一.目的要求

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<stdio.h>

void main(){

float s=0, a=2,b=1,c;

int i=1;

while(i<=20){

}

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

} s=s+a/b; c=a+b; b=a; a=c; i++;

方法二,用do-while语句:

#include<stdio.h>

void main(){

float s=0,a=2,b=1,c;

int i=1;

do {

s=s+a/b;

c=a+b; b=a; a=c; i++;

} while(i<=20);

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

}

方法三,用for语句:

#include<stdio.h>

void main(){

float s=0,a=2,b=1,c;

int i;

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

}

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

} s=s+a/b; c=a+b; b=a; a=c;

第2题、计算多项式的值:s=1!+2!+3!+4!+·····+20!

算法提示:该多项式迭代公式为:term=term*i,sum=sum+term

注意:哪些变量需要初始化?变量应采用什么类型?

编写程序:

#include<stdio.h>

void main(){

int i; double s=0,fact=1; for(i=1;i<=20;i++){

}

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

}

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

第3题、输入x和n,计算并输出下式的值:s=x/1+x/3+……+x/n fact*=i; s=s+fact;

参考答案:

#include <stdio.h>

int main()

{

int n,i;

float x,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 <stdio.h>

int main()

{

int sum=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 <stdio.h>

#include <math.h>

int main()

{

float sum,x,item;

int i=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项。3,5,8……

参考答案:

#include <stdio.h>

#include <math.h>

int main()

{

long x1=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; ,1,2,1

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 <stdio.h>

#include<math.h>

int main()

{

int flag=1;

float sum=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 <stdio.h>

#include<math.h>

void main()

{

float sum=1,item=1;

int fm=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 <stdio.h>

#include<math.h>

void main()

{

float sum=1,item=1.0;

int fm=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 <stdio.h>

int main()

{

long n,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 <stdio.h>

int main()

{

long n,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砖。要求一次全搬完,问男、女、小孩各需多少(人)?如有多种方案,输出第一种方案及方案的数量 …… 此处隐藏:1675字,全部文档内容请下载后查看。喜欢就下载吧 ……

上机实验五 循环结构程序设计一(带参考答案).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1802489.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)