演算法競賽入門經典 第2版 課後習題 第三章

2021-10-03 23:36:16 字數 3274 閱讀 9418

c++語言版實現**

2、字串的總長度:

3、複製字串 str2 到字串 str1:

4、比較字串 str2 到字串 str1:strcmp(s1, s2):

5、查詢字串 str 中字元 ch 的第一次出現的位置:

6、查詢向字串 str1 中字串 str2 的第一次出現的位置:

使用cin輸入字串方式

1、接受乙個字串,遇「空格」、「tab」、「回車」自動結束:

#include

using

namespace std;

main (

)

輸入:shfus iaad!

輸出:shfus

2、接受乙個可以帶有空格的字串

#include

using

namespace std;

main (

)

輸入:jsh ahf iauf a

輸出:jsh ahf i

注意:a陣列的最後一位是儲存』\0』的。

#include

using

namespace std;

main (

)

輸入:sh ahf iauf a

輸出:sh a

注意:a陣列的最後一位是儲存』\0』的。

#include

#include

using

namespace std;

main (

)

輸入:sh ahf iauf a

輸出:sh ahf iauf a

注意:和cin.getline()類似,但是cin.getline()屬於istream流,而getline()屬於string流,是不一樣的兩個函式。

思考題題目1(必要的儲存量):陣列可以用來儲存很多資料,但在一些情況下,並不需要把 資料儲存下來。下面哪些題目可以不借助陣列,哪些必須借助陣列?請程式設計實現。假設輸入 只能讀一遍

#include

int main

#include

int main

cout << max <<

" "<< min <<

" "<<

(float

)s/count<< endl;

return0;

}

#include

int main

elseif(

abs(b - c)

< difference)}

cout << a <<

" "<< b << endl;

return0;

}

#include

int main

while

(cin >> c)

else

if(b < c)

b = c;}

cout << b << endl;

return0;

}

#include

#include

int main

mean = s / i;

s =0;

for(

int j =

0; j < i; j++

) s +

=pow

(a[j]

- mean,2)

; variance = s / i;

cout << fixed <<

setprecision(3

)<< variance << endl;

return0;

}

#include

#include

int main

mean = s / i;

for(

int j =

0; j < i; j++)if

(a[j]

< mean)

count++;

cout << count << endl;

return0;

}

題目2(統計字元1的個數):下面的程式意圖在於統計字串中字元1的個數,可惜有 瑕疵:

#include

#define maxn 10000000 + 10

intmain()

該程式至少有3個問題,其中乙個導致程式無法執行,另乙個導致結果不正確,還有一 個導致效率低下。你能找到它們並改正嗎?

改正後:

#include

#include

using

namespace std;

#define maxn 10000 + 10

// 原來的導致程式錯誤,原數值過大

intmain()

改良後可以看直觀效率的**,用執行時間來直觀效率

#include

#include

#include

using

namespace std;

#define maxn 10000 + 10

intmain()

finish =

clock()

; duration =

(double

)(finish - start)

/ clocks_per_sec;

n =0;

start2 =

clock()

;while

(n <

1000000

) finish2 =

clock()

; duration2 =

(double

)(finish2 - start2)

/ clocks_per_sec;

cout << tot << endl;

cout << tot2 << endl;

cout <<

<< duration << endl;

cout <<

<< duration2 << endl;

return0;

}

演算法競賽入門經典 第2版 課後習題 第二章

c 語言版實現 習題2 1 水仙花數 daffodil 輸出100 999中的所有水仙花數。若3位數abc滿足abc a3 b3 c 3abc a b c abc a3 b3 c3,則稱其為水仙花 數。例如153 1 3 53 33153 1 5 3 153 13 53 33,所以153是水仙花數。...

演算法競賽入門經典 第2版 習題2 3詳解

畫圖分析 第二個迴圈 列印 for k 1 k 2 n i 1 k printf n 換行 return 0 執行結果 上面寫的是列印倒三角形的 到這裡我覺得還是有必要寫乙個列印正三角形的 列印 for k 1 k 2 i 1 k printf n 換行 return 0 執行結果 綜上所述 其實這...

演算法競賽入門經典(第二版)第2章習題

2.4.1 輸出技巧 include intmain 習題2 2 水仙花數 daffodil 輸出100 999中的所有水仙花數。若3位數abc滿足abc a 3 b 3 c 3,則稱其為水仙花數。include intmain return 0 習題2 3 韓信點兵 hanxin 相傳韓信才智過人...