m0_66176795 2022-04-22 22:34 采纳率: 70.6%
浏览 26
已结题

数组升序,两个代码之间的区别,一个对一个错


#include<stdio.h>
int main()
{
    int num[10];
    int i,j,temp;
    for ( i = 0 ; i < 10 ; i++ )
    {
        scanf("%d",&num[i]);
    }
    for ( i = 0 ; i < 10 ; i++ )
    {
        printf("%d\t",num[i]);
    }
    printf("\n");
    for ( i = 0 ; i < 9 ; i++ ) 
    {
        for( j = 0 ; j < 9-i ; j++ )
        {
            if( num[j] > num[j+1] )
            {
                temp = num[j];
                num[j] = num[j+1];
                num[j+1] = temp;
            }
        }
    }
    for ( i = 0 ; i < 10 ; i++ )
        printf("%d  ",&num[i]);
    return 0;
}

这串代码结果如下:
2 3 4 6 7 8 5 1 9 0
6356684 6356688 6356692 6356696 6356700 6356704 6356708 6356712 6356716 6356720
6356684 6356688 6356692 6356696 6356700 6356704 6356708 6356712 6356716 6356720

而另一串代码


#include<stdio.h> 

void sort(int a[],int n);  /*函数声明*/ 
int  main()
{ 
    int s[10],i;
    for ( i = 0 ; i < 10 ; i++ )
    {
        scanf("%d",&s[i]);
    }
    for ( i = 0 ; i < 10 ; i++ )
    {
        printf("%d\t",&s[i]);
    }
    printf("\n");
       sort(s,10);   /*函数调用*/   
       for(i=0;i<10;i++) 
        printf("%d  ",s[i]); 
        printf("\n"); 
        return  0; 
} 

void  sort(int  a[],int  n)   /*函数定义,按冒泡方法排序*/ 
{ 
    int i,j,t;
    for(i=0;i<n-1;i++)
        {
            for(j=0;j<n-i-1;j++)
            if(a[j]>a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
} 

结果是正确的
2 3 4 6 7 8 5 1 9 0
6356692 6356696 6356700 6356704 6356708 6356712 6356716 6356720 6356724 6356728
0 1 2 3 4 5 6 7 8 9

  • 写回答

1条回答 默认 最新

  • 对象被抛出 2022-04-22 22:38
    关注
    1. 你print的都是地址, 不是值
    2. 能看出来你想用冒泡排序, 但是i和j反了
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 已采纳回答 4月22日
  • 修改了问题 4月22日
  • 修改了问题 4月22日
  • 展开全部