设为首页 加入收藏

TOP

C++ primer 习题及答案分享(二)(一)
2018-03-18 16:21:12 】 浏览:288
Tags:primer 习题 答案 分享

4.26 编写程序从标准输入设备读入一个string类型的字符串。考虑如何编程实现从标准输入设备读入一个C风格字符串。

int main()
{
	cout << "C++ style" << endl;
	string str;
	cin >> str;
	cout << str << endl;
	cout << "C style" << endl;

	char ch[10];
	char *p = ch;
	while (p != ch + 10){
		cin >> *p++;
	}
	for (int i = 0; i < sizeof(ch) / sizeof(char); ++i)
		cout << ch[i] << endl;
}

4.28 编写程序从标准输入设备读入的元素数据建立一个int型的vector对象,然后动态创建一个与该vector对象大小一致的数组,把vector对象的所有元素赋值给新数组。

int main()
{
	vector
  
    vec;
	int a;
	while (cin>>a){
		vec.push_back(a);
	}
	const int n = vec.size();
	int *p = new int[n];
	
	int i = 0;
	for (vector
   
    ::iterator iter = vec.begin(); iter != vec.end(); ++iter, ++i){ p[i] = *iter; cout << p[i] << endl; } delete[] p; return 0; }
   
  

4.30 编写程序连接两个C风格字符串字面值,把结果存储在一个C风格字符串中。然后再编写程序连接两个string类型字符串,这两个string类型字符串与前面的C风格字符串字面值有相同的内容。

int main()
{
	
	const char *pc1 = "hello";
	const char *pc2 = "world";
	char *pc = new char[strlen(pc1) + strlen(pc2) + 1];
	char *pd = pc;
	while (*pc1)
	{
		*pc = *pc1;
		++pc;
		++pc1;
	}
	while (*pc2)
	{
		*pc = *pc2;
		++pc;
		++pc2;
	}
	*pc = '\0';
	
	string str="Hello";
	string str2 = "World";
	string str3 = str + str2;
	cout << str3 << endl;
	delete[] pd;
	return 0;
}

4.31 编写从标准输入设备读入字符串,并把该串存放在字符数组中。描述你的程序如何处理可变长的输入。提供比拟分配的数组长度长的字符串数据测试你的程序。

int main()
{
	//固定数组元素个数
	string str;//for enter the string object
	const size_t str_size = 10;
	char ch[str_size + 1];
	cout << "Enter the string" << endl;
	cin >> str;
	size_t len = str.size();
	if (len > str_size){
		len = str_size;
	}
	strncpy(ch, str.c_str(), len);
	ch[len + 1] = '\0';
	//不固定,动态数组
	string str2;
	cin >> str2;
	const size_t len_str2 = strlen(str2.c_str());
	char *ch1 = new char[len_str2 + 1];
	char *ch2 = ch1;
	for (string::iterator iter = str2.begin(); iter != str2.end(); ++iter,++ch2){
		*ch2 = *iter;
	}
	*ch2 = '\0';
	delete [] ch1;
	
	return 0;
}

4.32 编写程序用int 型数组初始化vector 对象。

int main()
{
	int a[3] = { 1, 2, 3 };
	vector
  
    vec(a,a+3);
	for (vector
   
    ::iterator iter = vec.begin(); iter != vec.end(); ++iter){ cout << *iter << endl; } return 0; } 
   
  

4.33编写程序把int型vector复制给int 数组。

int main()
{
	vector
  
    vec = { 1, 2, 3 };
	int *a=new int[vec.size()];
	int *b = a;
	for (vector
   
    ::iterator iter = vec.begin(); iter != vec.end(); ++iter, ++b){ *b = *iter; cout << *b << endl; } delete [] a; return 0; } 
   
  

4.34 编写程序读入一组string类型的数据,并将它们存储在vector中。接着,把该vector对象复制给一个字符指针数组。为vector中的每个元素创建一个新的字符数组,并把该vector元素的数据复制到相应的字符数组中,最后把指向该数组的指针插入字符指针数组。

int main(){
	string str;
	vector
  
    V_str;
	
	
	while (cin >> str){
		V_str.push_back(str);
	}
	char **ch = new char*[V_str.size()];

	size_t i(0);
	int j(0);
	for (vector
   
    ::iterator iter = V_str.begin(); iter != V_str.end(); ++iter,++i){ char *c = new char[(*iter).size()+1]; for (j = 0; j < (*iter).size(); ++j){ c[j] = (*iter)[j]; } c[j] = '\0'; ch[i] = c; } for (vector
    
     ::iterator iter2 = V_str.begin(); iter2 != V_str.end(); ++iter2){ cout << *iter2 << endl; } for (i = 0; i != V_str.size(); ++i){ cout << ch[i] << endl; } for (i = 0; i != V_str.size()
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇如何理解C++中的头文件和源文件的.. 下一篇C++指针参数是如何传递内存的?

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目