為啥我這樣寫 輸錯結果是錯的 詳見程序
#include <stdio.h>
int main()
{
? ? double arr[]={1.78, 1.77, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80};
? ? int i,j;
? ? printf("\n************排隊前*************\n");
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? if(i != 9) ??
? ? ? ? ? ? printf("%.2f, ", arr[i]); ?//%.2f表示小數(shù)點后精確到兩位
? ? ? ? else
? ? ? ? ? ? printf("%.2f", arr[i]); ? ?//%.2f表示小數(shù)點后精確到兩位
? ? }
? ? for(i=8; i>=0; i--)
? ? {
? ? ? ? for(j=0;j<=i;j++)
? ? ? ? {
? ? ? ? ? ? if( arr[j] >arr[j+1] ) ? ? ?//當前面的數(shù)比后面的數(shù)大時
? ? ? ? ? ? {
? ? ? ? ? ? ? ? double temp; ? ?//定義臨時變量temp
? ? ? ? ? ? ? ? temp=arr[i]; ? ? //將前面的數(shù)賦值給temp
? ? ? ? ? ? ? ? arr[j]=arr[j+1]; ? ? ? ? ? ?//前后之數(shù)顛倒位置
? ? ? ? ? ? ? ? arr[j+1]=temp; ? ? ? ? ? ?//將較大的數(shù)放在后面 ? ?
? ? ? ? ? ? } ? ? ? ? ? ? ? ??
? ? ? ? } ? ? ? ? ? ? ? ?
? ? }
? ? printf("\n************排隊后*************\n");
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? if(i != 9) ??
? ? ? ? ? ? printf("%.2f, ", arr[i]); ?//%.2f表示小數(shù)點后精確到兩位 ? ??
? ? ? ? else
? ? ? ? ? ? printf("%.2f", arr[i]); ? ?//%.2f表示小數(shù)點后精確到兩位
? ? }
? ? return 0; ? ?
}
2016-11-01
這里是用j和j+1作比較,所以是temp=arr[j];不是temp=arr[i]
2016-10-27
2016-10-24
是對的啊?
2016-10-24
是對的,第一個回答我錯了。。。其實你是對的
建議去其他編譯器,試試
2016-10-24
查看代碼里面是對的。。。
2016-10-24
還有個} 在return 0;后面
2016-10-14
temp=arr[i]; ? ? //將前面的數(shù)賦值給temp
arr[j]=arr[j+1]; ?//前后之數(shù)顛倒位置
arr[j+1]=temp; ?//將較大的數(shù)放在后面 ? ?
改為:
臨時變量temp保存的是較大值,從小到大排序
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp; ?