1、题:
本篇是关于C语言的小实例,目的是让用户输入任意个数字,然后我们哟啊找出最大值,最小值,并且将用户输入的任意个数字进行排序
2、分析:
(1)最简单的求最大值最小值方法就是用两个宏定义,然后遍历用户输入的所有数字,将其用宏定义转换一下,得出最大值和最小值
C语言宏定义:
#define MAX(x,y) x>y ? x:y
#define MIN(a,b) a>b ? b:a
调用宏定义:
for(i=1; i<n; i++)
{
max= MAX(max,s[i]);
min= MIN(min,s[i]);
}
(2)然后我们定义一个函数,将用户输入的所有数字传入,在函数内我们用冒泡排序或者其他排序方法,将用户输入的所有数字进行排序
void hhh(float p[], int m)
{
int i, j;
float t;
for(i=0; i<m-1; i++)
{
for(j=0; j<m-i-1; j++)
{
if(p[j] > p[j+1])
{
t= p[j];
p[j]= p[j+1];
p[j+1]= t;
}
}
}
}
(3)最后,我们用一个for循环,每6个为一行进行输出,将排序后的结果打印出来
for(i=0; i<n; i++)
{
printf("%7.2f ",s[i]);
if((i+1)%6==0)
{
printf("\n"); //每6个输出为一行
}
}
3、完整代码:
#include <stdio.h>
#define MAX(x,y) x>y ? x:y
#define MIN(a,b) a>b ? b:a
#define N 100
void hhh(float p[], int m);
int main()
{
float s[N], max, min;
int i, n=0;
printf("请输入任意个数字,将输出最大值、最小值并从小到大排序:\n");
scanf("%f",&s[0]);
while(s[n]!=0.0)
{
n++;
scanf("%f",&s[n]);
}
max= min= s[0];
for(i=1; i<n; i++)
{
max= MAX(max,s[i]);
min= MIN(min,s[i]);
}
hhh(s, n);
printf("你一共输入了%d个数字\n其中最大值为%4f,最小值为%4f\n",n,max,min);
puts("从小到大排序后为:");
for(i=0; i<n; i++)
{
printf("%7.2f ",s[i]);
if((i+1)%6==0)
{
printf("\n"); //每6个输出为一行
}
}
getchar();
getchar();
}
void hhh(float p[], int m)
{
int i, j;
float t;
for(i=0; i<m-1; i++)
{
for(j=0; j<m-i-1; j++)
{
if(p[j] > p[j+1])
{
t= p[j];
p[j]= p[j+1];
p[j+1]= t;
}
}
}
}
4、调试结果:
可以看到,正常找出了最大值、最小值,并且顺序排序了