总体要求:控制 C 语言编写程序,实现对用户通过键盘输入的 10 个无序浮点数的从大到小输出具体要求: 1、使用动态内存分配存储键盘输入的浮点数 2、使用函数对输入的浮点数进行排序,函数参数使用指针变量 3、排序结果在主程序中输出显示
#include <stdio.h>
void sort(float * a,int len)
{
int i,j;
float f;
for(i=0;i<len;i++)
{
for(j=0;j<i;j++)
{
if(a[i]>a[j])
{
f=a[i];
a[i]=a[j];
a[j]=f;
}
}
}
}
int main(void) {
float* a=(float*)malloc(sizeof(float)*10);
int i;
for(i=0;i<10;i++)
scanf("%f",a+i);
sort(a,10);
for(i=0;i<10;i++)
printf("%f ",*(a+i));
}
不知道你这个问题是否已经解决, 如果还没有解决的话:下面直接上代码
#include<stdio.h>
int a[10];//定义一个全局变量
void input()
{
int i;//如果在这里定义数组,则该数组只是一个局部变量,当该函数结束时,数组自动删除了 ,所以要把数组定义成全局变量
printf("please input 10 number");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
}
void sort(int a[10])//冒泡排序法(用指针实现)
{
int m,n,*p=a,temp;
for(m=0;m<9;m++)
for(n=0;n<9-m;n++)
if(*(p+n)>*(p+n+1))
{
temp=*(p+n);
*(p+n)=*(p+n+1);
*(p+n+1)=temp;
}
}
void output(int a[10],int i) //可用for循环或者指针来输出
{
for(i=0;i<10;i++)
printf("%3d",a[i]);
}
main()
{
input();
sort(a);
output(a,10);
}
.