每天进步一点点 【编程技巧】(不定期更新)

来源:互联网 发布:黑客盗号软件2016 编辑:程序博客网 时间:2024/05/29 16:35

最我们写代码时总会遇到复杂的程序,这些程序写起来思路很简单,但是代码却很多,所以在编程时总有一些技巧。(坚持每天AC 慢慢提高自己的编程能力)


(1).

水仙花数求 百位、十位、个位的方法:


for (i = m; i < n; i++)                                                //m 为数的下限,n为数的上线,用该方法可求某一段区间内的水仙花数。
{
a = i / 100;                                       //a 为这个数的百位;
b = i % 100 / 10;                            // b 为这个数的十位;
c = i % 10;                                       //c  为这个数的个位;
if (i == a*a*a + b*b*b + c*c*c)     
{
printf("%d\n", i);
d++;
        }

}

改进后的代码;

int sum = 0;                
int n;
n = m;
while (n)                                                          //用while循环可以一步一步的算出个位、十位、百位。
{
sum += (n % 10)*(n % 10)*(n % 10);          
n /= 10;
}
return sum == m;


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

(2)

强制转换类型(以1/3=0.3333为例);

方法一:printf("%lf",1.0/3.0);


方法二:int a,b;

float c;

scanf(“%d%d”,&a,&b);

c=(float)a/(float)b;             // a与b本是整形 但是(float)把它强制转换为浮点型;


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

(3)

在早期CPU处理的功能还不够强的时候,求X对于2^n的余数,可能不直接用%来运算。而是换成位运算。 X & (2^N - 1)。
比如求 N 余 8,写成 n & 7。
这样写可读性比较差。而且现在的机器性能提升了,一般的编译器也能自动转换这种优化。所以这种写法现在不推荐。仅做了解(当然如果你想炫耀一番自己的才华,那另当别论)。  


方法1:

for(i=0;i<10;i++)                                                //从键盘输入10个数输出奇数;

{

if(n/2==1)

{

    printf("%d",n);
}

}


方法二:


for(i=0;i<10;i++)   

{

if(n&1)

{

printf("%d",n);
}


}




0 0
原创粉丝点击