C语言面试题目:有四个数字,能组成多少个符合条件的三位数

题目:1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

数学解题思路:

1、三位数,那么就设百位为x,十位为y,个位为z

2、有1、2、3、4四个数字,那么x有可能等于1、2、3或4,y也有可能等于1、2、3或4,z也有可能等于1、2、3或4

3、那么由x、y、z组成的三位数,可能是111、112、113、114、121、122、123、124......等这些组合的数。

4、互不相同,意思就是:x≠y,y≠z,x≠z;无重复数字,意思就是:x≠y且y≠z且x≠z,那么就要排除112、121、211等这类三位数。

程序实现思路:

1、三位数,那么就设百位为x,十位为y,个位为z

int main(void)
{
    /* 百位为x,十位为y,个位为z */
    unsigned short x,y,z;

    return 0;
}

2、有1、2、3、4四个数字,那么x有可能等于1、2、3或4,y也有可能等于1、2、3或4,z也有可能等于1、2、3或4

int main(void)
{
    /* 百位为x,十位为y,个位为z */
    unsigned short x,y,z;

    /* x有可能等于1、2、3或4 */
    for (x = 1; x <= 4; ++x) {
        
    }

    /* y有可能等于1、2、3或4 */
    for (y = 1; y <= 4; ++y) {

    }

    /* z有可能等于1、2、3或4 */
    for (z = 1; z <= 4; ++z) {

    }

    return 0;
}

3、那么由x、y、z组成的三位数,可能是111、112、113、114、121、122、123、124......等这些组合的数。

要组合数字,那么上面的循环就要嵌套起来了。只要区分x是百位,y是十位,z是个位,那么不管x嵌套y,y又嵌套z,还是其它种嵌套都是无所谓的。

int main(void)
{
    /* 百位为x,十位为y,个位为z */
    unsigned short x,y,z;

    /* x有可能等于1、2、3或4 */
    for (x = 1; x <= 4; ++x) {
        /* y有可能等于1、2、3或4 */
        for (y = 1; y <= 4; ++y) {
            /* z有可能等于1、2、3或4 */
            for (z = 1; z <= 4; ++z) {
                /*
                 * 111、112、113、114、121、122、123、124......等这些组合的数
                 * 计算机就没办法像手写直接写成xyz
                 * 需要百位乘以100,十位乘以10,个位乘以1
                 * x * 100 + y * 10 + z *1
                 * */
                x * 100 + y * 10 + z *1;
            }
        }
    }

    return 0;
}

4、互不相同,意思就是:x≠y,y≠z,x≠z;无重复数字,意思就是:x≠y且y≠z且x≠z

要排除互不相同且无重复数字,那就用if判断

int main(void)
{
    /* 百位为x,十位为y,个位为z */
    unsigned short x,y,z;

    /* x有可能等于1、2、3或4 */
    for (x = 1; x <= 4; ++x) {
        /* y有可能等于1、2、3或4 */
        for (y = 1; y <= 4; ++y) {
            /* z有可能等于1、2、3或4 */
            for (z = 1; z <= 4; ++z) {
                /*
                 * 111、112、113、114、121、122、123、124......等这些组合的数
                 * 计算机就没办法像手写直接写成xyz
                 * 需要百位乘以100,十位乘以10,个位乘以1
                 * x * 100 + y * 10 + z *1
                 * */
                // 要排除互不相同且无重复数字,那就用if判断
                if (x != y & x != z & y !=z) {
                    x * 100 + y * 10 + z *1;
                }
                
            }
        }
    }

    return 0;
}

多少个?定义一个变量统计下;都是多少?打印出来。完整C语言代码就如下了

#include 

int main(void)
{
    /* 百位为x,十位为y,个位为z */
    unsigned short x,y,z;

    // 符合条件的三位数有count个,初始值是0
    int count = 0;

    /* x有可能等于1、2、3或4 */
    for (x = 1; x <= 4; ++x) {
        /* y有可能等于1、2、3或4 */
        for (y = 1; y <= 4; ++y) {
            /* z有可能等于1、2、3或4 */
            for (z = 1; z <= 4; ++z) {
                /*
                 * 111、112、113、114、121、122、123、124......等这些组合的数
                 * 计算机就没办法像手写直接写成xyz
                 * 需要百位乘以100,十位乘以10,个位乘以1
                 * x * 100 + y * 10 + z *1
                 * */
                // 要排除互不相同且无重复数字,那就用if判断
                if (x != y & x != z & y !=z) {
                    // 符合条件就累加1
                    ++count;
                    // 符合条件的数值打印出来
                    printf("%d
", x * 100 + y * 10 + z *1);
                }

            }
        }
    }
    printf("符合条件的三位数有%d个
", count);
    return 0;
}

展开阅读全文

页面更新:2024-06-01

标签:位数   数字   组合   嵌套   个位   数值   变量   题目   思路   语言   办法   计算机

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top