gpt4 book ai didi

C 中嵌套 for 循环中的条件不起作用

转载 作者:行者123 更新时间:2023-11-30 16:16:08 25 4
gpt4 key购买 nike

我是 C 语言新手,正在练习 for 循环和指针。在本练习中,我尝试编写一个对数组元素进行排序的函数。代码的第一部分(我输入元素的地方)正在工作,但下面的所有内容都让我很困难。我不明白问题是否出在 if/else 语句中或循环结构中的其他位置。最后一个循环也不起作用(我只是希望它迭代已排序的数组并打印元素,就像我之前对未排序的数组所做的那样。

希望我能得到一些帮助,如果你看到更多我应该注意的事情......

非常感谢。

我尝试检查定义循环的方式是否准确,是否输入了所有正确的值以及对数组进行排序的基本“想法”是否正确。

void sort_array_elements()
{
int x, i, j, k, temp;
printf("\n input the number of elements to store in the array: ");
scanf_s("%d", &x);

int arrnum[30];
ptr_int = &x;
printf("input %d elements in the array: \n", x);
for (i = 0; i < x; i++)
{
scanf_s("%d\n", &arrnum[i]);
}

printf("the elements in the array before sorting: \n");
for (i = 0; i < x; i++)
{
printf("element %d: %d\n", i, arrnum[i]);
}


for (i = 0; i < x; i++)
{
for (j = 1; j < x; j++)
{
if (arrnum[i] > arrnum[j])
{
temp = arrnum[i];
arrnum[i] = arrnum[j];
arrnum[j] = temp;


}
else if (arrnum[i] == arrnum[j])
{
for (k = arrnum[i + 1]; k < x; k++)
{
if (arrnum[k] != arrnum[j])
{
temp = arrnum[k];
arrnum[k] = arrnum[j];
arrnum[j] = temp;
break;
}
}
}


}

}

printf("the elements in the array after sorting: \n");

for (i = 0; i < x; i++)
{
printf("element %d: %d\n", i, arrnum[i]);
}

}

最佳答案

我不确定您的排序算法中的 elseif 语句。该代码还可以通过不重复排序元素并仅将最小元素交换到 i 的位置来潜在地减少运行时间。还可以考虑使用 qsort 内置函数对数组进行排序!我怀疑您的排序算法对数组做了一些奇怪的事情,这就是打印排序数组的循环不起作用的原因。另外,您从不使用 ptr_int 或指针(我认为数组是一种指针)。

`

for(int i = 0; i<x; i++)
{
for(int j = i; j<x; j++)
{
if(arr[j] < arr[i])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}

`

关于C 中嵌套 for 循环中的条件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56758750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com