所以我正在制作这个简单的排序算法,将数字放在一个数组中以升序排列.
这就是我的代码现在的样子:
#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);
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是程序完成后,由于某种原因,z =数组中的最后一个索引.z = count在if语句中,应该可以帮助这种事情不会发生,但它仍然存在.这是为什么?
你忘了将if-block括在括号中:
if(numbers[count]<smallest) {
smallest = numbers[count];
z = count;
}
Run Code Online (Sandbox Code Playgroud)
因此,你的情况,z = count则始终执行.
此外,如果第一个元素恰好是最小元素,z则未初始化numbers[0],因此您应该初始化它
smallest = numbers[0];
z = 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |