实验05参考答案.docx
- 文档编号:8644082
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:25
- 大小:127.36KB
实验05参考答案.docx
《实验05参考答案.docx》由会员分享,可在线阅读,更多相关《实验05参考答案.docx(25页珍藏版)》请在冰豆网上搜索。
实验05参考答案
实验五循环结构程序设计
班级:
学号:
姓名:
评分:
一.【实验目的】
1、熟练使用for、while和do…while语句实现循环结构程序设计。
2、理解循环条件和循环体,以及for、while和do…while语句的相同及不同之处。
3、熟练掌握break和continue语句的使用。
4、掌握使用“debug”菜单调试程序的方法。
二.【实验内容和步骤】
1、程序调试题
A.目标:
进一步学习掌握程序调试的方法和技巧。
B.内容:
改正程序中的错误,使其实现程序的功能。
(注:
程序文件保存在“调试示例”文件夹中,文件名为error04_1.cpp)
①调试正确的源程序清单
#include
intmain(void)
{
intm,n,j,k;/*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)打开程序proj1.cpp,按以下要求完成操作
(1)请编写程序满足个位数的平方等于其本身的所有数,程序的运行结果是:
1、25、36。
(2)请按注释的要求在程序的“——”处填入适当的内容,并去掉程序中的“——”,使程序能正确运行,并保存文件。
①调试正确的源程序清单
#include
intmain(void)
{
inti,g;
for(i=1;i<100;i++)//#1程序满足个位数的平方等于其本身的所有数
{
g=i%10;//#2求取每个数的个位数,并放入g中
if(g*g==i)//#3判断个位数的平方是否等于其本身
printf("%d",i);
}
}
②运行结果:
(提示:
通过屏幕截图,贴粘程序运行界面)。
题目
(2)求n!
。
程序功能:
从键盘上输入一个正整数repeat(0 读入1个正整数n(n<=50),计算并输出n! 。 (注: 程序文件保存在“第2题”文件夹中)打开proj2.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //读入1个正整数n(n<=50),计算n! //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include intmain() { intri,repeat; inti,n; doublefact; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d",&n); //请在两条星线之间填入相应的代码,计算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文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //读入1个正实数x和1个正整数n(n<=50),计算x的n次幂(保留2位小数)。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include intmain() { intri,repeat; inti,n; doublex,mypow; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%lf%d",&x,&n); //请在两条星线之间填入相应的代码,计算x的n次幂(要求使用循环结构) /*************************************************************/ mypow=1; for(i=1;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文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //读入1个正整数n(n<=100),计算1-1/2+1/3-1/4+...的前n项和(保留3位小数) //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include intmain() { intri,repeat; inti,n,flag; floatsum; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d",&n); //请在两条星线之间填入相应的代码,计算1-1/2+1/3-1/4+...的前n项和(保留3位小数) //(要求使用循环结构) /********************************************************************************/ sum=0; for(i=1;i<=n;i++){ flag=i; if(i%2==0) flag=-flag; sum=sum+1.0/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文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //读入1个正整数n(n<=100),计算1+1/3+1/5+1/7+...的前n项和(保留3位小数) //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include intmain() { intri,repeat; inti,n,temp; floatsum; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d",&n); //请在两条星线之间填入相应的代码,计算1+1/3+1/5+1/7+...的前n项和(保留3位小数) //(要求使用循环结构) /********************************************************************************/ for(sum=0,i=1;i<=n;i++){ temp=2*i-1; sum=sum+1.0/temp; } /********************************************************************************/ 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文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //读入1个正实数eps,计算1-1/3+1/5-1/7+...的前n项和,直到最后一项 //的绝对值小于eps(保留6位小数)。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include #include intmain() { intri,repeat; inttemp,flag; doubleeps,item,sum; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%le",&eps); //请在两条星线之间填入相应的代码,计算1-1/3+1/5-1/7+...的前n项和,直到最后 //一项的绝对值小于eps(保留6位小数)。 (要求使用循环结构) /***************************************************************************/ item=1.0; flag=1; sum=0; for(temp=1;fabs(item)>=eps;temp+=2){ item=flag*(1.0/temp); sum=sum+item; 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文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //输入2个整数begin和end,分别代表摄氏温度的起止值,输出该范围内(步长为1) //摄氏温度C和华氏温度F的转换表。 //转换计算公式: F=32+C*9/5 //输出语句: printf("%d%10.2f\n",c,f); //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #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"); //请在两条星线之间填入相应的代码,输出begin到end范围内(步长为1)摄氏温度C和华氏温度F的转换表。 //转换计算公式: F=32+C*9/5,输出语句: printf("%d%10.2f\n",c,f);(要求使用循环结构) /**********************************************************************/ for(c=begin;c<=end;c++){ f=32+c*9.0/5; printf("%d%10.2f\n",c,f); } /********************************************************************/ } } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(8)求奇数和。 程序功能: 从键盘上输入一个正整数repeat(0 读入一批正整数(以零或负数为结束标志),求其中的奇数和。 (注: 程序文件保存在“第8题”文件夹中)打开proj8.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //读入一批正整数(以零或负数为结束标志),求其中的奇数和。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #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! =0) sum=sum+x; scanf("%d",&x); } /************************************************************************/ printf("%d\n",sum); } } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(9)求最大值和最小值。 程序功能: 从键盘上输入一个正整数repeat(0 输入一个正整数n,再输入n个整数,输出这n个整数中的最大值、最小值、累加和与平均值。 (注: 程序文件保存在“第9题”文件夹中)打开proj9.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //输入一个正整数n,再输入n个整数,输出这n个整数中的最大值、最小值、累加和与平均值。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include intmain() { intri,repeat; inti,max,min,n,x; doublesum,avg; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d",&n); //请在两条星线之间填入相应的代码,输入n个整数,求这n个整数中的最大值、最小值、累加和与平均值。 //(要求使用循环结构) /***************************************************************************/ scanf("%d",&x); sum=min=max=x; for(i=2;i<=n;i++){ scanf("%d",&x); sum=sum+x; if(x>max) max=x; if(x min=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文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //输入一个整数,输出它的位数以及各位数之和。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include intmain() { intri,repeat; intnumber,sum; longintin; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%ld",&in); //请在两条星线之间填入相应的代码,求整型变量in中的整数的位数以及各位数之和。 //(要求使用循环结构) /************************************************************************/ number=0; sum=0; while(in! =0){ number++; sum=sum+in%10; in=in/10; } /************************************************************************/ 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文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //计算并输出表达式: 2/1+3/2+5/3+8/5+...的前n项之和,保留2位小数。 //注意: 该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include intmain() { intri,repeat; inti,n; floata,b,s,t; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d",&n); //请在两条星线之间填入相应的代码,计算表达式: 2/1+3/2+5/3+8/5+...的前n项之和。 //(要求使用循环结构) /***************************************************************************/ s=0; for(a=2,b=1,i=1;i<=n;i++){ s=s+a/b; t=b; b=a; a=t+b; } /***************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 05 参考答案