emmm…一開始看錯題了以為直接找出中間的數,實際上不是這樣的
題目:程式實現:
(第一次寫的時候我的思路,第二次修改的時候發現排序沒有必要,//往後翻//(!_ !))
先把數輸入進去,排序。
然後使用兩個for迴圈,第一層標誌著第幾個數參與比較,第二層標誌著每乙個數都跟第i個數比較一次
若出現比第i個數大的,則u++,若出現比第i個數小的,則k++
然後判斷u是否等於k,相等的話使得標誌變數flag=1(主要是防止在迴圈內就把數輸出,同時如果flag不為1就輸出-1就行),出現相等就當機立斷break出去,程式結束。
**如下
#include
void
swap
(int
*a,int
*b)void
find
(int
*p,int n)
if(k==u)}if
(flag ==0)
printf
("-1\n");
}int
main()
find
(p,n)
;}
第二次修改後(去掉了排序演算法)
//思路一致
#include
void
find
(int
*p,int n)
if(k==u)}if
(flag ==0)
printf
("-1\n");
}int
main()
其實也沒有必要使用指標和函式,不使用的話還可以更加簡潔一點
(第三次修改,去掉了指標和函式,更加直觀)
#include
intmain()
if(k==u)}if
(flag ==0)
printf
("-1\n");
}
關於輸入的資料存放再陣列裡的話一般來說我都習慣定義很大的空間,但其實可以使用mallloc動態分配記憶體空間,下一次部落格(日記)再寫上來吧。 CCF 中間數(C語言)
問題描述 在乙個整數序列a1,a2,an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在乙個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。給定乙個整數序列,請找出這個整數序列的中間數的值。輸入格式 輸入的第一行包含了乙個整數n,表示整數序列中數的個數。第...
CCF題 中間數 2016 12 1
問題描述 在乙個整數序列 a1,a2,an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在乙個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。給定乙個整數序列,請找出這個整數序列的中間數的值。輸入格式 輸入的第一行包含了乙個整數 n,表示整數序列中數的個數...
CCF認證 201612 1中間數(C )
試題編號 201612 1 試題名稱 中間數時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 在乙個整數序列a1,a2,an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在乙個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。給定乙個整數序...