c语言程序设计 输入20个数 求最大最小值,我的怎么不对了?

来源:百度知道 编辑:UC知道 时间:2024/06/23 08:55:46
#include<stdio.h>
#define N 20
void main()
{
int a[N],i,j,temp;
printf("请输入20个数:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;i<=N-1;i++)
{
for(j=0;j<=N-i-1;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("最小值为%d,最大值为%d",a[0],a[19]);
}
运行出来 最小值是 -8589934602,最大值是1。。为什么呢 ?

你的思路我理解了,是将整个数组先由小到大排序,然后直接输出,程序没错!呵呵,不过如果用下面这种方法对于数据量较大时可能效率会高一些:

for (i=0; i<N-1; i++)
for (j=i+1; j<N; j++)
if (a[i]>a[j])
max=a[i];
else if(a[i]<a[j])
min=a[j];
else一定不能省,加上else可以减少后一条判断语句执行次数,呵呵,希望对你有帮助

程序正确啊 我运行了

一个循环搞定啊~只求最大最小值何必排序喃~弄那么麻烦
#include<stdio.h>
#define N 20
void main()
{
int a[N],i,max,min;
printf("请输入20个数:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
max = min = a[0];
for(i=1;i<N;i++)
{
if(max < a[i]) max = a[i];
if(min > a[i]) min = a[i];
}
printf("最小值为%d,最大值为%d",min,max);
}

我亲自在VC2008下调试测试过。没有发现什么问题。有图作证。而且我输入了二次不同的数据结果是正确的。烦请下次贴帖子的时候把问题具体描述出来。