gpt4 book ai didi

C - 索引问题

转载 作者:行者123 更新时间:2023-12-04 12:20:40 25 4
gpt4 key购买 nike

所以我正在制作这个简单的排序算法,将数组中的数字按升序排列。

这就是我的代码现在的样子:

#include <stdio.h>
#include <stdlib.h>

int main(void){
int x,smallest,z,n,count;
int * numbers = NULL;
printf("Sisestage arvude hulk: ");
scanf("%d",&n);
numbers = malloc(sizeof(int)*n);
if(numbers==NULL){
return -1;
}
for(count=0;count<n;count++){
printf("Arv %d: ",count+1);
scanf("%d",&numbers[count]);
}
smallest = numbers[0];
for(count=0;count<n;count++){
printf("Number %d Index %d\n",numbers[count],count);
if(numbers[count]<smallest)
smallest = numbers[count];
z = count;
}
/*numbers[0] = smallest;
numbers[z] = x;*/
printf("Smallest: %d, It's index: %d Array size: %d\n",smallest,z,n);
}

这里的问题是当程序结束时,由于某种原因,z = 数组中的最后一个索引。z = count 在 if 语句中,应该有助于避免这种事情发生,但它仍然会发生。这是为什么?

最佳答案

你忘了用大括号将 if block 括起来:

if(numbers[count]<smallest) {
smallest = numbers[count];
z = count;
}

因此,在您的情况下,z = count 总是 执行。

此外,如果第一个元素 numbers[0] 恰好是最小的,则 z 未初始化,因此你应该用

初始化它
 smallest = numbers[0];
z = 0;

关于C - 索引问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21605974/

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