学海题深 发表于 2021-11-18 08:21:26

为什么我这个排列有漏洞?

#include<stdio.h>

void sort(int a[],int n);
void sort(int a[],int n){
        int i,j,k,l;
        for(i=0;i<n-1;i++){
                for(k=i,j=i+1;j<n;j++){
                if(a>a){
                        k = j;
                }
                if(k!=i){
                        l = a;
                        a=a;
                        a=l;
                }       
                }               
        }
}
int main(){
        int a,n;
        int *p = &a;
        printf("请输入十个数:");
        for(n=0;n<10;n++){
                scanf("%d",&a);
        }
        sort(p,10);
        printf("由大到小排列后的:") ;
        for(n=0;n<10;n++){
                printf("%d",*(p+n));
        }
        return 0;
}

jhq999 发表于 2021-11-18 08:56:17

void sort(int a[],int n){
      int i,j,k,l;
      for(i=0;i<n-1;i++){
                for(j=i+1;j<n;j++){
               k=i;////////////////放在循环体里面
                if(a>a){
                        k = j;
                }
                if(k!=i){//如果上面k=j那么不管以后是否a>a,k!=i都是成立的,所以k=i;应该放在循环体里面
                        l = a;
                        a=a;
                        a=l;
                }      
                }               
      }
}
页: [1]
查看完整版本: 为什么我这个排列有漏洞?