mevius铁盒香烟价格:C语言有关数组的问题?在线等!!

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/02 06:48:22
C语言有关数组输入的问题?在线等!~~
悬赏分:0 - 离问题结束还有 14 天 23 小时
输入五个整数,并存入在一维数组中,找出最大数与最小数.
#include<stdio.h>
main()
{
int a[5],i,j,max,min;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=0;i<5;i++)
{
if(a[i]>max)
max=a[i];
}

for(j=0;j<5;j++)
{
if(a[j]<min)
min=a[j];
}
printf("%d,%d\n",a[i],a[j]);
}

但在C语言运行过程中,为什么最小数也同样显示的是最大数?
问题补充:printf("%d,%d",max,min);
可以满足条件,但是我这个题只是我原题的一小部.
我的原题是要求出最大值与最小值的小标!~~

if(a[i]>max)
{
max=a[i];
x=i;
}//降下表存入一个变量中就可以了

无地自容了,我已经答错2次了
闭嘴了

因为你的printf(\"%d,%d\\n\",a[i],a[j]);
a[i],a[j]的下表都是4

#include<stdio.h>
main()
{
int a[5],i,j,max,min;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=0;i<5;i++)
{
if(a[i]>max)
max=a[i];
}
k=i;

for(j=0;j<5;j++)
{
if(a[j]<min)
min=a[j];
}
m=j;
printf("%d,%d\n",k,m,);
}
我这的C没有连接文件不能运行,你自己试试。

按照你说的, 改了一下, 下标也一起求出来了。
其实题目如果不要求存储, 你可以不存这个数组的。

嗯, 最后一句错了。 printf ("%d,%d",max,min);

给你写个更高效的方法。

int main(){
int a[5],i,j,max,min, maxindex, minindex;
scanf("%d", &a[0]);
max = min = a[0];
maxindex = minindex = 0;
for(i=1;i<5;i++){
scanf("%d",&a[i]);
if(a[i]>max){max = a[i];maxindex=i;}
else if(a[i]<min){min = a[i];minindex=i;}
}
printf("%d:%d,%d:%d\n",maxindex,max,minindex,min);
}

自己可以体会一下这个程序的优点在哪儿:)

printf(\"%d,%d\\n\",a[i],a[j]);
因为在两个for循环中,执行完之后,i和j的值都变成了4。此时,也许你输入的最大或者最小数并不是a[4],但此时你要打印输出的是a[i],a[j],亦既a[4],所以输出的是同一个值。应该将a[i],a[j]改为max,min.
要输出角标,可以这样:
if(a[i]>max)
{
max=a[i];
x=i;
}
if(a[i]>max)
{
max=a[i];
y=i;
}

最后:
printf("a[%d]=%d,a[%]=%d",x,max,y,min);