C语言学习100列之001
本帖最后由 流光 于 2021-11-30 10:40 编辑【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
掉不满足条件的排列。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++) /*以下为三重循环*/
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
printf("%d,%d,%d\n",i,j,k);
}
getch();
}
自写代码:
#include <stdio.h>
int fun(int c) {
switch (c)
{
case 1:
return 1;
case 2:
return 1;
case 3:
return 1;
case 4:
return 1;
default:
return 0;
}
}
int main() {
int sum = 0; //统计合规次数
for (int i = 100; i < 1000; i++)
{
//获取三个位数的值
int i001 = i % 10;
int i010 = i % 100 / 10;
int i100 = i / 100;
//写函数对比
if (fun(i001) == 1 && fun(i010) == 1 && fun(i100) == 1 && i001 != i010 && i010 != i100 && i100 != i001)
{
printf("一共找到%d个数,%d\n", sum, i);
sum++;
}
}
return 0;
}
本帖最后由 qqcs6 于 2021-11-29 23:12 编辑
你这自写的代码不对吧。。。{:1_896:}
333满足你写的条件。。。但是这仨都是重复数字。。。 正好我也在复习C语言 学习一下 从001开始学起。 厉害啊,大老弟 好学吗?膜拜大神
话说这个适合新手学吗?只学过基础C++还快忘光了的那种 学一学,增长知识