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  思念诠释你我的距离  阅读(429)  评论(5编辑  收藏  举报