现在的位置: 首页 > 综合 > 正文

c++ primer 第八章编程练习

2018年02月20日 ⁄ 综合 ⁄ 共 4152字 ⁄ 字号 评论关闭

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];
}

抱歉!评论已关闭.