TZOJ常见但不容易察觉的一些问题

1.调用的函数的返回值类型不清楚

   常见的两类数值计算的函数

1.   C语言 pow() 函数用来求 x 的 y 次方的值。    头文件:math.h

      语法/原型  ==>double pow(double x,double y);    实参是int 类型也可以,它会被强制转换的

参数说明:

  • x:双精度数。
  • y:双精度数。

举个简单的例子    求2^3次方 并打印在屏幕上

           关键的语句是       printf("%d",pow(2,3));   那么聪明的tz伙伴们看出问题了吗?  这个结果实际上是打印输出了 0                      我们把错误的地方改一下printf("%f",pow(2,3));  此时输出就是我们想要的结果 8 了。

在TZOJ 题库中  常见的有 水仙花数(Narcissistic number) 之类的题目,我遇到的 题目的题号是 1372  《C语言实验》 实验四 循环程序设计 水仙花数 

2.    C语言中 sqrt() 函数用来 计算平方根。   头文件:math.h

       语法/原型为 ==> float sqrt (float),double sqrt (double),double long sqrt(double long)   

           实参是int 类型同样也是可以的,它会被强制转换的    

        在运行时可能会出现的错误,也和上面一样

2.Error answer /Presentation Error 

为什么会把这两个放在一起讲呢?原因很简单,当遇到的题目是需要逻辑判断和数值运算的时候,这两个错误经常是形影不离

1.首先是考虑的不全面,这种就是需要再三检查,自己的逻辑有没有出错,题目给的案例输入输出,不会很全面。往往你以为输入输出正确了,其实还有其他的数值情况你没有考虑,比如 0  ,输入0  输出还是0 的情况。

2.其次还需要注意一下,有些题目会要求输入多组数据,在输出多组数据,输出的数据要各占一行。最后一行输出完后,他可能是不换行的。

3.Runtime Error

Runtime Error: 运行时错误,这个一般是程序在运行期间执行了非法的操作造成的。以下列出常见的两种错误类型:

1.Runtime Error(ARRAY_BOUNDS_EXCEEDED) //数组越界                                                                                                                    这种情况的话就是你的定义的数组范围太小了,题目可能测试用到数组范围是10000,而你以为自己定义9999已经很大了,结果还是白给。

2.Runtime Error(DIVIDE_BY_ZERO) //除零                                                                                                                                                这种情况说实话,我没遇到过,这个就检查除数有没有问题。

4.Time Limit Exceeded

Time Limit Exceeded: 您的程序运行的时间已经超出了这个题目的时间限制。

1.这种的话,常见在根据某个公式,求值。 这种就要避免造成大量冗余循环,和限制循环次数。当题目有具体给出,输出的精度的时候,你可以用个范围 限定一下,  比如 某个值算到 <1e-6  (10^-6) 时候就退出循环。后面算不算都一样,对题目输出的精度没影响就好了。如题目 1477 实验四 循环程序设计 C语言实验题――余弦

2.还有一种就要用到数组的,对于常用要计算的数据,可以放在数组中,后面到数组中找就好了,不用计算,减少运行时间,降低程序复杂度。 如题目 1163 实验5 数组的使用  统计1到N之间数字1的个数

最后想给大家再遇到bug时,找bug的思路,一种是设断点,这个可以百度下 ,另外一种 注释,把一部分注释点,检查另外一部分由没有问题,因为有些时候,程序往往是相关联的,一步错,步步错。两种本质都差不多

✍了这么多不点个赞再走。祝大家在TZOJ 玩的开心    o(* ̄▽ ̄*)ブ

                                                                                                                                                       相关资料由菜鸟BBQ收集并编辑

 

你可能感兴趣的:(C语言)