zoukankan      html  css  js  c++  java
  • 一些简单的C语言算法

    1.

    要求输入一个正整数,打印下述图形

    输入:5

    输出:

    *

    **

    ***

    ****

    *****

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int num,i,j;

        scanf("%d",&num);

        for(i=1;i<=num;i++)

        {

            for(j=1;j<i+1;j++)

            {

                printf("*");

            }

            printf(" ");

        }

        return 0;

    }

    2.

    要求输入一个正整数,打印下述图形

    输入:5

    输出:

              *

            **

          ***

        ****

      *****

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int num,i,j,k;

        scanf("%d",&num);

        for(i=1;i<=num;i++)

        {

            for(j=1;j<=num-i;j++)

            {

                printf(" ");

            }

            for(k=1;k<i+1;k++)

            {

                printf("*");

            }

            printf(" ");

        }

        return 0;

    }

    3.

    要求输入一个正整数,打印下述图形

    输入:5

    输出:

            *

          ***

        *****

      *******

    *********

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int num,i,j,k,l;

        scanf("%d",&num);

        for(i=1;i<=num;i++)

        {

            for(j=1;j<=num-i;j++)

            {

                printf(" ");

            }

            for(k=1;k<i*2-1+1;k++)

            {

                printf("*");

            }

            for(l=1;l<=num-i;l++)

            {

                printf(" ");

            }

            printf(" ");

        }

        return 0;

    }

    4.

    要求输入一个正整数,打印下述图形

    输入:5

    输出:

                ABBBB

             AABBB

          AAABB

       AAAAB

    AAAAA

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int num,i,j,k,l;

        scanf("%d",&num);

        for(i=1;i<=num;i++)

        {

            for(j=1;j<=num-i;j++)

            {

                printf(" ");

            }

            for(k=1;k<i+1;k++)

            {

                printf("A");

            }

            for(l=1;l<=num-i;l++)

            {

                printf("B");

            }

            printf(" ");

        }

        return 0;

    }

    5.

    要求输入一个正整数,判断是否是质数(质数也叫素数)

    输入:5

    输出:是素数

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int nu,i;

        scanf("%d",&nu);

        for (i=2; i<nu; i++)

        {

            if(nu%i == 0)

            {

                break;                      //能除尽就说明了不是质数

            }

        }

        if(i == nu )                        //如果等于nu证明是没遇到因数

        {

            printf("是质数");

        }

        else

        {

            printf("不是质数");

        }    

        return 0;

    }

    6.

    要求输入两个正整数,求两个数的最大公约数

    //最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个

    输入:6 3

    输出:3

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int i,numA,numB,mix;

        scanf("%d,%d",&numA,&numB);

        mix=(numA<numb)?numA:numB;

        for (i=mix; i>=1; i--)                 

        {

            if (numA%i == 0 && numB%i == 0)

            {

                break;

            }

        }

        printf(“%d”,i);//得到i结果就是最大公约数

        return 0;

    }

    7.

    要求输入两个正整数,求两个数的最小公倍数

    输入:6 3

    输出:6

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int numa,numb,max;

        scanf("%d,%d",&numa,&numb);

        max=(numa<numb)?numa:numb;

        while(1)                 //找出最小的刚能整除两个数的数就是最小公倍数

        {

            if (max%numa == 0 && max%numb == 0)

            {

                break;

            }

            max++;

        }

        printf("%d",max);

        return 0;

    }

    8.

    要求输入一个正整数,分解质因数

    分解质因素:将一个合数分解成为几个质数的乘积。

    输入:8

    输出:2 2 2 

    注:8=2*2*2

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int nu;

        scanf("%d",&nu);

        for (int i=2; i<=nu; i++) {

            if (nu%i == 0) { //用找出最小的因数(i)

                printf("%d ",i);

                nu/=i; //得到

                i--;

            }

        }  

        return 0;

    }

    9.

    要求输入两个正整数n,a,如果n==3, a == 2;

    输出 2 + 22 + 222 的值。(不用输出式子)

    m=5,n=a

    3+33+333+3333+33333

    10*3+3

    10*33+3

    ret=10*ret+a

    sum=sum+ret

    输入:3

    输出:246

    注:246=2+22+222

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int m,a;

        scanf("%d %d",&m,&a);

        

        int sum=0;

        int ret=0;

        

        for (int i=1; i<=m; i++)

        {

            ret=10*ret+a;               //ret为当前的值,如3,33,333,3333

            sum=sum+ret;

        }

        printf("%d ",sum);

        return 0;

    }

    10.

    五位数中,对称的数称为回文数,找出10000到99999所有的回文数。

    如12321

    注:运行你就可以看到效果

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        // insert code here...

        for (int i=10000; i<=99999; i++)

        {

            int bita,bitb,bitc,bitd;

            //12345 % 10=5

            bita=i%10;

            //12345/10=1234 1234%10=4

            bitb=i/10%10;

            //12345/1000=123 12%10=2

            bitc=i/1000%10;

            //12345/10000=1 1%10=1

            bitd=i/10000%10;

            if (bita==bitd && bitb==bitc)

            {

                printf("%d ",i);

            }

        }

        return 0;

    }

    11.

    输入任意多个整数,最后一个数是0,输出这些数中最大的数。

    思想:每次输入一个数,进行比较,每次保存当前最大数。

    输入:5 4 3 9 0

    输出:最大值为:9

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int nu,max;

        scanf("%d",&nu);

        max=nu;             //暂定第一个数为最大值,很好的思想

        while (1)

        {

            scanf("%d",&nu);

            if (nu == 0)

            {

                break;

            }

            if (max < nu)

            {

                max=nu;

            }

        }

        printf("最大值为:%d",max);

        return 0;

    }

    12.

    要求输入一个正整数,求这个数的阶乘。

    输入:3

    输出:6

    注:6=1*2*3

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        int num1,i,sum=1;

        scanf("%d",&num1);

        for(i=1;i<=num1;i++)

        {

            sum*=i;

        }

        printf("%d ",sum);

        return 0;

    }

    13.

    要求输入一个(int 范围内)整形数字,逆序输出10进制. 

    输入:84521

    输出:12458

    实现代码如下:

    #include <stdio.h>

    int main(int argc, const char * argv[]) {

        

        int num1,i=0,shu[64],j;

        scanf("%d",&num1);

        //把这个数的每一位都拿出来,拿完后刚好把顺序排好了

        while(1)

        {

            shu[i]=num1%10;

            num1=num1/10;

            i++;

            if(num1 == 0)

            {

                break;

            }

        }

        //把摆好顺序的数的每一位都打印出来

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

        {

            printf("%d",shu[j]);

        }

        printf(" ");

        return 0;

    }

  • 相关阅读:
    python json 和 pickle的补充 hashlib configparser logging
    go 流程语句 if goto for swich
    go array slice map make new操作
    go 基础
    块级元素 行内元素 空元素
    咽炎就医用药(慢性肥厚性咽炎)
    春季感冒是风寒还是风热(转的文章)
    秋季感冒 咳嗽 怎么选药
    解决IE浏览器“无法显示此网页”的问题
    常用的 css 样式 记录
  • 原文地址:https://www.cnblogs.com/xiao-c-2016/p/5900479.html
Copyright © 2011-2022 走看看