首页 > 代码库 > C++ Primer Pluse_8_课后题

C++ Primer Pluse_8_课后题

#include <iostream>
#include <string>
#include<cstring>

using namespace std;

void showStr(const char * str, int & n)
{
	cout << str << endl;
	
	if (n > 0)
	{
		showStr(str, --n);
	}
}
int test8_1()
{
	char str[] = "hello cat";
	int n = 2;
	showStr(str, n);
	return 0;
}

int test8_2()
{

	return 0;
}

void Up(string & str)
{
	int i = 0;
	while (str[i])
	{
		str[i] = toupper(str[i]);
		i++;
	}

	cout << str << endl;

}

int test8_3()
{
	string str;

	cout << "Enter a string (q to quit): ";
	getline(cin, str);

	while (str != "q")
	{
		Up(str);

		cout << "Enter next string:(q to quit):";
		getline(cin, str);
	}
	cout << "bye.\n";
	

	return 0;
}

struct stringy{
	char *str;
	int ct;
};

void set(stringy & beany, const char *test)
{
	beany.ct = strlen(test);
	beany.str = new char[beany.ct +1];
	int i = 0;
	for (i = 0; test[i]; i++)
	{
		beany.str[i] = test[i];
	}
	beany.str[i] = 0;
}

void show(const stringy beany, int n = 1)
{
	for (int i = 1; i <= n; i++)
	{
		cout << beany.str << endl;
		cout << beany.ct << endl;
	}
}

void show(const char *testing, int n = 1)
{
	for (int i = 1; i <= n; i++)
	{
		cout << testing << endl;
	}
}
int test8_4()
{
	stringy beany;
	char testing[] = "Hello cat.";

	set(beany, testing);
	show(beany);
	cout << endl;
	show(beany, 2);
	testing[0] = ‘D‘;
	testing[1] = ‘u‘;
	show(testing);

	show(testing, 3);
	show("Done!");
	return 0;
}

template <typename T>
T Max5(T arr[])
{
	int i = 0;
	T max = arr[0];
	for (i = 1; i < 5; i++)
	{
		if (max < arr[i])
		{
			max = arr[i];
		}
	}

	return max;

}
int test8_5()
{
	int a[5] = { 2, 3, 1, 5, 4 };

	cout << Max5(a);

	double b[5] = { 6, 8, 5, 9, 6 };

	cout << endl << Max5(b);
	return 0;
}

template <typename T>
T maxn(T arr[], int n)
{
	int i = 0;
	T max = arr[0];
	for (i = 1; i < n; i++)
	{
		if (max < arr[i])
		{
			max = arr[i];
		}
	}
	return max;
}

template <> char * maxn<char *>(char * arr[], int n)
{
	int i = 0;
	int max = strlen(arr[0]);
	int maxk = 0;

	for (i = 1; i < n; i++)
	{
		if (max < strlen(arr[i]))
		{
			max = strlen(arr[i]);
			maxk = i;
		}
			
	}

	return arr[maxk];
}
int test8_6()
{
	int a[6] = { 2, 3, 1, 5, 6, 4 };
	double b[4] = { 9, 6, 7, 4 };

	char * strarr[3] = { "Hello cat!", "boat", "miao wu" };

	cout << maxn(a, 6) << endl;
	cout << maxn(b, 4) << endl;
	cout << maxn(strarr, 3) << endl;
	return 0;
}

template <typename T>
void ShowArray(T arr[], int n);

template <typename T>
void ShowArray(T * arr[], int n);

struct debts
{
	char name[50];
	double amount;
};

template <typename T>
void ShowArray(T arr[], int n)
{
	cout << "template A\n";
	for (int i = 0; i < n; i++)
	{
		cout << arr[i] << ‘ ‘;
	}
	cout << endl;
}

template <typename T>
void ShowArray(T *arr[], int n)
{
	cout << "using template B\n";
	for (int i = 0; i < n; i++)
	{
		cout << *arr[i] << ‘ ‘;
	}

	cout << endl;
}

template <typename T>
T SumArray(T arr[], int n)
{
	T sum = 0;
	for (int i = 0; i < n; i++)
	{
		sum += arr[i];
	}
	return sum;
}

template <typename T>
T SumArray(T *arr[], int n)
{
	T sum = 0;
	for (int i = 0; i < n;i++)
	{
		sum += *arr[i];
	}
	return sum;
}
int test8_7()
{
	int things[6] = { 1, 2, 3, 4, 5, 6 };

	struct debts mr_e[3] =
	{
		"Cat mioa", 10.1,
		"Dog Boat", 20.1,
		"Fish ni", 30.1
	};
	double *pd[3];
	for (int i = 0; i < 3; i++)
	{
		pd[i] = &mr_e[i].amount;
	}

	ShowArray(things, 6);

	ShowArray(pd, 3);

	cout << SumArray(things, 6) << endl;
	cout <<SumArray(pd, 3) << endl;
	return 0;
}

int main()
{
	test8_7();

	system("pause");
	return 0;
}

  

C++ Primer Pluse_8_课后题