题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?--------拓展输入四个一位整数,输出组成的三位数

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?--------拓展输入四个一位整数,输出组成的三位数,第1张

代码示例如下:

#include 
#include 

int main() 
{
    int p=0;
    int i, j, k;
    for (i = 1; i < 5; i++)
    {
        for (j = 1; j < 5; j++)
        {
            for (k = 1; k < 5; k++)
            {
                if (i != j && i != k && j != k)
                {
                    printf("%d%d%d\n", i, j, k);
                    p++;
                }
            }
        }
    }
    printf("一共有:%d组\n", p);
    return 0;
}

运行结果如下:

(代码升级)拓展输入四个一位整数,输出组成的三位数

代码示例如下:

#include 

int main()
{
    int a[4];
    int i, j, k, p = 0; //这里p要进行初始化
    printf("请输入四个一位数,用空格隔开:");
    printf("\n");
    for (i = 0; i < 4; i++)
        scanf("%d", &a[i]);
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            for (k = 0; k < 4; k++)
            {
                if (i != j && i != k && j != k && a[i] != 0)
                {
                    printf("%d%d%d\n", a[i], a[j], a[k]);
                    p++;
                }
            }
        }
    }
    printf("\n");
    printf("三位数总数为%d", p);
    return 0;
}

运行结果如下:

(进阶版)思考5个整数可以组成多少个三位数,并输出                     n个整数输出三位数 

代码示例如下(5个整数):

#include
int main()
{
    int i, j, k, q;
    for (i = 1; i <= 5; i++)
    {	//使用for四重循环
        for (j = 1; j <= 5; j++)
        {
            for (k = 1; k <= 5; k++)
            {
                for (q = 1; q <= 5; q++)
                {
                    if (i != j & i != k & i != q & j != k & j != q & k != q)
                    {	//进行数字不重复的判断
                        printf("%d%d%d\t", i, j, k, q);	//输出,使用制表符,输出整齐
                    }
                }
            }
            printf("\n");	//在第二个for循环回车,输出整齐
        }
    }
}

运行结果如下:

0-n(n<=9)个整数,输出三位数(指针方法实现)

代码示例如下:

#include
int n, m;
int count = 0;
int arr[3];
int num = 0;
void   free(void* ptr);
void* malloc(size_t size);//C语言malloc()函数:动态分配内存空间
void fun(int arr1[], int n)
{
    if (num == 2)
    {
        for (int i = 0; i < n; i++)
        {
            printf("%-4d", arr[0] * 100 + arr[1] * 10 + arr1[i]);
            count++;
            if (count % 10 == 0)
                printf("\n");
        }
    }
    else
    {
        for (int i = 0; i < n; i++)
        {
            arr[num] = arr1[i];
            int* p = (int*)malloc((n - 1) * sizeof(int));
            int k = 0;
            for (int j = 0; j < n; j++)
            {
                if (j != i)
                    p[k++] = arr1[j];
            }
            num++;
            fun(p, n - 1);
            free(p);
            num--;
        }
    }
}
int main()
{
    while (scanf("%d%d", &n, &m) != EOF)
    {
        if (n < 0 || m <= 0 || m + n>10)
            continue;
        count = 0;
        num = 0;
        int* q = (int*)malloc(n * sizeof(int));
        for (int i = m; i <= n + m - 1; i++)
        {
            q[i - m] = i;
        }
        fun(q, n);
        free(q);
        if (count % 10 != 0)
            printf("\n");
        printf("Total of %d numbers.\n", count);
    }
    return 0;
}

运行结果如下:

编著注:以上对本小题的代码编写的多种方法,欢迎大家收藏借鉴并转发;

               以上代码仅供参考,如有问题欢迎大家在留言区批评指正;

               版权所有,翻印必究,如有雷同纯属巧合,转载请注明出处。

               By CRH380AJ2808 2022.06.08
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/JH13thpig/article/details/125183968
————————————————
(37条消息) c语言实现1到n的累加,1+2+3+.....+n的累加计算,使用不同方法实现,输出格式为1+2+3+....+(n-1)+n_CRH380AJ2808的博客-CSDN博客_c语言1~n累加求和

(37条消息) 排序法 C语言常考的十大排序法 数列、字符的排序_CRH380AJ2808的博客-CSDN博客

(37条消息) 求最大公约数 最大公因数 语言实现输出一个整数的最大公约数(因数),四种算法实现_CRH380AJ2808的博客-CSDN博客_c语言求最大公因数的方法

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1329822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存