經典C語言例題之Linux

#include<stdio.h>

/*
*********************************************
*不使用中間變量,將兩個整數的值交換
*   int a b;
*   a=a+b;
*   b=a-b;
*   a=a-b;
*此答案未考慮到溢出的問題
*********************************************

*int 正數的最大值 2^32-1
*補碼: 正數的補碼是起本身,負數的補碼:絕對值的源碼取反+1
*有符號:最高位是符號位 1:負數   0:正數
*   a=a^b;
*   b=a^b;
*   a=a^b;
*/

int main(int argc ,char *argv[])
{
    int a,b;
    scanf("%d %d",&a,&b);
    a=a+b;
    b=a-b;
    a=a-b;
    printf("%d, %d\n",a,b);

}

這裏寫圖片描述

#include<stdio.h>
#include<math.h>

#define N 100

/*********************************************
*質數/素數:除了1和本身以外不能被別的數所整除
*求1-100以內所有的素數
*********************************************
*/

int main(int argc,int argv[])
{
    int i,j;
    //int count=1;//計數

    for(i=3;i<=N;i=i+2)
    {
        for(j=3;j<=(i/2);j+=2)
        {
            if((i%j) == 0)
            {
                break;
            }
        }
        if(j>=i/2)
            {
                printf("  %d",i);
            }
        //if(i%5==0)
            //printf("\n");
    }
    printf("\n");
}

這裏寫圖片描述

#include<stdio.h>
#include<math.h>

#define N 999

/*
************************************************************
*   求100-999之間的所有水仙花數
*   153=1^3+5^3+3^3
*   某個數=個數的立方+十位的立方+百位的立方
*   重點:求一個3位數的個位 十位 百位
************************************************************
*/


//int  accum(int n);
int  calculate(const int i);

int main(int argc, char  argv[])
{
    //int uint,decade,hundreds;//uint:個位    decade:十位   hundreds:百位
    int count=0,i;

    for( i=100;i<=N;i++)
    {
        int temp=calculate(i);
        if(temp==i)
        {
            printf("%5d",i);
            count++;
        }
        //if(count%5==0)
                //printf("\n");

    }
    printf("\n");
}

/*
*********************************
*       數的累積
*********************************
*/
int  accum(int n)
{
    return n*n*n;
}

/*
*********************************
*       數的個位 十位 百位
*********************************
*/
int  calculate(const int i)
{
    int ones,decade,hundreds;   //ones:個位   decade:十位   hundreds:百位
    ones=i%100%10;  //個位
    decade=i/10%10; //十位
    hundreds=i/100; //百位

    int sum=0;
    sum=ones*ones*ones+decade*decade*decade+hundreds*hundreds*hundreds;
    //return  accum(ones)+accum(decade)+accum(hundreds);
    return sum;

}

這裏寫圖片描述

#include<stdio.h>

/*
**************************************************
*       求1000以內的所有的完數
*       完數=所有的因子的和(不包括本身)
*       6=1+2+3
**************************************************
*/

int main(int argc,char argv[])
{
    int i,j,sum;
    for(i=2;i<=1000;i++)
    {
        sum =0;
        for(j=1;j<i/2+1;j++)
        {
            if(i%j==0)
            {
                sum=sum+j;
            }

        }
        if(sum==i)
        {
            printf("%d  ",i);
        }

    }
    printf("\n");
}

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章