代码:
#include <stdio.h>
int main(){
int n, arr[30],i,j, median, temp;
printf("Enter Array Size: "); scanf("%d", &n);
printf("Enter Array Elements :");
for (i=0;i<n;i++){
scanf("%d", &arr[i]);
}
printf("Array After Sorting: \n");
for(i=0;i<n-1;i++){
for(j=0;j<n-1;j++){
if(arr[j]<arr[j+1]){
temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
else{
continue;
}
}
}
if (n%2==0){
median = (arr[n/2]+ arr[n/2+1]/2.0);
}
else{
median = arr[n/2+1];
}
for (i=0;i<n;i++){
printf("%d\n", arr[i]);
}
printf("Median: %d",median);
}
所以我试图对数组进行排序并找到它的中位数,但我没有得到预期的输出
预期输出:
Enter·Array·Size:·4
Enter·Array·Elements·:
5
2
6
1
Array·After·Sorting·:
1
2
5
6
Median:·3
我得到的输出:
Enter·Array·Size:·4
Enter·Array·Elements·:
5
2
6
1
Array·After·Sorting:·
6
5
2
1
Median:·2
这是我的 C 编程实验室问题,他们没有教我们有关排序的知识,但他们希望我们解决所有这些问题。
我似乎无法理解代码有什么问题。
问题在于中位数的计算。更改此行:
median = (arr[n/2] + arr[n/2 + 1]) / 2.0;
至:
median = (arr[n/2 - 1] + arr[n/2]) / 2;