c语言枚举编程
本帖最后由 luoluoovo 于 2019-3-17 00:39 编辑今天看了一个求助帖,然后我试着写出来了。题目在最后面。
代码有点乱,学C语言大概有1个月吧,有什么可以改进的大家多给点意见。
思路就是先遍历被除数 (4位数的不重复数字,且不包含0),归到一个数组中。
再从数组中拿出来乘上n。
在它们寻找当中寻找有5位数的不重复数字(不包含0),在和被除数每位进行比较,都不相同则符合条件。
原帖 https://www.52pojie.cn/thread-901040-1-1.html
https://www.52pojie.cn/forum.php?mod=image&aid=1428161&size=300x300&key=e8f779d373ec0b16&nocache=yes&type=贴图错误,请阅读“贴图帮助”。
#include <stdio.h>
void numslist(int c[],long temp) {
int i = 0;
do {
c = temp % 10;
} while (temp = temp / 10);
}
void algorithm(int n,int result[]) {
int x=0;
int list = { 0 }, k = 0;
int a;
int c;
int num = 1234;
long put;
a:while (num <= 9876)
{
numslist(a, num);
num += 1;
for (int i = 0; i < 4; i++)
{
if (a != 0)
{
switch (i)
{
case 0:if (a == a) goto a;
case 1:if (a == a) goto a;
case 2:if (a == a) goto a;
}
}
}
list = num - 1;
}
k = 0;
b:while (list != 0 && n * list <= 98765 && n * list >= 12345)
{
put = n * list;
numslist(c, put);
k++;
for (int i = 0; i < 5; i++)
{
if (c != 0)
{
switch (i)
{
case 0:if (c == c)goto b;
case 1:if (c == c)goto b;
case 2:if (c == c)goto b;
case 3:if (c == c)goto b;
}
}
else
goto b;
}
numslist(a, list);
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 4; j++)
{
if (c == a)
goto b;
}
}
result = put/62;
}
}
intmain() {
int result = {0};
int n;
scanf_s("%d", &n);
algorithm(n, result);
if (result==0)
{
printf("没有找到!");
getchar();
return 0;
}
printf("找到如下:\n");
for (int i=0; i < 10 && result != 0; i++)
{
printf("%d/0%d=%d\n", result*n,result,n);
}
getchar();
getchar();
return 0;
} 刚开始学 goto不推荐使用,鸡肋 hyolyn 发表于 2019-3-17 00:53
goto不推荐使用,鸡肋
好吧,是因为觉得跳出两重循环麻烦。所以写了goto。谢谢指教
页:
[1]