冒泡排序中对换两数组


#include<stdio.h>
int main()
{
    int j,i,a[10],t;
    printf("请输入十个数字\n");
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=9;i>0;i--)
    {
        for(j=0;j<i;j++)
        {
            if(a[j]>a[j+1])   
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }   
    return 0;
 } 

其中我将if语句替换为

 a[j]=(a[j]>a[j+1])?a[j+1]:a[j];

程序无法按预期运行

废话呀,if语句里执行的是3个赋值,你替换成三元运算符之后只剩1个赋值了,逻辑上也根本不等价呀

 a[j]=(a[j]>a[j+1])?a[j+1]:a[j];
//等价于
if(a[j]>a[j+1])
a[j]=a[j+1];
else
a[j]=a[j];