C語言學習趣事 23 經典命題 1

2021-09-08 00:06:12 字數 1865 閱讀 6531

最近看了一本書,書上描述了各種比較有意思的著名命題; 想想為了提高自己c語言的實踐水平,決定對立面的命題進行實踐。

下面描述的乙個問題是: 平台問題。

/*

最長平台問題:

存在已排序陣列,陣列中的乙個平台就是連續的一串

值相同的元素,並且這一串元素不能再延伸。

例如:1,2,2,3,3,3,4,5,5,6 中有平台

1 2.2

3.3.3

45.5

6並且最長平台是:3.3.3

*/

然後就自己是實現了乙個解決方案,**如下:

exp_1:  

標頭檔案:

#ifndef result_def 

#define result_def 0

#define result_def_h 1

#endif

/*result結構體用來儲存查詢的結果

*/#if result_def_h

typedef struct

result;

#endif

c檔案:

/*

最長平台問題:

存在已排序陣列,陣列中的乙個平台就是連續的一串

值相同的元素,並且這一串元素不能再延伸。

例如:1,2,2,3,3,3,4,5,5,6 中有平台

1 2.2

3.3.3

45.5

6並且最長平台是:3.3.3

*/#include

#include "

type.h

"void plateau(const

int i_array,int array_len,result *node);

int main(int argc,char *ar**);//

int i;

node.i_number=0;

node.i_repeat_time=0;

/*注意乙個sizeof的錯誤用法:

i=sizeof(i_array);

在wintc中這樣可以實現,但是在vc 2008裡面不能這樣用

*/plateau(i_array,sizeof(i_array)/sizeof(int),&node);

if(node.i_repeat_time > 0)

return0;}

/*函式功能:尋找已排序陣列的最長平台

最長平台問題:

存在已排序陣列,陣列中的乙個平台就是連續的一串

值相同的元素,並且這一串元素不能再延伸。

例如:1,2,2,3,3,3,4,5,5,6 中有平台

1 2.2

3.3.3

45.5

6並且最長平台是:3.3.3

函式原型:

void plateau(const int i_array,int array_len,result *node)

函式引數:

const int i_array: 待尋找的陣列

int array_len:陣列長度

result *node:儲存搜尋結果

其中 result 為結構體

typedef struct

result;

異常:*/

void plateau(const

int i_array,int array_len,result *node)

if(temp.i_repeat_time > (*node).i_repeat_time)

}}

上面實現的**沒有考慮當存在兩個同樣長度的平台的時候怎麼處理,如果需要的話,需要對功能進行完善。

**的執行結果如下圖所示:

C語言學習趣事 關於指標轉換

c語言學習趣事 關於指標轉換 volcanol c語言學習趣事 關於指標轉換 今天在gmail的群組討論貼中看到這樣乙個帖子 learn linux c cpp 一維陣列轉成指向陣列的指標 收件箱x zhangzhe benzhemin gmail.com 11 10 28 傳送至 learning...

C語言學習1

今天可能是開始學習重點了,講了許多的東西,並且老師也對c語言這門學科的各個方面進行了闡述,我發現就算是把這門學科的知識都學完了也才是基礎,這門學科的博大,今天的知識有點多,因為以前也學過js,而今天又主要講了運算子和表示式,所以對於今天的知識還是比較容易了,還講了型別之間的轉換,這也是比較重要的 像...

C語言學習 1

c語言中的6種語句 標號語句,復合語句,表示式語句,選擇語句,迭代語句,跳轉語句。乙個簡單的c程式 include int main void include 則行 是一條c預處理指令。通常,c編譯器在編譯前會對源 做一些準備工作,即預處理。所有的c編譯器軟體包都提供stdio.h檔案。該檔案中包含...