c语言第六次作业

时间:2022-01-05 22:01:16

(一)改错题
1、错误信息:c语言第六次作业
错误原因:do while的形式错了
改正方法:while( item < eps)后加上分号 。
2、错误信息:c语言第六次作业
错误原因:最后一项的绝对值小于eps结束,要想要循环进行应该>=eps
改正方法:把item < eps改成item>=eps.
3、错误信息:c语言第六次作业
错误原因:item定义得是double类型
改正方法:把1改成1.0
4、错误信息:c语言第六次作业
错误原因:item定义得是double类型
改正方法:输入把%f改成%lf.
(二)学习总结
1.while(1)和for(;;)是无限循环,用break.
2.(1)循环次数已知,用for语句。
c语言第六次作业
(2)循环次数未知,但循环条件在进入循环时明确,用while语句。
c语言第六次作业
(3)循环次数未知,且循环条件在进入循环时未知,需要在循环体中明确,用do while语句。
c语言第六次作业
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)c语言第六次作业
break是不符合条件,直接跳出循环
(2)c语言第六次作业
continue是不符合条件,结束本次循环。
(三)实验总结

  1. 求给定精度的简单交错序列部分和
    (1)题目
    本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
    (2)流程图
    c语言第六次作业
    c语言第六次作业
    (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提交列表
c语言第六次作业

  1. 猜数字游戏
    (1)题目
    猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
    (2)流程图
    c语言第六次作业
    c语言第六次作业
    (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提交列表
c语言第六次作业

  1. 求奇数和
    (1)题目
    本题要求计算给定的一系列正整数中奇数的和
    (2)流程图
    c语言第六次作业
    (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提交列表
    c语言第六次作业
    (四)博客互评
    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