实验项目四结构化程序设计_循环结构

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

《程序设计基础I》实验报告实验项目四:结构化程序设计_循环结构

一、实验目的及要求

(1)熟悉掌握用while语句,do-while语句和for语句实现循环的方法。

(2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。

(3)掌握多重循环的选择时机和使用方法;

(4)掌握使用break和continue语句的方法。

二、实验设备(环境)及要求

使用Visual C++ 6.0;windows系列操作系统的环境。

三、实验内容与步骤(要求以“学号_姓名_题号”为名建立项目;

例项目名为:2013050201_***_01)

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位精度的结果

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

3输入正数n ,要求输出Fibonacci 数列的前n 项。1,1,2,3,5,8……

#include

开始

结束

term=0 sum=0 i=1

i ≤20?

i=i+1

sum=sum+term

term=term *i

输出sum

是 否

#include int main()

{float term,sum;int i; term=1,i=1,sum=0; while(i<=20) {term=term*i; sum=sum+term;

printf("sum=%.1f\n",sum); i++; }

printf("sum=%f\n",sum); return 0; }

int main()

{

int a,b,c,n,i; a=1,b=1;

scanf("%d",&n);

printf("%d,%d,",a,b); for(i=3;i<=n;i++) {c=a+b,a=b,b=c; printf("%d,",c);

if(i%10==0) printf("\n"); }

return 0; }

4下面是计算s = n!的源程序,在这个源程序中存在若干语法和逻辑错误。

要求在计算机上对这个例子源程序进行调试修改,使之能够正确完成指定任务。例如,8! = 40320。

#include int main() {

int i, n, s = 1;

printf("Please enter n:"); scanf("%d", n);

for(i = 1, i <= n, i++)

s = s * i;

printf("%d! = %d", n, s);

}

return 0;

修改上述计算s = n!的源程序,要求输入改为“整数S ”,输出改为“满足n! >=S 的 最小整数n ”。例如,输入整数为40310,输出结果为n = 8。。

要求:每道题目分别画出程序流程图,书写程序,试运行(如何输入,结果如何)

#include

int main()

{

int i, n, s = 1;

printf("Please enter n:");

scanf("%d",&n);

for(i = 1; i <= n;i++) s = s * i;

printf("%d! = %d\n", n, s); return 0;

}

5. 分析题

(1) 先分析程序运行的结果,然后上机编辑和运行程序,并将运行的结果与分析的结果 进

行比较,若分析有误,试找出原因。 答:要想循环,则while 后面不加分号

开始

结束

输入s

Term

输出n

Term=term ×i ; I=i+1

Term=1

#include int main() { float S,term=1;int

i=1,n; printf("请输入S 的值

"); scanf("%f",&S); while(term

N=n-i

(2)若把第5行中的k++改为++k,结果如何

答:输出Final k=1 Final k=2

6.分析题

(1)先分析程序运行的结果,然后上机编辑和运行程序,并将运行的结果与分析的结果进行比较,若分析有误,试找出原因。

<><><>#

(2)若把第7行中的i%2改为!(i%2),结果如何变化?

<><>#

(3)若把第7行中的continue改为break,结果如何变化?

<>#

通过(3)的操作,你对break和continue语句有什么认识?

break语句跳出循环,不再重复,continue语句本次循环不输出继续执行循环语句

7.分析题

(1)先分析程序运行的结果,然后上机编辑和运行程序,并将运行的结果与分析的结果进行比较,若分析有误,试找出原因。

####

###*

##**

#***

8.分析题

(1)先分析程序运行的结果,然后上机编辑和运行程序,并将运行的结果与分析的结果进行

比较,若分析有误,试找出原因。

b=22