c - ***检测到堆栈粉碎***:终止中止(核心转储)
问题描述
我正在尝试编写一个程序来读取一个包含 15 个元素的数组,并为每种数字仅输出一次该数组中的数字(不会输出重复)。我在标题中收到错误,我不知道为什么。这是我的代码:
#include <stdio.h>
void main () {
int initial[15], final[15], nf=1, aux;
printf("Insert the 15 elements:\n");
for (int i = 0; i < 15; ++i)
{
printf("Insert the %dº element:\n",i+1);
scanf("%d", &initial[i]);
}
final[0]=initial[0];
for (int i = 1; i < 15; ++i)
{
for (int k = 0; k < nf ; ++k)
{
if (initial[i]!=final[k]) {
final[nf]=initial[i];
nf++;
}
}
}
for (int c = 0; c < nf ; ++c)
{
printf("%d, ",final[c]);
}
}
解决方案
您对内部循环的逻辑是有缺陷的。当元素不同时,条件initial[i]!=final[k]
会得到满足,这不是您想要的。您想检查数组initial[i]
中是否存在。final
for (int i = 1; i < 15; ++i)
{
bool found = false;
for (int k = 0; k < nf ; ++k)
{
if (initial[i]==final[k]) {
found = true;
break; // Found a dup, no need to continue further.
}
}
// Not present in final array, so include it.
if (!found) final[nf++] = initial[i];
}
推荐阅读
- javascript - Firebase Server Functions 是否可以为 WebSockets 服务器提供服务?
- c++ - 代码有问题。使用向量删除相同的数字,除了它的最后一个入口
- sql - 我使用了 in 子句但给出类型转换错误
- html - 表格单元格上方的按钮大小
- bash - 条件执行 - 多个命令
- javascript - Javascript:如何区分对象文字
- java - 在 Java 中处理 GraphQl 响应的最佳方法是什么
- django - (missing_code)响应OAuth Django中缺少代码参数
- java - 这个 java 递归如何在具有 2 个参数的方法中工作
- javascript - 将文本内容解析为特定的 json 格式