经典C语言例题之Linux

来源:互联网 发布:北京大数据培训班 编辑:程序博客网 时间:2024/06/05 22:48
#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");}

这里写图片描述

原创粉丝点击