【发布时间】:2020-03-12 17:48:25
【问题描述】:
今天老师让我们做一个自定义排序算法,他给了我们一些指令,但是我没能解决: 首先,您从随机生成的数组中获取最小的数字并将其分配给单独的数组。然后你得到数组中第二小的数字,并将它分配给单独数组中的下一个位置。
我能够构建它,但它不能完全工作:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ANZAHL 5
int main() {
srand(time(0));
int zfeld[ANZAHL], zfeld1[ANZAHL] = {}, zfeld2[ANZAHL] = {}, i, d, ug, og, kl = ANZAHL + 1;
printf("Gib die untere und obere grenze an");
scanf("%d%d", &ug, &og);
for (i = 0; i < ANZAHL; i++) {
zfeld[i] = rand() % ((og - ug) - 1) + ug + 1;
}
for (d = 0; d < ANZAHL; d++) {
for (i = 0; i < ANZAHL; i++) {
if (zfeld[i] < kl && zfeld[i] != zfeld2[d - 1]) {
kl = zfeld[i];
}
}
zfeld2[d] = kl;
}
return 0;
}
【问题讨论】:
-
使用调试器单步调试程序或添加一堆调试输出,看看程序在哪里偏离了您的预期。这可能是一个错误。
-
对于小程序,您还可以使用铅笔和纸。假装是电脑。自己运行程序。它对数字进行排序吗?为什么不呢?
-
嗯,我知道程序现在做什么,只是不知道如何让它做我想做的事情。
-
如果你知道它的作用,你知道你想要什么,而这些不同,那么究竟有什么不同呢?您没有告诉我们您知道,您提供的唯一内容是“它不能完全工作”。有了如此精确的问题描述,您只能希望得到同样精确的答案“努力找出答案”。解释更多。提供样本输入。显示输出。显示不同的预期输出。然后仍然描述那个区别是什么。如果您了解程序的作用(如您所说),那么请解释它在何时何地可能涉及的作用。
-
@Yunnosch 的建议中有趣的部分是写下所有“我有这个,我想要这个”的东西,这经常会动摇大脑中的僵局,然后你就会有一个“哦 我太傻了!”片刻。 Rubber Duck Debugging 也有类似的效果。