常见错误总结

本文主要是对自己的一些常用但模糊的知识点和常犯错误总结,这些错误很简单但比较容易忽略,在解题或比赛时出现这种错误实在不值得,只要在用这些东西的时候多考虑一下是否合适就能避免此类问题。


H. 对于手误不可避免,在写程序多注意,不要要求过快,只要保证写的逻辑和代码不出现问题即可,如果真的出现错误了,不要急,确保一边检查出来,平常写程序时尽量模块化,这样不仅思路清晰而且出现错误方便检查,确定错误区间范围,对于对各种解题方法技巧方面注意的问题在具体题目之中进行提示。


A. memset(str ,’s’, sizeof(str) ) :

  1. 作用:字符串赋值函数,对于[str,str+n)的地址区间内每一字节均赋值为’s’ ;
    2.常见应用: int a[N] : memset( a, 0, sizeof(a)) 对数组清0 ; int head[N] : memset( head , -1 , sizeof(head)) ;
    int dis[N] : memset( dis , 0x3f, sizeof(dis) ) 对数组元素全部初始化为INF: 0x3f3f3f3f 约1e9 (满足无穷+无穷=无穷,无穷+常量=无穷)
    对于未知上界的INF : 0x7fffffff 一般不用(不要用,int型最大值 不满足上述条件) 用它不如写循环初始化
    3.常用于对结构体初始化0(如果结构体中有数组,那么就不适用了);
#include<cstdio>
#include<cstring>
using namespace std;

const int MAXN=10;

struct Node{
    int x;
    int y;
}coo[MAXN];

int main()
{
    Node a; a.x=a.y=1; printf("%d %d\n",a.x,a.y); 
    memset(&a,0,sizeof(struct Node));//不能写成sizeof(&a) 那样就只是a.x的地址区间 
                                    //&a是首地址 sizeof()是地址大小 占多少字节        
    printf("%d %d\n",a.x,a.y);//不过共用体的内存地址是一样的 

    int i=0;
    for(i=0;i<MAXN;++i) coo[i].x=coo[i].y=i;
    memset(coo,0,sizeof(struct Node)*MAXN);//如果用&coo会怎样 &coo就代表数组首元素地址 
    for(i=0;i<MAXN;++i) printf("%d %d\n",coo[i].x,coo[i].y); 
    return 0;
}

详细讲解:http://blog.csdn.net/waitfor_/article/details/8211854
http://www.cnblogs.com/handsomecui/p/4723949.ht1·


B. 浮点型精度问题:

  1. 输出结果是浮点型的可能需要输出 ans+eps (一般用1e-8,对与数据变化范围较大的应该根据题意来具体判断);
  2. 浮点型的数没有绝对的相等 只有近似 如 a -b< eps => a = b , 二分时用过 ;

详细讲解:http://blog.csdn.net/waitfor_/article/details/8035773

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值