2楼答案基本解决了。不过有数据类型方面,和输出格式要修改下。数组类型要求是浮点型的。输出保留一位小数;数据输出可以直接在排序sort函数中调用output函数,还有个问题,如果提前输入0结束,当数组元素少于预定义的N的时候,就会出错了。所以程序修改如下:
#include<stdio.h>
#define N 12
void input(float arr[N]);
void sort(float arr[N]);
void output(float arr[N]);
int m;
int main()
{
float arr[N];
input(arr);
sort(arr);
return 0;
}
void input(float arr[N])
{
printf("请输入数组的各个元素值,数之间Enter确认.\n\n");
printf("也可以提前输入0结束数据输入.\n\n");
for(m=0;m<N;m++)
{
scanf("%f",&arr[m]);
if(arr[m]==0)
break;
}
printf("输入的%d个数据如下(保留一位小数):\n",m);
for(m=0;m<N;m++)
{
if(arr[m]==0)
break;
printf("%.1f\t",arr[m]);
}
printf("\n");
}
void sort(float arr[N])
{
int i,j;
float temp=0.0;
for(i=0;i<m;i++)
{
if(arr[i]==0)
break;
for(j=i+1;j<m;j++)
{
if(arr[i]<arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
printf("数组元素降序排序:\n");
output(arr);
}
void output(float arr[N])
{
int i,j=0;
for(i=0;i<m;i++)
{
if(arr[i]==0)
break;
printf("%.1f\t",arr[i]);
j++;
if(j==3)
{
printf("\n");
j=0;
}
}
printf("\n");
}
[此贴子已经被作者于2016-5-5 09:43编辑过]