#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];