C primer函式部分課後題

2021-08-09 21:10:54 字數 4390 閱讀 7818

6.4 階乘函式

#include 

using

namespace

std;

long fact(long val)

int main()

6.5 輸出實參絕對值

#include 

#include

using

namespace

std;

double

fabs(double val)

int main()

return

0;}

6.6/6.7說明形參,區域性變數,靜態區域性變數的區別

區域性變數:塊內部定義的變數;

引數:在函式引數列表中宣告的區域性變數

區域性靜態變數:local static variable(object)在第一次執行通過物件的定義之前被初始化。當功能結束時,區域性靜態變數不會被破壞; 當程式終止時,它們被銷毀。

#include 

using

namespace

std;

int fun(int i)

int main()

return

0;}

6.9 g++ 對多個檔案編譯

lk@lk-pc

:~/desktop/c++

$ cat main.cpp

#include

#include "head.h"

#include "fun.cpp"

using namespace std;

int main()

lk@lk-pc

:~/desktop/c++

$ cat head.h

int fun(int val);

lk@lk-pc

:~/desktop/c++

$ cat fun.cpp

int fun(int val)

lk@lk-pc

:~/desktop/c++

$

知識點1:通過使用引用形參,可以改變實參的值。

知識點2:避免使用引用的過程中拷貝,因為如果物件特別巨大,拷貝的過程會非常緩慢,造成程式低效。

知識點3:當函式需要多個返回值時,可以使用引用形參返回多個值。

對於讓函式返回多個值的具體操作:1、定義乙個新的資料型別,包含多個引數。2、給函式傳入額外的引用實參,令其儲存額外的引數,隱式的返回。

//c++最好使用引用型別的形參代替指標(可以通過指標來修改它所指物件的值)

// 如果函式無須改變引用形參的值,最好將其宣告變為常量引用

6.10使用指標交換兩個數的值(const int &i)…

#include 

using

namespace

std;

void swap(int *i, int *j) // 使用指標方法

void swap1(int &a, int &b) // 使用引用方法

int main()

6.11 :找出一段字串中某個字元出現的次數 和第一次出現的位置,用引用的方法

#include 

#include

#include

using

namespace

std;

int find(const

string &ch, char c, int &val)

}return count;

}int main()

else

cout

<< c << "字元未出現"

//const 注意

#include 

using

namespace

std;

void fun(const

int j) // j 只能讀 ,不能寫

int main()

/* 所謂用實參初始化形參時,會忽略掉頂層const 換句話說 頂層const被忽略掉了,當形參有頂層const時,傳給它常量物件或者非常量物件都對;注意是實參給形參傳

*/

6.17 編寫乙個函式,判斷string中是否有大寫字母,在編寫乙個函式把大寫改為小寫,兩個函式的形參型別一樣嗎?

#include 

#include

using

namespace

std;

bool judge(const

string &str) // 一般迴圈判斷是否有大寫

}void change(string &str) // 大寫改為小寫

}int main()

else

cout

<< "無大寫字母"

<< endl;

return

0;}

begin(a)函式 和a.begin()用法的注意

#include 

#include

#include

using

namespace

std;

//void fun(const int * beg, const int *end) // 指標所指物件不可以改

void fun( vector

::iterator beg, vector

:: iterator end)

}int main()

; vector

b(a, a+5);

// fun(begin(a), end(a));

fun(b.begin(), b.end());

/* auto beg = b.begin();

auto en = b.end();

while (beg != en)

*/return0;}

/* vectorb(a, a+5);

b.begin() 返回型別是 vector::iterator

如果是 int a[5];

就用begin(a) 返回型別是 int *

*/// 如果改變要改變字串就用string &str

//不改變的話最好用 const string &str

對陣列的引用:fun(int (&arr)[10]) 維度是型別的一部分

注意:&arr[10] 錯誤 將arr宣告成了引用的陣列

應該是(&arr)[10] 正確 arr是具有10個整數的整型陣列的引用

6.21 比較int 的值 和指標所指的值

#include 

using

namespace

std;

int campare(const

int i, const

int *j)

int main()

6.22 這個就很簡單吧不寫了

6.23 陣列呼叫方法

#include 

using

namespace

std;

void fun(const

int *a, const

int size) // const int a

cout

<< endl;

}void fun(const

int (&a)[3]) // 引用

cout

<< endl;

}void fun(const

int *a) // 指標

cout

<< endl;

}void fun(const

int *beg, const

int * end) // 位址

cout

<< "\n";

}int main()

; fun(a, 3);

fun(a);

fun(a);

fun(begin(a), end(a));

return

0;}

6.24/6.25 我也不太懂 借鑑的其他人的

#include 

#include

using

namespace

std;

int main(int argc, char ** argv)

cout

<< str << endl;

return

0;}

c 平時練習題,部分課後習題

第一次作業 在螢幕上輸出hello,world 程式參考的輸入 沒有輸入 程式參考的輸出 hello,world include using namespace std int main void showdog void showdog float getarea private float ra...

電子技術基礎數字部分課後習題答案

電子技術基礎模擬部分 第五版 第六版 課後習題答案 電子技術基礎 模擬部分 學習輔導與習題解答 第六版 是為配合華中科技大學電子技術課程組編 康華光任主編 陳大欽和張林任副主編的 電子技術基礎模擬部分 第六版 教材而編的學習輔導與習題解答。全書共11章 第一章 數字邏輯概論 課後習題答案詳解 第二章...

演算法設計與分析基礎第二章部分課後題答案

exercise 2.1 1.question i ii iii a n 相加 不會 b 二進位製表中的數 相乘 不會 c n 兩個數字不斷比較 不會 d 兩個輸入數中較大的數的大小,或兩個輸入數中較小的數的大小,或兩個輸入數的大小之和。模除運算 會 e 二進位製表中的位數 從剩餘的主要候選名單中剔...