C语言数组问题

用数组从键盘输入10个整数,再找出数组中的最大数和最小数。
为什么我的程序 输出的结果总是不对(超过100之后,输出的值就错了)

#include <stdio.h>
void main()
{
int a[10],i,max,min;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
if(i==0)
max=min=a[0];
else{
if(min<a[i]) max=a[i];
if(max>a[i]) min=a[i];
}
}
printf("min=%d,max=%d\n",min,max);
}

你的代码问题有以下几个:
1、min和max没有初始化
2、对于a[min]和a[max]没有做循环
参考代码如下:
#include <stdio.h>
main()
{
int a[10], i, min= 0, max=0;
for(i = 0; i < 10; i++) {
scanf("%d", a+i);
if(a[min] > a[i])
min = i;
else if(a[max] < a[i])
max = i;
}
printf("最大数是%d,下标是%d,最小数是%d,下标是%d\n", a[max], max, a[min], min);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-04
#include <stdio.h>
void main()
{
int a[10],i,max,min;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
max=min=a[0];
if(min>a[i]) min=a[i];
if(max<a[i]) max=a[i];
}

printf("min=%d,max=%d\n",min,max);
}追问

为什么我那样是错的?。。

追答

if(i==0)是什么意思?i从0到10,开始时i==0,此时max=min=a[0]???。

if(mina[i]) min=a[i];
上面两句大错,你自己好好分析一下你的逻辑。
还有你的min和max没有初始化,值不定。
一句话,算法混乱。

追问

嗯...果然一级棒.首先很感谢你改程序..其次.你改的是错的

追答

程序确实有问题,你的程序改两个地方即可,大意了!
#include
void main()
{
int a[10],i,max,min;
for(i=0;ia[i]) min=a[i]; /*如果a[i]max,则所a[i]的值给max*/
}
}
printf("min=%d,max=%d\n",min,max);
}

相似回答