循环结构程序设计.docx

上传人:b****6 文档编号:16076756 上传时间:2023-07-10 格式:DOCX 页数:22 大小:124.80KB
下载 相关 举报
循环结构程序设计.docx_第1页
第1页 / 共22页
循环结构程序设计.docx_第2页
第2页 / 共22页
循环结构程序设计.docx_第3页
第3页 / 共22页
循环结构程序设计.docx_第4页
第4页 / 共22页
循环结构程序设计.docx_第5页
第5页 / 共22页
循环结构程序设计.docx_第6页
第6页 / 共22页
循环结构程序设计.docx_第7页
第7页 / 共22页
循环结构程序设计.docx_第8页
第8页 / 共22页
循环结构程序设计.docx_第9页
第9页 / 共22页
循环结构程序设计.docx_第10页
第10页 / 共22页
循环结构程序设计.docx_第11页
第11页 / 共22页
循环结构程序设计.docx_第12页
第12页 / 共22页
循环结构程序设计.docx_第13页
第13页 / 共22页
循环结构程序设计.docx_第14页
第14页 / 共22页
循环结构程序设计.docx_第15页
第15页 / 共22页
循环结构程序设计.docx_第16页
第16页 / 共22页
循环结构程序设计.docx_第17页
第17页 / 共22页
循环结构程序设计.docx_第18页
第18页 / 共22页
循环结构程序设计.docx_第19页
第19页 / 共22页
循环结构程序设计.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

循环结构程序设计.docx

《循环结构程序设计.docx》由会员分享,可在线阅读,更多相关《循环结构程序设计.docx(22页珍藏版)》请在冰点文库上搜索。

循环结构程序设计.docx

循环结构程序设计

实验四循环结构程序设计

一.【实验目的】

1、熟练使用for、while和do…while语句实现循环结构程序设计。

2、理解循环条件和循环体,以及for、while和do…while语句的相同及不同之处。

3、熟练掌握break和continue语句的使用。

4、掌握使用“debug”菜单调试程序的方法。

二.【实验内容和步骤】

1、程序调试题

A.目标:

进一步学习掌握程序调试的方法和技巧。

B.内容:

参照《实验指导》教材P38“1.调试示例”,改正程序中的错误,使其实现程序的功能。

(注:

程序文件保存在“调试示例”文件夹中,文件名为error04_1.cpp)

①调试正确的源程序清单

#include

intmain(void)

{

intm,n,j,k;

do{

printf("Inputm:

");

scanf("%d",&m);

printf("Inputn:

");

scanf("%d",&n);

}while(m<0||n<0);

j=m;

while(j%n!

=0)

j=j+m;

k=(m*n)/j;

printf("最小公倍数是%d\n最大公约数是%d\n",j,k);

return0;

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

2、完善程序,并调试运行程序

题目

(1)求1+1/2+1/3+⋯⋯+1/n。

程序功能:

从键盘上输入一个正整数repeat(0

读入1个正整数n(n<=50),计算并输出1+1/2+1/3+⋯⋯+1/n(保留3位小数)。

(注:

程序文件保存在“第1题”文件夹中)打开proj1.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

inti,n;

floatsum;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%d",&n);

sum=0;

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

sum=sum+1.0/i;

}

printf("%.3f\n",sum);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目

(2)求n!

程序功能:

从键盘上输入一个正整数repeat(0

读入1个正整数n(n<=50),计算并输出n!

(注:

程序文件保存在“第2题”文件夹中)打开proj2.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

inti,n;

doublefact;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%d",&n);

fact=1;

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

fact=fact*i;

}

printf("%.0f\n",fact);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(3)求x的n次幂(即:

xn)。

程序功能:

从键盘上输入一个正整数repeat(0

读入1个正实数x和1个正整数n(n<=50),计算并输出x的n次幂(即:

xn,保留2位小数)。

(注:

程序文件保存在“第3题”文件夹中)打开proj3.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

inti,n;

doublex,mypow;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

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

mypow=1;

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

mypow=mypow*x;

printf("%.2f\n",mypow);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(4)求1-1/2+1/3-1/4+…+1/n。

程序功能:

从键盘上输入一个正整数repeat(0

读入1个正整数n(n<=100),计算并输出1-1/2+1/3-1/4+⋯⋯的前n项和(保留3位小数)。

(注:

程序文件保存在“第4题”文件夹中)打开proj4.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

inti,n,flag;

floatsum;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%d",&n);

sum=0;

flag=1;

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

sum=sum+flag*1.0/i;

flag=-flag;

}

printf("%.3f\n",sum);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(5)求1+1/3+1/5+1/7+…。

程序功能:

从键盘上输入一个正整数repeat(0

读入1个正整数n(n<=100),计算并输出1+1/3+1/5+1/7+⋯⋯的前n项和(保留3位小数)。

(注:

程序文件保存在“第5题”文件夹中)打开proj5.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

inti,n,temp;

floatsum;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%d",&n);

temp=1;

sum=0;

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

sum=sum+1.0/temp;

temp=temp+2;

}

printf("%.3f\n",sum);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(6)求1-1/3+1/5-1/7+…。

程序功能:

从键盘上输入一个正整数repeat(0

读入1个正实数eps,计算并输出1-1/3+1/5-1/7+⋯⋯,直到最后一项的绝对值小于eps(保留6位小数)。

(注:

程序文件保存在“第6题”文件夹中)打开proj6.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

#include

intmain()

{

intri,repeat;

inttemp,flag;

doubleeps,item,sum;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%le",&eps);

flag=1;

sum=0;

temp=1;

item=1.0;

while(fabs(item)>=eps){

item=flag*1.0/temp;

sum=sum+item;

temp=temp+2;

flag=-flag;

}

printf("%.6f\n",sum);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(7)求1-1/3+1/5-1/7+…。

程序功能:

从键盘上输入一个正整数repeat(0

输入2个整数begin和end,分别代表摄氏温度的起止值,输出该范围内(步长为1)摄氏温度C和华氏温度F的转换表。

转换计算公式:

F=32+C*9/5,输出语句:

printf("%d%10.2f\n",c,f);。

(注:

程序文件保存在“第7题”文件夹中)打开proj7.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

intbegin,c,end;

doublef;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%d%d",&begin,&end);

printf("CelsiusFahrenheit\n");

for(c=begin;c<=end;c++){

f=32+c*9/5;

printf("%d%10.2f\n",c,f);

}

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(8)求奇数和。

程序功能:

从键盘上输入一个正整数repeat(0

读入一批正整数(以零或负数为结束标志),求其中的奇数和。

(注:

程序文件保存在“第8题”文件夹中)打开proj8.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

intx,sum;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%d",&x);

sum=0;

while(x>0){

if(x%2==1)

sum=sum+x;

scanf("%d",&x);

}

printf("%d\n",sum);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(9)求最大值和最小值。

程序功能:

从键盘上输入一个正整数repeat(0

输入一个正整数n,再输入n个整数,输出这n个整数中的最大值、最小值、累加和与平均值。

(注:

程序文件保存在“第9题”文件夹中)打开proj9.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

inti,max,min,n,x;

doublesum,avg;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%d",&n);

scanf("%d",&x);

sum=x;

max=x;

min=x;

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

scanf("%d",&x);

if(max>=x)

max=max;

else

max=x;

if(min<=x)

min=min;

else

min=x;

sum=sum+x;

}

avg=sum/n;

printf("TheMaxis%d.\n",max);

printf("TheMinis%d.\n",min);

printf("TheSumis%f.\n",sum);

printf("TheAvgis%f.\n",avg);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(10)求整数的位数以及各位数之和。

程序功能:

从键盘上输入一个正整数repeat(0

输入一个整数,输出它的位数以及各位数之和。

(注:

程序文件保存在“第10题”文件夹中)打开proj10.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

intnumber,sum;

longintin;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%ld",&in);

number=1;

if(in<0)

in=-in;

sum=in%10;

while(in/10>0){

in=in/10;

sum=sum+(in%10);

number++;

}

printf("number=%d,sum=%d\n",number,sum);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(11)求2/1+3/2+5/3+8/5+...之和。

程序功能:

从键盘上输入一个正整数repeat(0

输入一个正整数n,输出2/1+3/2+5/3+8/5+...的前n项之和,保留2位小数。

(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)(注:

程序文件保存在“第11题”文件夹中)打开proj11.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

inti,n;

floata,b,s,t;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%d",&n);

s=0;

a=2;

b=1;

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

s=s+a/b;

t=b;

b=a;

a=a+t;

}

printf("%.2f\n",s);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(12)求a+aa+aaa+aa…a之和。

程序功能:

从键盘上输入一个正整数repeat(0

输入2个正整数a和n,输出a+aa+aaa+aa…a(n个a)之和。

(注:

程序文件保存在“第12题”文件夹中)打开proj12.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

voidmain()

{

intri,repeat;

inti,n;

longinta,sn,tn;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++)

{

scanf("%ld%d",&a,&n);

sn=0;

tn=0;

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

tn=10*tn+a;

sn=sn+tn;

}

printf("%ld\n",sn);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(13)判断素数。

程序功能:

从键盘上输入一个正整数repeat(0

输入一个正整数m,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。

(注:

程序文件保存在“第13题”文件夹中)打开proj13.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(14)统计字符。

程序功能:

从键盘上输入一个正整数repeat(0

输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。

(注:

程序文件保存在“第14题”文件夹中)打开proj14.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

intmain()

{

intri,repeat;

intblank,digit,letter,other;

charc;

scanf("%d",&repeat);

getchar();

for(ri=1;ri<=repeat;ri++)

{

c=getchar();

blank=0;

digit=0;

letter=0;

other=0;

while((c=getchar())!

='\n'){

if(c>='a'&&c<='z'||c<='Z'&&c>='A')

blank++;

elseif(c=='')

digit++;

elseif(c>='0'&&c<='9')

letter++;

else

other++;

}

printf("letter=%d,blank=%d,digit=%d,other=%d\n",letter,blank,digit,other);

}

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(15)【水平考试题】程序文件保存在“第15题(水平考试题)”文件夹中,打开proj15.cpp,编程实现,任输入一个正整数num,求1+2+3+…+num的和。

在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(16)【水平考试题】程序文件保存在“第16题(水平考试题)”文件夹中,打开proj16.cpp,编程实现输入一个长整数,求各位数字的平方和。

例如输入-123,输出sum=14。

在两条星线之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

#include

voidmain()

{

intdigit;

longin,s;

cout<<"请输入一个长整数:

";

cin>>in;

if(in<0)

in=-in;

s=0;

while(in>0)

{

digit=in%10;

s=s+digit*digit;

in=in/10;

}

cout<<"sum="<

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(17)【水平考试题】程序文件保存在“第17题(水平考试题)”文件夹中,打开proj17.cpp,程序的功能是计算1~100以内所有含5的数之和。

删除程序代码里面的下划线并补充相应的代码。

(注意:

不得改动其它代码,不得增、删行,不得更改程序结构。

①调试正确的源程序清单

#include

voidmain()

{

inti,s=0;

for(i=1;i<=100;i++)

if((i/10==5)||(i%10==5))//删除下划线并填入答案

s=s+i;

cout<<"Thsresultis"<

}

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

题目(18)【水平考试题】程序文件保存在“第18题(水平考试题)”文件夹中,打开proj18.cpp,程序的功能是计算某数组中前n个数组元素的乘积。

删除程序代码里面的下划线并补充相应的代码。

(注意:

不得改动其它代码,不得增、删行,不得更改程序结构。

①调试正确的源程序清单

②运行结果:

(提示:

通过屏幕截图,贴粘程序运行界面)。

三.【实验总结】

本次实验,涵盖的知识点很多,而且很全面,与课本内容联系紧密。

通过实验,通过自己动手操作,让我发现了不少细节问题,对循环结构程序有了更深刻的认识,特别是对while语句的运用和其与for语句的同异点。

不过自己对C语言程序设计的一些常识认识还是不全面,还有一些规定也认识不足,导致在这一方面有时很迷惘。

同时,自己对于cout、cin的运用不熟悉。

以后自己会多花点时间在这些方面上。

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2