oj题目+小结

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2008


一开始错误代码:

问题及修改:

1.最开始的时候就犯了一个很低级的错误,想要运用双层循环,却又将循环变量定义为同     一个量,但其实这道题不需要用到双层循环,因此就是要把内循环给删掉;

2.对输入数据的定义错误,没看清楚题目要求,误定义为int型,应该要改为float型;

3.对计数的定义问题,==与=的区别;还有逗号运算符的用法。

如果只是修改了1、2,而没有修改3,则代码会出现以下结果:

全修改后的正确代码:

#include "stdio.h"void main()

{    int m,i,count1,count2,count3;    float a[100];    while(scanf("%d",&m)!=EOF)

    {        count1=0;count2=0;count3=0;        if(m==0||m>=100) break;        for(i=0;i<m;i++)

          {scanf("%f",&a[i]);              if (a[i]==0)

            {                count1++;

            } 

            else if (a[i]>0)

            {                count2++;

            }              else if (a[i]<0)

              {                count3++;

              }

          }        printf("%d %d %d\n",count3,count1,count2);

    }

}


笔记:要去理解双层循环的用法;要熟悉基本运算符的用法以及格式的规范性。


题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2009


这个题目不难,但是在做的过程中遇到了一个很碰巧的现象


答案大了是因为我改代码的时候把外面的赋值了,却忘记把里面的循环减一了,除掉这个来说答案可以说是正确的

但是!!这个答案是碰巧对的,因为我的代码那里定义成了int型,输入其他的数据其实就是错误的答案,那这个碰巧在哪里呢,我的个人是觉得就在于81的每次平方根后都是整数,在询问组长之后得到较为官方的解释就是n最后参与计算的数值是3,sqrt(3)会自动转化为double型,所以对计算结果没有影响。

sqrt是一个包含在math里面的函数,他的返回值是double型。虽然他引用的参数不一定是doule型,但是并不会影响他的返回值类型

小结:经常做题除了在大一些的方面会出问题,小问题也是经常出,所以我需要强化基础  知识,上面一个简单的题目出了小问题也能牵扯出一些知识,虽然不太理解,但是先记住也是好的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容