题目:输入三个整数x,y,z,请把这三个数由小到大输出。

我是这么编的
#include<stdio.h>int main(){ int i,a[3],j,t; printf("给老子输入3个数:"); for(i=0;i<3;i++) scanf("%d",&a[i]); for(j=0;j<2;j++) for(i=0;i<2-j;i++) if(a[i]>a[i+1]) t=a[i];a[i]=a[i+1];a[i+1]=t; for(i=0;i<3;i++) printf("%d\n",&a[i]); return 0;
}为什么结果是这样的

printf("%d\n",&a[i]);
这句写错了,&是取地址符,你这样输出的是a[i]的地址,而不是a[i]的值
printf("%d\n",a[i]);就可以了
还有你的 if(a[i]>a[i+1])
之后 t=a[i];a[i]=a[i+1];a[i+1]=t;这三句要用大括号括起来,不然会默认只有 t=a[i];在if内部
if(a[i]>a[i+1])
{ t=a[i];a[i]=a[i+1];a[i+1]=t;}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-05
试试这个
for(j=0;j<2;j++)
for(i=j;a[i]!='\0';i++)
if(a[j]>a[i])
t=a[i];a[i]=aj];a[j]=t;追问

不行啊!输出的还是上面那个图

第2个回答  2013-05-05
你的if语句应是{ t=a[i];a[i]=a[i+1];a[i+1]=t; },少了大括号,再运行试试。
相似回答