C语言编程题(1)

目录

前言

一、题目

二、分析

三、代码实现

四、总结


前言

记录一些自己学习C语言的题目,好让自己以后复习,回顾。

一、题目

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

二、分析

1. 先考虑如何使用代码实现1,2,3,4组成三位数。

假设x代表百位,y代表十位,z代表个位,则可使用三层for循环可实现xyz组成三位数。示例如下,

for(x = 1;x < 5;x++)
{
    for (y = 1;y < 5;y++)
    {
        for (z = 1;z < 5;z++)
        {
            printf("%d,%d,%d\n",x,y,z);
        }
    }
}

这便实现了1-4组成了三位数了

2.再来考虑互不相同,且无重复

要实现这个,也很简单。即满足x != y 且y!= z 且x!= z即可。

三、代码实现

完整代码如下:

#include <stdio.h>

int main(void)
{
    int x,y,z;
    int count = 0;;
    for(x = 1;x < 5;x++)
    {
     for (y = 1;y < 5;y++)
     {
        for (z = 1;z < 5;z++)
        {
            if ((x != y) && (y != z) && (x != z))
            {
                printf("%d %d %d\n",x,y,z);
                count++;
            }
        }
    }
    }
    printf("count is %d\n",count);
    return 0;
}

输出如下:

1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
count is 24


四、总结

这个题目主要是想到怎么能够组合这三位数和互不相同的条件。

另,分享一个如何把三位数拆成单独的个/十/百位的方法:

假设i = 123,则i / 100 = 1,即是其百位,i%100/10 = 2,即是其十位,i%100%10 = 3,即数其个位。

今天分享到这里,感谢。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值