编写一个程序,该程序应该使用函数insert从数组中的用户获取5个浮点值,然后使用函数sort对这些值进行排序,然后使用函数disp在屏幕上打印排序值。
这是我的代码,请告诉我我做错了什么。排序后打印0.000。
#include <stdio.h>
void insert(float array[],int val);
void disp(float array[],int val);
void sort(float array[], int val);
void main ()
{
float array[5],j;
printf("Enter numbers: \n");
insert(array,5); //array input function
printf("Enter numbers are: \n");
disp(array,5); //array output function
sort(array,5); //array sort function
printf("\nSorted Array is: \n");
disp(array,5); //array output function
}
//array input function
void insert(float array[],int val)
{
int k,i;
for (k = 0;k<5;k++){
scanf("%f",&array[k]);
}
}
//array sort function
void sort(float array[], int val){
int i,j;
float hold;
for(i=0; i<6; i++)
{
for(j=0; j<6; j++)
{
if(array[j]>array[j+1])
{
hold=array[j];
array[j]=array[j+1];
array[j+1]=hold;
}
}
}
}
//array display function
void disp(float array[],int val)
{
int k;
for (k = 0;k<5;k++){
printf("%f\n",array[k]);
}
}
答案 0 :(得分:1)
排序功能应如下所示:
//array sort function
void sort(float array[], int val)
{
int i,j;
float hold;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(array[j]>array[j+1])
{
hold=array[j];
array[j]=array[j+1];
array[j+1]=hold;
}
}
}
}
在原始代码中,第一个循环执行两次太多。 第二个循环导致读数超出数组。由于你有5个元素,你需要进行4次比较。
答案 1 :(得分:0)
首先,您声明了一些您没有使用的变量,尤其是函数中的int val
。
其次,您不需要实现一个函数来在数组中插入值,只需直接用scanf
循环它。