c语言的冒泡法,输出结果很诡异!请达人进来看下

来源:百度知道 编辑:UC知道 时间:2024/06/20 07:19:12
代码如下:
#include "stdio.h"
#define N 10
main ()
{
int n[N],a,b,c,t;
printf("请输入要查询的数字\n");
for(a=0;a<N;a++)
scanf("%d",&n[a]);
for(b=0;b<N-1;b++)
for(c=0;c<N-b;c++)
if(n[c]>n[c+1])
{t=n[c+1];n[c+1]=n[c];n[c]=t;}
printf("从小到大顺序为\n");
for(a=0;a<N;a++)
printf("%d\n",&n[a]);
}

输出结果为:
请输入要查询的数字
1
2
3
4
5
6
7
8
9
0
从小到大顺序为
-1074986772
-1074986768
-1074986764
-1074986760
-1074986756
-1074986752
-1074986748
-1074986744
-1074986740
-1074986736
我是要把最大的数字放在最下面,但是求出来的结果是这个!请高手帮忙看下是什么原因!

printf("%d\n",&n[a]);

去掉&

printf("%d\n",n[a]);

代码如下:
#include "stdio.h"
#define N 10
main ()
{
int n[N],a,b,c,t;
printf("请输入要查询的数字\n");
for(a=0;a<N;a++)
scanf("%d",&n[a]);
for(b=0;b<N-1;b++)
for(c=0;c<N-b;c++)
if(n[c]>n[c+1])
{t=n[c+1];n[c+1]=n[c];n[c]=t;}
printf("从小到大顺序为\n");
for(a=0;a<N;a++)
printf("%d\n",n[a]); //晕死,你输出数组中每个元素的地址了
}

有两个地方:
1.for(c=0;c<N-b;c++)改成for(c=0;c<N-1-b;c++)
2.printf("%d\n",&n[a]);去掉&号,改成printf("%d\n",n[a]);