一、有1234四个数字组成三位数,互不相同还无重复,都有哪些?
**编程思路:**三位数字,分别是个位,十位,百位;
取值(X=1,X<5);
个位不等于十位和百位,同理十位,同理百位(X!=Y&&X!=Z&&Y!=Z);
可构成三重for循环;
#include <stdio.h>
int main()
{
int X,Y,Z;//定义三个变量;
printf("\n");//打印空行;
for(X=1;X<5;X++)
{
for(Y=1;Y<5;Y++)
{
for(Z=1;Z<5;Z++)
{
if(X!=Y&&X!=Z&&Y!=Z)
{
printf("\r\n%d,%d,%d\r\n",X,Y,Z);
}
}
}
}
}
当然,上面的方法已经能够解决问题了,但在实际的应用当中,要想我们的程序跑的轻松,我们就要想办法去优化它,给它吧不必要的包袱去掉。
#include <stdio.h>
#include <stdint.h>//添加头文件,不然uintX_t会编译错误
/*
Google C++编程规范的P25页有如下叙述:
按照posix标准,一般整型对应的*_t类型为:
1字节 uint8_t
2字节 uint16_t
4字节 uint32_t
8字节 uint64_t
*/
int main()
{
uint32_t X;//百位
uint32_t Y;//十位
uint32_t Z;//个位
for(X=1;X<5;X++)
{
for(Y=1;Y<5;Y++)
{
if(Y==X)
{
continue;//十位等于百位的话跳过这个十位
}
for(Z=1;Z<5;Z++)
{
if(Z==Y || Z==X)
{
continue;个位等于十位,或者等于百位,跳过这个个位
}
printf("%d,%d,%d",X,Y,Z);
}
}
}
}
每天一练,坚持不懈,少侠带你进入C语言的世界修炼!