(一)改错题
序列求和:输入一个正实数eps,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精确到最后一项的绝对值小于eps(保留6位小数)。
输入输出样例:
Input eps:1E-4
s = 0.835699
1错误信息:
错误原因:do。。while()少;
改正方法:在while()后加;
2错误信息:
错误原因;item < eps第一次就输出了
改正方法:item>=eps
3错误信息: item = 1/ n
错误原因:没有转化为double
改正方法:item =1.0/n
4错误信息:
错误原因:没有加上最后一项
改正方法:在循环结束后加一句item = 1/ n; s = s + flag * item;
(二)学习总结
1.语句while(1)和for(;;)是什么意思?,如何保证这种循环能正常执行?
前者是无限循环;或者是有限循环;条件合理,循环加大括号
2.一般情况下,设计循环结构时,使用for、while、do while三种语句都可以,并且三种语句可以相互转换,但是,在某些特定情况下,我们应该优先选择某种语句来快速实现循环设计。如果有如下情况:
(1)循环次数已知
while循环
(2)循环次数未知,但循环条件在进入循环时明确
for循环
(3)循环次数未知,且循环条件在进入循环时未知,需要在循环体中明确
do while循环
针对上面三种情况,分别采用什么循环语句实现比较好?对每种情况,用我们完成的两次循环结构作业中的题目加以说明。
for循环
while循环
do while
3.有如下问题:输入一批学生成绩,以-1作为结束,计算学生的平均成绩。
要求分别用for语句、while语句、do while语句三种循环语句实现,并说明你认为哪种形式更合适?
for(;n!= -1;);while(n!= -1);do。。。while(n!= -1);因为不知道循环次数for不能选,因为不知道是否第一次是不是-1do。。。while不能选,所以选while
4.运行下面程序,输入1到10,结果分别是什么?为什么?
break是跳出循环;continue是跳出本次循环。
(三)实验总结
本次实验总结,完成循环结构(2)中的1、2、3题。
1(1)题目
计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
(2)流程图
(3)源代码
include <math.h>
int main()
{
int i = 1;
double sum = 0.0,eps = 0.0;
scanf("%lf",&eps);
while(fabs(1.0/i) > eps)
{
sum = sum+1.0/i;
i = pow(-1,i)*(fabs(i)+3);
}
sum = sum+1.0/i;
printf("sum = %.6f",sum);
return 0;
}
(4)实验分析:忘记加最后的数
(5)pta提交
2(1)题目
数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
(2)流程图
(3)源代码
include<stdio.h>
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int num;
int s=0;
while(scanf("%d",&num)!=EOF)
{
s=s+1;
if(s>n||num<0)
{
printf("Game Over\n");
break;
}
else
{
if(num>m)printf("Too big\n");
else if(num<m)printf("Too small\n");
else if(numm&&s1)
{
printf("Bingo!\n");
break;
}
else if(num==m&&s<=3)
{
printf("Lucky You!\n");
break;
}
else
{
printf("Good Guess!\n");
break;
}
}
}
return 0;
}
(4)实验分析:循环和选择嵌套滚乱大括号不全
(5)pta提交
3(1)题目
本题要求计算给定的一系列正整数中奇数的和。
(2)流程图
(3)源代码
include <stdio.h>
int main()
{
int x,sum = 0;
do
{
scanf("%d",&x);
if(x%2)
{
sum = sum + x;
}
}while(x > 0);
x = -x;
if(x%2)
{
sum = sum + x;
printf("%d",sum);
}
else
{
sum = sum;
printf("%d",sum);
}
return 0;
}
(4)实验分析:无
(5)pta提交
(四)博客互评
每个同学至少评论三篇其他同学的博客作业,依次列出你所评论的博客地址。对于同学对你的博客作业提出的问题,应积极进行回答,存在的错误应及时改正。希望大家能够在互评的过程中取长补短,共同进步。
|
请发表评论