1
/*2014. 01. 14 by Arby*/ /*c++ primer 第八章编程练习*/ /*默认参数*/ #include <iostream> using namespace std; void ShowStr(const char *str, int n = 0); int main() { /*初始化*/ int count = 0; const int str_size = 10; char str[str_size] = "xiaoke"; /*操作*/ cout << "enter the times you want to show: " << endl; cin >> count; while(count > 0) { ShowStr(str, count); count--; } cin.get(); cin.get(); return 0; } void ShowStr(const char *str, int n) { cout << str << " "; }
2.
/*2014. 01. 14 by Arby*/ /*c++ primer 第八章编程练习*/ /*结构的引用*/ #include <iostream> #include <cstring> using namespace std; struct CandyBar { char *candy_bar_name; double weight; int hot; }; const CandyBar &SetValue(CandyBar &sour, char *str, double weight_value, int hot_value); int main() { /*初始化*/ char name[10] = "xiaoke"; double weight_value = 23.5; int hot_value = 10; CandyBar candy_bar; /*操作*/ CandyBar candy = SetValue(candy_bar, name, weight_value, hot_value); cout <<"the inform of the candy is: "<< endl; cout << candy_bar.candy_bar_name <<" " << candy_bar.weight << " " << candy_bar.hot << &candy_bar << endl; cout << candy.candy_bar_name << " " << candy.weight << " " << candy.hot << &candy << endl; delete [] candy.candy_bar_name; cin.get(); cin.get(); return 0; } /*结构的引用进行赋值,各个参量的赋值作用*/ const CandyBar &SetValue(CandyBar &sour, char *str, double weight_value, int hot_value) { int len = strlen(str); int i = 0; sour.candy_bar_name = new char[len+1]; for(i = 0; i < len; i++) { sour.candy_bar_name[i] = str[i]; } sour.candy_bar_name[i] = '\0'; sour.weight = weight_value; sour.hot = hot_value; return sour; }
3
/*2014. 01. 14 by Arby*/ /*c++ primer 第八章编程练习*/ /*string的引用*/ #include <iostream> #include <string> using namespace std; string &ExchangeChar(string &str); int main() { /*初始化*/ string str; /*操作*/ cout << "Enter a string (q to quit): "; getline(cin, str); while(str != "q") { cout << ExchangeChar(str) << endl; cout << "next string: "; getline(cin, str); } cout << "bye"; cin.get(); cin.get(); return 0; } string &ExchangeChar(string &str) { int strlength = str.length(); char *ps = &str[0]; for(int i = 0; i <strlength; i++) { *ps = toupper(*ps); ps++; } return str; }
4.
/*2014. 01. 14 by Arby*/ /*c++ primer 第八章编程练习*/ /*const 使用*/ #include <iostream> #include <cstring> using namespace std; struct stringy { char *str; int ct; }; void set(stringy &inform, char *str); void show(const stringy &inform, int n = 1); void show(const char *ch, int n = 1); int main() { /*初始化*/ stringy beany; char testing[] = "Reality isn't what it used to be."; /*操作*/ set(beany, testing); show(beany); show(beany, 2); testing[0] = 'D'; testing[1] = 'u'; show(testing); show(testing, 3); show("Done! "); cin.get(); cin.get(); return 0; } void set(stringy &inform, char *str) { int len = strlen(str); int i = 0; inform.str = new char[len+1]; for(i = 0;i < len;i++) { inform.str[i] = str[i]; } inform.str[i] = '\0'; inform.ct = i; } void show(const stringy &inform, int n) { for(int i = 0; i < n;i++) { cout << "For stringy " << i+1 << " : "; cout << inform.str << " " << inform.ct << endl; } } void show(const char *ch, int n) { for(int i = 0; i < n; i++) { cout << "For ch "<< i+1<< " : "; cout << ch << endl; } }
5.
/*2014. 01. 14 by Arby*/ /*c++ primer 第八章编程练习*/ /*数组模板 使用 形式 Type max5(Type a[]) */ #include <iostream> using namespace std; template <typename Type> Type max5(Type a[]); int main() { /*初始化*/ int arr1[5] = {1, 3, 4, 5, 23}; int arr1_max = 0; double arr2[5] = {323.34, 43.4, 32.44, 434.34, 334.4}; double arr2_max = 0; /*操作*/ arr1_max = max5(arr1); arr2_max = max5(arr2); cout << "int array max is: " << arr1_max << endl; cout << "double array max is: " << arr2_max << endl; cin.get(); cin.get(); return 0; } template <typename Type> Type max5(Type a[]) { Type max = a[0]; for(int i = 0; i < 5; i++) { if(a[i] > max) { max = a[i]; } } return max; }
8
/*2014. 01. 14 by Arby*/ /*c++ primer 第八章编程练习*/ /*模板及具体化,这里只能用早期的具体化来实现 */ #include <iostream> #include <cstring> using namespace std; template <typename Type> Type max6(Type a[], int n); char *max6(char *arr[], int &size); int main() { /*初始化*/ int arr1[6] = {1, 3, 4, 5, 23, 54}; int arr1_max = 0; double arr2[5] = {323.34, 43.4, 32.44, 434.34, 334.4}; double arr2_max = 0; char *arr[5] = {"xiaoke", "xiaohe", "xiaoyou", "xiaohua", "xiaojian"}; char *arr_length; int size = 5; /*操作*/ arr1_max = max6(arr1, 6); arr2_max = max6(arr2, 5); cout << "int array max is: " << arr1_max << endl; cout << "double array max is: " << arr2_max << endl; arr_length = max6(arr, size); /*这里是引用,必须要进行变量的传递,不能是直接赋值*/ cout <<"char maxlength is: " << arr_length <<endl; cin.get(); cin.get(); return 0; } template <typename Type> Type max6(Type a[], int n) { if(n == 0) return -1; Type max = a[0]; for(int i = 0; i < n; i++) { if(a[i] > max) { max = a[i]; } } return max; } /*具体化, 只能用早期的具体化*/ char *max6(char *arr[], int &size) { int count = 0; int max_length = 0; for(int i = 0; i < size; i++) { if(strlen(arr[i]) > max_length) max_length = strlen(arr[i]); count = i; } return arr[count]; }