c语言第六次作业

(一)改错题
1、错误信息:
错误原因:do while的形式错了
改正方法:while( item < eps)后加上分号 。
2、错误信息:
错误原因:最后一项的绝对值小于eps结束,要想要循环进行应该>=eps
改正方法:把item < eps改成item>=eps.
3、错误信息:
错误原因:item定义得是double类型
改正方法:把1改成1.0
4、错误信息:
错误原因:item定义得是double类型
改正方法:输入把%f改成%lf.
(二)学习总结
1.while(1)和for(;;)是无限循环,用break.
2.(1)循环次数已知,用for语句。

(2)循环次数未知,但循环条件在进入循环时明确,用while语句。

(3)循环次数未知,且循环条件在进入循环时未知,需要在循环体中明确,用do while语句。

3.(1)for语句

include <stdio.h>

int main(void)
{
int n,i,sum;
double average;
sum=0;
i=1;
scanf("%d",&n);
for(; 😉
{
if(n!=-1)
{
sum=sum+n;
i++;
}
else
{
break;
}
scanf("%d",&n);
}
average=(double)sum/i;
printf("%f",average);
return 0;
}

(2)while语句

include <stdio.h>

int main(void)
{
int n,i,sum;
double average;
n=0;
sum=0;
i=0;
while(n!=-1)
{
scanf("%d",&n);
sum=sum+n;
i++;
}
average=(double)sum/i;
printf("%f",average);
return 0;
}

(3)do while语句

include <stdio.h>

int main(void)
{
int n,sum,i;
double average ;
sum=0;
i=1;
scanf("%d",&n);
do
{
sum=sum+n;
i++;
scanf("%d",&n);
}while(n!=-1);
average=(double)sum/i;
printf("%f",average);
return 0;
}

4.(1)
break是不符合条件,直接跳出循环
(2)
continue是不符合条件,结束本次循环。
(三)实验总结

  1. 求给定精度的简单交错序列部分和
    (1)题目
    本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
    (2)流程图


    (3)源代码

    include <stdio.h>

    include <math.h>

    int main(void)
    {
    int n;
    double eps,sum,b,c;
    scanf("%lf",&eps);
    n=1;
    sum=0;
    c=1;
    if(c<=eps)
    {
    sum=1;
    }
    else
    {
    while(fabs(c)>eps)
    {
    b=3.0n-2;
    c=1.0/b
    pow(-1,n-1);
    sum=sum+c;
    n++;

    }
    }

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

    }

(4)实验分析
问题1:运行不对
原因:用eps于eps相比较 了
解决办法:重新定义一个量与eps比较。
(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 i,n,a,N;
scanf("%d",&i);
scanf("%d",&N);
while(n<=N)
{
scanf("%d",&a);
n=n+1;
if(a<0)
{
printf("Game Over\n");
break;
}
if(i>a)
{
printf("Too small\n");

}
else if(i<a)
{
printf("Too big\n");

}
else
{

if(n==1)
{
printf("Bingo!\n");
break;
}
else if(n>1&&n<=3)
{
printf("Lucky You!\n");
break;
}
else if(n>3&&n<=N)
{
printf("Good Guess!\n");
break;
}
else
{
printf("Game Over\n");
break;
}
}

}
return 0;
}

(4)实验分析
问题1:编译错误
原因:第一个else 就是a=b的意思,我在里面判断的时候又写了一遍a=b.
解决办法:把b=a去掉
(5)本题PTA提交列表

3. 求奇数和
(1)题目
本题要求计算给定的一系列正整数中奇数的和
(2)流程图

(3)源代码

include <stdio.h>

int main(void)
{
int a,sum;
sum=0;
scanf("%d",&a);
do
{

if(a<0)
{
break;
}
else if(a%2!=0)
{
sum=sum+a;

}
scanf("%d",&a);

}
while(a>0);
printf("%d",sum);
return 0;
}
(4)实验分析
问题1:编译错误
原因:while(a>0)后面应该有分号
解决办法:while(a>0);
(5)本题PTA提交列表

(四)博客互评
1,姚纪远:http://www.cnblogs.com/yjy751522356/p/7838296.html
2.王映丹:http://www.cnblogs.com/windsky-1999/p/7838107.html
3.卢玉:http://www.cnblogs.com/luyu0322-/p/7846404.html

posted @ 2017-11-18 22:32  思念诠释你我的距离  阅读(475)  评论(5)    收藏  举报