我只用了一個for循環但可以運行正確,但是否有漏洞
#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表示小數點后精確到兩位
? ? ? ? else
? ? ? ? ? ? printf("%.2f", arr[i]);? ? //%.2f表示小數點后精確到兩位
? ? }
? ? ? ? for(j=0;j<=8;j++)
? ? ? ? {
? ? ? ? ? ? if(arr[j]>arr[j+1])? ? ? //當前面的數比后面的數大時
? ? ? ? ? ? {
? ? ? ? ? ? ? ? double temp;? ? //定義臨時變量temp
? ? ? ? ? ? ? ? temp=arr[j];//將前面的數賦值給temp
? ? ? ? ? ? ? ? arr[j]=arr[j+1];//前后之數顛倒位置
? ? ? ? ? ? ? ? arr[j+1]=temp;//將較大的數放在后面? ??
? ? ? ? ? ? }? ? ? ? ? ? ? ? ?
? ? ? ? }? ? ? ? ? ? ? ??
? ? printf("\n************排隊后*************\n");
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? if(i != 9)? ?
? ? ? ? ? ? printf("%.2f, ", arr[i]);? //%.2f表示小數點后精確到兩位? ? ?
? ? ? ? else
? ? ? ? ? ? printf("%.2f", arr[i]);? ? //%.2f表示小數點后精確到兩位
? ? }
? ? return 0;? ??
}
2022-08-26
肯定有漏洞啊???for(j=0;j<=8;j++) 這個只是把10個數中最大的移到了最后,剩下9個還要繼續對比,所以才用到
for(i=8;i>=0;i--)
? ? {
? ? ? ? for(j=0;j<=i;j++)
????????·······