【学习C++】C++ Primer Plus (第六版)第八章编程练习1-7

来源:互联网 发布:java课程设计 清华大学 编辑:程序博客网 时间:2024/05/16 14:21
1.
#include <iostream>#include <string>using namespace std;void priStr(char *);void priStr(char *, int n);static int i = 1;int main(){char a[10] = "liujiayu";priStr(a);for (int i = 1; i < 4; i++){priStr(a, i);}cin.get();return 0;}void priStr(char *a){cout << a << endl;}void priStr(char *a, int n){if (n != 0){for (int j = 0; j < i; j++)cout << a << endl;i++;}elsecout << "input error" << endl;}

2.

#include <iostream>#include <string>using namespace std;struct CandyBar{char * brandName;double weight;int cal;};void setCandy(CandyBar &a, char *n="Millennium Munch", double w=2.85, int c=350);void showCandy(const CandyBar &);int main(){CandyBar candy;setCandy(candy, "ljy", 3.8, 400);showCandy(candy);setCandy(candy);showCandy(candy);cin.get();return 0;}void setCandy(CandyBar &a, char *n, double w, int c){a.brandName = n;a.weight = w;a.cal = c;}void showCandy(const CandyBar &a){cout << a.brandName << endl;cout << a.weight << endl;cout << a.cal << endl;}
3.
#include <iostream>#include <string>using namespace std;char * l_u(string &);int main(){cout << "Enter a string(q to quit): ";string str;while (getline(cin, str)){if (str != "q"){cout << l_u(str)<<endl;delete [] l_u(str);cout << "Next string(q to quit):";}elsebreak;}cout << "Bye."<<endl;cin.get();return 0;}char * l_u(string &str){int n = str.size();char *s = new char[n+1];for (int i = 0; i < n; i++){s[i] = toupper(str[i]);}s[n] = '\0';return s;}
4.
#include <iostream>#include <cstring>using namespace std;struct stringy{char * str;int ct;};void set(stringy &, char *);void show(const stringy &, int n = 1);void show(const char *, 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();return 0;}void set(stringy &str, char *ch){int strl = strlen(ch);char *s = new char [strl+1];for (int i = 0; i < strl; i++){s[i] = ch[i];}s[strl] = '\0';str.str = s;str.ct = 2;}void show(const stringy &s, int n){for (int i = 0; i < n; i++){cout << s.str << endl;}}void show(const char *c, int n){for (int i = 0; i < n; i++){cout << c << endl;}}
5.
#include <iostream>#include <string>using namespace std;template<typename T>T max5(T *a);int main(){int a[5] = { 0, 1, 2, 3, 4 };double b[5] = { 0.0, 1.0, 2.0, 3.0, 4.9 };cout << max5(a) << endl;cout << max5(b) << endl;cin.get();return 0;}template<typename T>T max5(T *a){T temp=a[0];for (int i = 1; i < 5; i++){if(a[i]>temp) temp = a[i];}return temp;}
6.

#include <iostream>#include <string>using namespace std;template<typename T>T maxn(T a[],int n);template <> char* maxn<char *>(char * a[], int n);int main(){int a[6] = { 0, 1, 2, 3, 4,5 };double b[4] = { 0.0, 1.0, 2.0, 3.9 };char* c[5] = { "liu", "jia", "yu", "good", "girl" };cout << maxn(a,6) << endl;cout << maxn(b,4) << endl;cout << maxn(c, 5) << " at " << static_cast<const void *>(maxn(c, 5)) << endl;cin.get();return 0;}template<typename T>T maxn(T *a,int n){T temp=a[0];for (int i = 1; i < n; i++){if(a[i]>temp) temp = a[i];}return temp;}template <> char* maxn<char *>(char * a[], int n){int temp = strlen(a[0]);int l=0;for (int i = 1; i < n; i++){if (strlen(a[i]) > temp){temp = strlen(a[i]);l = i;}}return a[l];}
7.
#include <iostream>using namespace std;template <typename T>void SumArray(T arr[], int n);template <typename T>void SumArray(T * arr [], int n);struct debts{char name[50];double amount;};int main(){int things[6] = { 13, 31, 103, 301, 310, 130 };debts mr_E[3] = { { "Ima Wolfe", 2400.0 }, { "Ura Foxe", 1300.0 }, { "Iby Stout", 1800.0 } };double * pd[3];for (int i = 0; i < 3; i++)pd[i] = &mr_E[i].amount;cout << "Counting Mr.E's counts of things:\n";SumArray(things, 6); cout << "Counting Mr.E's debts:\n";SumArray(pd, 3);cin.get();return 0;}template <typename T>void SumArray(T arr [], int n){cout << "Template A\n";T sum=arr[0];for (int i = 1; i < n; i++){sum += arr[i];}cout << sum<<endl;}template <typename T>void SumArray(T * arr [], int n){cout << "Template B\n";T sum = *arr[0];for (int i = 1; i < n; i++){sum += *arr[i];}cout << sum << endl;}





0 0
原创粉丝点击