有1,2,3,4个数字,能组成多少个互不相同无重复的三位数?都是多少?
求代码、解释、思路。 count = 0for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if i!=j and i!=k and j!=k:
print(i*100+j*10+k)
count +=1
print("一共%d个数"%count) #include <stdio.h>
int main(void)
{
int d , e , i , j , k ;
for(e = 0 , i = 1 ; i < 5 ; i ++) {
for(j = 1 ; j < 5 ; j ++) {
for(k = 1 ; k < 5 ; k ++) {
if(i != j && k != i && k != j) {
d = i * 100 + j * 10 + k ;
if(e) printf("\t") ;
printf("%d" , d) ;
e ++ ;
}
}
}
}
}
编译、运行实况
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
123 124 132 134 142 143 213 214 231 234
241 243 312 314 321 324 341 342 412 413
421 423 431 432
D:\00.Excise\C> 本帖最后由 昨非 于 2020-12-5 22:47 编辑
解释:
count用于计数
由4个数组成,所以依次遍历1到4,
拼成三位数,所以三层循环
三位数各不相同,所以加了if判断条件
输出时再将各位数字拼到一起,并计数加一
测试结果
123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432
一共24个数 今天的帖子没有回答够,我也来凑个热闹。一会将程序发过来 思路看注释
// 有1,2,3,4个数字,能组成多少个互不相同无重复的三位数?都是多少?
#include<stdio.h>
int main()
{
int i, j, k, m, count = 0;
for (i = 1;i <= 4;i++) // i 百位上的取值
{
for (j = 1;j <= 4;j++) // i 十位上的取值
{
for (k = 1;k <= 4;k++) // k 个位上的取值
{
if (i != j && j != k && k != i)// 确保 i、j、k 不重复
{
m = 100 * i + 10 * j + k; // 进一步限制 i、j、k 在其应该在的位置上
printf("%d ", m); // 输出组成的三位数
count += 1; // 统计有多少个三位数
}
}
}
}
printf("\n");
printf("如上输出,能组成 %d 个无重复的三位数", count);
printf("\n");
}
#include<stdio.h>
int main() {
int i=1, j=1, k=1;
for (i = 1; i <= 4 ; i++) {
for (j = 1; j <= 4 ; j++) {
for (k = 1; k <= 4 ; k++) {
if (i != j && i != k && j != k) {
printf("%d,%d,%d\n", i, j, k);
}
}
}
}
}
就是一个嵌套for 的嵌套。
页:
[1]