分类：电脑/网络-互联网
问题：一道非常简单的C语言题 
回答：min=(a[i]>a[i-1])?min:a[i]; 如果a[i]>a[i - 1]，始终比较的是当前元素和上一个元素，这是最根本的错误，比如 3 2 4 3这条语句的运行过程就是，min = 24>2 -> min = 2;3<4 -> min = 3;最终结果，min = 3;显然是不对的。正确的是要始终跟当前的min比较，而且不要刻意去追求语句简短，条件运算符并不一定具有更高的效率。min = (a[i] < min)?a[i]:min;//正确语句同时，使用if(a[i] < min) min = a[i];也能做到一条语句解决问题。另外，还太过冗长，以及效率还太低下，仅仅只是找到最小值的话再输入的时候就可以处理，这样能节省O(n)的运行时间，在查找时记录i而不是min，这样最终只要做一次交换就可以，程序始终控制在O(n)，而且乘数因子控制在1，保证最高的效率。核心部分的优化：(加个变量声明int temp;)while(scanf("%d",&n) != EOF){   scanf("%d",&a[0]);   temp = 0;for(i = 1; i < n; i++){scanf("%d",&a[i]);if(a[i]<a[temp])   temp = i;}t = a[temp];a[temp] = a[0];a[0] = t;}