题目:有 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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号