題⽬:接受⽤戶輸⼊的⼀組數字(先提⽰⽤戶輸⼊待輸⼊的數字個數,⽽後動態申請記憶體開闢空間承接後續輸⼊) 在⽤戶輸⼊的若⼲個數中尋找三個數a,b,c, 使得a+b+c= 0 注意:三個數按照a ≤ b ≤c排列,且不輸出重複的a,b,c組合
思路:先提⽰⽤戶輸⼊要輸⼊資料的個數,然後申請動態記憶體,輸⼊若⼲個數字存進⼀陣列然後對資料進⾏公升序的排序。排除⼀些不可能的情況,通過三個變數(相當於指標)進⾏判斷,偏移,最後得出想要的資料。
#include
#include
intjudge
(int p,
int n)
return-1
;}intmain()
int*p =
(int*)
malloc
(n *
sizeof
(int))
;//動態分配記憶體運用
printf
("enter numbers:\n");
for(i =
0; i < n; i++
)// 對輸入的資料進行排序(公升序)
for(i =
0; i < n; i++)}
} t =
judge
(p, n)
;// 如果陣列中資料全為負數或者第乙個就為0的話,整個陣列任意三個數的和都是大於0。if(
(t ==-1
)||(t ==0)
)printf
("error");
// 判斷 a+b+c = 0 以及輸出去重 。
for(i=
0;i2;i++
)else
//p[m] + p[h] + p[i] >0 ,證明數字夠大了 ,動後面面的往前走乙個,h--
h--;}
}}free
(p);
// 釋放記憶體
p =null
;// 指標初始化,防止野指標出現。
return0;
}
C語言小練習
1.有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?使用陣列 includeint main void int num 0,i,j 0 scanf d num for i 0 i 10 i if i num for i 0 i 10 i 2.有乙個長度為10的陣列,根據下...
C語言小練習
1.列印100 200之間的素數 include include include 100 200間素數求法 int main if j i printf d n i 2.偶數都為2的倍數,所以均不為素數,這樣我們就可以排除掉偶數,直接判斷奇數是不是素數 int i 100 for i 100 i 2...
C語言小練習
1.在螢幕上輸出以下圖案 1111 11111 1111111 111111111 11111111111 1111111111111 11111111111 111111111 1111111 11111 1111 如下 include include void main else n n 1 p...