思路可以参考如下:
//输入一个长度为len的数组
void input(float* array,int len);
//获取最大值
float max(float* array,int len);
//获取最小值
float min(float* array,int len);
//进行排序
void sortDesc(float* array,int len);
int main()
{
float[] array[10];
int len = 10;
input(&array,len);
.....
}
然后提供一些子函数的思路:
从键盘输入可以参考:
int i,a[2];
for(i=0;i<2;i++)
scanf("%d",a+i);
求数组最大值可以参考:
int main(void)
{
int a[7] = {45,32,86,56,24,98,85};
int min, max;
min = a[0]; max = a[0];
int i;
for (i = 0; i < 7; i ++)
{
if (a[i] < min)
min = a[i];
if (a[i] > max)
max = a[i];
}
printf("min = %d\n", min);
printf("max = %d\n", max);
return 0;
}
数组倒序排序可以参考:
#include<stdio.h>
int main()
{
int a[10]={20,23,12,91,19,36,39,21,52,38};
int i,j,t;
int *p=a; //使用指针
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(*(p+j)<*(p+j+1))
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
for(i=0;i<10;i++) //从大到小输出
{
printf("%d\t",*(p+i));
}
return 0;
}
希望对您有所帮助!
#include "stdio.h"
void main(){
int arr1[15];//每位同学的成绩
for(int i=0;i<15;i++){
scanf("%d",arr1+i);//从键盘输入,arr+i才是赋值
}
int max_num=arr1[0];//最高分初始化
int x=0;//最高分的同学的编号
int min_num=arr1[0];//最低分初始化
int y=0;//最低分同学的编号
for(int i=0;i<15;i++){
if (arr1[i]>max_num){
max_num=arr1[i];
x=i;
}
if (arr1[i]<min_num){
min_num=arr1[i];
y=i;
}
}
printf("最高分:%d,编号对应的索引:%d\n最低分:%d,编号对应的索引:%d",max_num,x,min_num,y);
printf("\n按成绩从高到低排序后的结果为:\n");
for(int i=0;i<15;i++){
for(int j=0;j<15-i-1;j++){
if (arr1[j]<arr1[j+1]) {
int temp = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = temp;
}
}
}
for(int i=0;i<15;i++){
printf("%d ",arr1[i]);
}
}