有用的小工具收藏(1)

<1>可以用来消除运算后数组里最前边数的所有0

// <1>可以用来消除运算后数组里最前边数的所有0
while(!sum[i])
     i--;



<2>%*c用来吸收字符串结束后的'\t'

///<2>%*c用来吸收字符串结束后的'\t'
scanf("%s%*c", str);



<3>大数加法精简版核心
///<3>大数加法精简版核心
    int len = strlen(num);
    for(int i = 0; i < len; ++i)
    {
        sum[i] += num[len - 1 - i] - '0';
        if(sum[i] > 9)
        {
            sum[i] %= 10;              
            sum[i+1]++;
        }
    }


<4>sort函数(STL)

简单来说,有一个数组int a[100],要对从a[0]a[99]的元素进行排序,只要写sort(a,a+100)就行了,默认的排序方式是升序

int a[100];<span style="white-space:pre">	</span>//将数组由小到大排序“1,2,3,4···”
sort(a, a+100);
当然,还可以自己定义游戏规则{ 自己定义cmp函数}
sort(arr,arr+size,cmp);



<5>sizeof求一个对象或者类型所占的内存字节数,

(编译器有很多,但都会保证char、signed char和unsigned)sizeof的计算发生在编译时刻,所以它可以被当作常量表达式使用

memset(arry, 0, sizeof(arry));

同strlen的区别

int len1 = strlen(a);
cout << len1 << endl;
int len2 = sizeof(a);
cout << len2 << endl;

因为定义a[100]; so, sizeof(a) = 100; 而strlen(a) = 实际长度



<6>适用数据类型较广的宏定义

#define SWAP(x,y,t) ((t) = (x), (x) = (y), (y) = (t))

<7>忽略前导0的技巧

for( j = 3000-1; j >= 0; --j)     if(f[j])  break;  ///f[]初始化时,所有元素都为0

<8>大数阶乘精髓

for( i = 2; i <= n; ++i)
        {
            int c = 0;
            for(int j = 0; j < 3000; ++j)
            {
                int s = f[j] * i + c;
                f[j] = s%10;
                c = s/10;
            }
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值