我是初学者。下面我的写的程序。
#include<stdio.h>
main()
{
int a[6],i,max,min,t,m,n;
printf("\nplease input 6 numbers:");
for(i=0;i<6;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<6;i++)
if(a[i]>max)
{
max=a[i];m=i;}
min=a[0];
for(i=1;i<6;i++)
if(a[i]<min)
{
min=a[i];n=i;}
t=a[n];a[n]=a[m];a[m]=t;
printf("max=%d,min=%d\n",max,min);
for(i=0;i<6;i++)
printf("%d",a[i]);
}
为什么只能找出最大数和最小数,但不能对调呀?输出结明有问题。
參考答案:不错,初学就已经会循环了!
在你用for语句求最大max和最小min的时候,
假如从键盘输入的是123456,那么for语句里面的if(a[i]>max){}一句都不会执行,那么m就没有被赋值,m是一个无法预测的值,在最后输出的时候就会出问题。
改正:在定义m和n的时候赋初值int m=0,n=0;这样就可以预防上面的情况了,我已经调试成功了。