C语言第六次作业

(一).改错题

输入源代码,编译,如图:


发现源代码中输出语句前无分号,改正编译,没有错误,运行如图:

发现结果不同,检查源代码,发现n定义为整型变量,应该改为浮点型,改正后,编译运行:

发现结果还是如图,发现源代码中s应该强制浮点型,并且,item绝对值不能大于eps的值,修改源代码如图:

运行结果如图:

结果正确,不知道为什么老师给的案例多了个6,试了很多遍。

(二).学习总结

1.语句while(1)和for(;;)是什么意思?,如何保证这种循环能正常执行?

答:while(1)是无限循环,1为真;for (表达式1; 表达式2; 表达式3)表达式1在for循环进入前执行;表达式2是for循环的执行条件,如果为空则表示无条件循环,只有break才会退出循环;

表达式3在每次循环结束后执行,

2.一般情况下,设计循环结构时,使用for、while、do while三种语句都可以,并且三种语句可以相互转换,但是,在某些特定情况下,我们应该优先选择某种语句来快速实现循环设计。

(1)循环次数已知

答:这种情况应该用for循环语句,PTA中循环结构(2)第三题可以用这种循环,因为是正整数,且不能对0或负数进行处理,所以,用否循环,若为0或负数则跳出循环,循环次数就得到控制。
(2)循环次数未知,但循环条件在进入循环时明确
答:这种情况应该用while循环,PTA中循环结构(2)第二题可以用这种循环,因为有次数限制,必须在规定的次数内操作,用此循环只要条件允许可以无限循环,得到答案
(3)循环次数未知,且循环条件在进入循环时未知,需要在循环体中明确
答:这种情况应该用do while循环,PTA中循环结构(2)第一题可以用这种循环,因为循环条件不明,所以必须规定且满足条件才能循环,否则,不能进行循环。

3.有如下问题:输入一批学生成绩,以-1作为结束,计算学生的平均成绩。

要求分别用for语句、while语句、do while语句和无限循环四种循环语句实现,并说明你认为哪种形式更合适?

答:(1)for循环:


(2)while循环:

(3)do wile循环:

(4)无限循环:

我认为,用while循环语句好用,相对其他循环语句来说较简单。

4.运行下面程序,输入1到10,结果分别是什么?为什么?

(1).

答:运行结果:
因为在输入2时就已经跳出了循环
(2).
答:运行结果:
因为输入的数和2取余等于零才能继续。

(三).实验总结

1. 求给定精度的简单交错序列部分和

(1)流程图


(2)源代码

#include <stdio.h>
#include <math.h>
int main()
{
    double sum,m,q,eps;
    int x;
    x=1;
    sum=0.0;
    m=1.0;
    scanf("%lf",&eps);
    do
    {
	    q=x/m;
	    m=m+3;
	    x=-x;
	    sum=sum+q;
	    if(fabs(q)<eps)
	    break;
    }
    while(fabs(q)>eps);
    printf("sum = %.6f",sum);
}

(3)实验分析
问题1:没有按要求跳出循环
原因:没有规定最后一位的条件
解决办法:添加条件
(4)本题PTA提交列表

2.猜数字游戏

(1)流程图


(2)源代码

 #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;
		    }
	    }
	
    } 

  }

(3)实验分析
问题1:输出错误
原因:条件过多,漏掉,缺少条件
解决办法:仔细检查,并补全
(4)本题PTA提交列表

3.求奇数和

(1)流程图


(2)源代码

#include <stdio.h>
int main()
{
    int i,x,sum,n;
    sum=0;
    for(i=1;i>0;i++)
    {
	    scanf("%d",&x);
	    if(x>0)
	    {
		    if(x%2!=0)
		    {
			    n=x;
			    sum=sum+n;
		    }
	    }
	    if(x<=0)
	    break;
    }
    printf("%d",sum);
}

(3)实验分析
这题没问题
(4)本题PTA提交列表

(四).博客互评

风离你在 博客地址:http://www.cnblogs.com/GX201701-/p/7828562.html

李晓晓 博客地址:http://www.cnblogs.com/Reloaded/p/7825734.html
郭展旭 博客地址:http://www.cnblogs.com/1234569ss/p/7824423.html

posted @ 2017-11-13 23:42  郭玉霖  阅读(492)  评论(4编辑  收藏  举报