Essential C++ 第二章习题

目录

2.2

2.3

2.4

2.5

2.6


2.2

//2.2

#include<iostream>
#include<vector>
#include<limits.h>
#include<string>
using namespace std;

// p(n) = n(3n-1)/2
bool pentagonal_list(vector<int>& p1, int size)  //传入vector数组的引用,在函数中直接对实参进行操作
{
	if (size * (3 * size - 1) / 2 > INT_MAX)
	{
		cout << "overflow" << endl;
		return false;
	}
	else
	{
		for (int i = 1; i <= size; i++)
		{
			p1[i - 1] = i * (3 * i - 1) / 2;
		}
		return true;
	}
}

void print_list(vector<int> p1, string s1, int size)
{
	cout << "数列的类型:" << s1 << endl;
	for (int i = 0; i < size; i++)
	{
		cout << p1[i] << " ";
	}
}


int main()
{
	int size;
	cout << "请输入数组的大小:";
	cin >> size;
	vector<int>v1(size);
	//构造数列
	pentagonal_list(v1, size);
	//输出
	print_list(v1, "Pentagonal", size);


	system("pause");
	return 0;
}

程序运行结果:

2.3

//2.3
#include<iostream>
#include<string>
#include<vector>
#include<limits.h>
using namespace std;


void print_list(vector<int> p1, string s1, int size)
{
	cout << "数列的类型:" << s1 << endl;
	for (int i = 0; i < size; i++)
	{
		cout << p1[i] << " ";
	}
}

inline bool judge_list(int size)
{
	if (size * (3 * size - 1) / 2 > INT_MAX)
	{
		return false;
	}
	return true;
}

bool pentagonal_list(vector<int>& p1, int size)
{
	if (!judge_list(size))
	{
		cout << "overflow" << endl;
		return false;
	}
	else
	{
		for (int i = 1; i <= size; i++)
		{
			p1[i - 1] = i * (3 * i - 1) / 2;
		}
	}
}

int main()
{
	int size;
	cout << "请输入数组的大小:";
	cin >> size;
	vector<int>v1(size);
	//构造数列
	pentagonal_list(v1, size);
	//输出
	print_list(v1, "Pentagonal", size);


	system("pause");
	return 0;
}

程序运行结果:

2.4

//2.4
#include<iostream>
#include<vector>
using namespace std;

const vector<int>* Pentagonal_list(int size)
{
	int n = 5;
	static vector<int>P1(n);
	if (n < size)
	{
		P1.resize(size);
		for (int i = 1; i <= size; i++)
		{
			P1[i - 1] = i * (3 * i - 1) / 2;
		}
	}
	else
	{
		for (int i = 1; i <= n; i++)
		{
			P1[i - 1] = i * (3 * i - 1) / 2;
		}
	}
	return &P1;
}

int locate_ele(const vector<int>* P1,int pos)
{
	return (*P1)[pos];
}

int main()
{
	int size;
	cout << "输入数列的长度:";
	cin >> size;
	const vector<int>* V1 = Pentagonal_list(size);
	int position;
	cout << "输入一个位置:";
	cin >> position;
	cout << "数列中该位置对应的数为:" << locate_ele(V1, position-1);


	system("pause");
	return 0;
}

 

1.通过vector的内置函数 "resize()" 来完成vector数组的扩充

参考文章:(59条消息) C++容器------vector 的扩容函数使用篇_Misszhoudandan的博客-CSDN博客_c++ vector扩容机制

2.5

//2.5
#include<iostream>
#include<vector>
#include<string>
using namespace std;

void max(int a, int b)
{
	int M = (a > b) ? a : b;
	cout << M << "是最大数" << endl;
}

void max(double a, double b)
{
	int M = (a > b) ? a : b;
	cout << M << "是最大数" << endl;
}

void max(string a, string b)
{
	string M = (a > b) ? a : b;
	cout << M << "是ASCII码值最大的字符串" << endl;
}

void max(vector<int>v1)
{
	int M = 0;
	for (int i = 0; i < v1.size(); i++)
	{
		if (v1[i] > M)
		{
			M = v1[i];
		}
	}
	cout << M << "是最大数" << endl;
}

void max(vector<double>v1)
{
	double M = 0;
	for (int i = 0; i < v1.size(); i++)
	{
		if (v1[i] > M)
		{
			M = v1[i];
		}
	}
	cout << M << "是最大数" << endl;
}

void max(vector<char>v1)
{
	char M = 0;
	for (int i = 0; i < v1.size(); i++)
	{
		if (v1[i] > M)
		{
			M = v1[i];
		}
	}
	cout << M << "是最大字符" << endl;
}

void max(int a[], int size)
{
	int M = 0;
	for (int i = 0; i < size; i++)
	{
		if (a[i] > M)
		{
			M = a[i];
		}
	}
	cout << M << "是最大数" << endl;
}

void max(double a[], int size)
{
	double M = 0;
	for (int i = 0; i < size; i++)
	{
		if (a[i] > M)
		{
			M = a[i];
		}
	}
	cout << M << "是最大数" << endl;
}

void max(char a[], int size)
{
	char M = 0;
	for (int i = 0; i < size; i++)
	{
		if (a[i] > M)
		{
			M = a[i];
		}
	}
	cout << M << "是最大字符" << endl;
}

int main()
{
	max(4, 10);
	max(2.8, 7.1);
	max("GodFishhhh", "AFish");
	vector<int>v1(5);
	v1[0] = 5;
	v1[1] = 20;
	v1[2] = 50;
	v1[3] = 30;
	v1[4] = 15;
	max(v1);
	vector<double>v2(5);
	v2[0] = 5.6;
	v2[1] = 20.9;
	v2[2] = 50.1;
	v2[3] = 30.4;
	v2[4] = 15.8;
	vector<char>v3(5);
	v3[0] = 'a';
	v3[1] = 'u';
	v3[2] = 'p';
	v3[3] = 'y';
	v3[4] = 'z';
	max(v2);
	max(v3);
	int a[5] = { 10,6,8,1,3 };
	double b[5] = { 1.1,6.2,8.3,9.1,5.3 };
	char c[5] = { 'c','d','u','o','p' };
	max(a, 5);
	max(b, 5);
	max(c, 5);

	system("pause");
	return 0;
}

2.6

//2.6
#include<iostream>
#include<vector>
#include<string>
using namespace std;

//模板函数的重载

//两个参数
template<typename T1, typename T2>
void max(T1 a, T2 b)
{
	T1 M = (a > b) ? a : b;
	cout << M << "是最大数" << endl;
}

template<typename T4>
void max(T4 a[], int size)
{
	T4 M = 0;
	for (int i = 0; i < size; i++)
	{
		if (a[i] > M)
		{
			M = a[i];
		}
	}
	cout << M << "是最大数" << endl;
}


//一个参数
template<typename T3>
void max(vector<T3> v1)
{
	T3 M = 0;
	for (int i = 0; i < v1.size(); i++)
	{
		if (v1[i] > M)
		{
			M = v1[i];
		}
	}
	cout << M << "是最大数" << endl;
}



int main()
{
	max(4, 10);
	max(2.8, 7.1);
	max("GodFishhhh", "AFish");
	vector<int>v1(5);
	v1[0] = 5;
	v1[1] = 20;
	v1[2] = 50;
	v1[3] = 30;
	v1[4] = 15;
	max(v1);
	vector<double>v2(5);
	v2[0] = 5.6;
	v2[1] = 20.9;
	v2[2] = 50.1;
	v2[3] = 30.4;
	v2[4] = 15.8;
	vector<char>v3(5);
	v3[0] = 'a';
	v3[1] = 'u';
	v3[2] = 'p';
	v3[3] = 'y';
	v3[4] = 'z';
	max(v2);
	max(v3);
	int a[5] = { 10,6,8,1,3 };
	double b[5] = { 1.1,6.2,8.3,9.1,5.3 };
	char c[5] = { 'c','d','u','o','p' };
	max(a, 5);
	max(b, 5);
	max(c, 5);

	system("pause");
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Essential C是一个以C语言为基础的编程书籍。它是学习和掌握C语言编程的必备工具。这本书的目录是包含以下几个主题的: 第一章:C语言基础 这一章介绍了C语言的基本概念和特性,包括变量、数据类型、运算符和控制流程等。读者将学会如何编写简单的C程序。 第二章:函数 这一章详细讲解了C语言中的函数,包括函数的定义、调用和参数传递等。还介绍了如何使用函数解决实际问题。 第三章:数组和字符串 这一章讲解了C语言中的数组和字符串的概念和用法。读者将学会如何处理和操作数组和字符串。 第四章:指针 这一章是本书的重点,详细介绍了C语言中的指针的概念和用法。读者将深入理解指针的工作原理及其在程序中的应用。 第五章:结构体和联合体 这一章介绍了C语言中的结构体和联合体的概念和用法。读者将学会如何定义和使用结构体和联合体。 第六章:动态内存管理 这一章讲解了C语言中的动态内存管理,包括动态分配和释放内存的方法和技巧。 第七章:文件操作 这一章介绍了C语言中的文件操作,包括打开、读写和关闭文件等。读者将学会如何处理文件和流。 通过学习这本书,读者将能够全面了解C语言的基础知识和常用技巧,并能够用C语言编写出简单而有效的程序。这本书的目录覆盖了C语言的核心内容,是学习C语言的重要参考资料。无论是初学者还是有一定经验的程序员,都可以从这本书中获得实际的编程指导和启发。 ### 回答2: 《Essential C》是一本关于C语言的有效教程。 本书分为以下几个部分: 第一部分:语言基础。这一部分主要介绍C语言的基本概念和语法规则,包括变量、数据类型、运算符、控制流等内容。读者可以通过学习这一部分掌握C语言的基本知识和编程技巧。 第二部分:函数和指针。这一部分介绍函数的定义、调用和传参方法,以及指针的使用,包括指针变量的声明和初始化、指针和数组的关系等。通过学习这一部分,读者可以掌握函数的使用方法和指针的重要概念和应用场景。 第三部分:字符串和文件操作。这一部分介绍C语言中字符串的定义和处理方法,包括字符串的输入输出、字符串的拼接和比较等。同时还介绍了文件的读写操作,包括打开文件、读写文件、关闭文件等操作。通过学习这一部分,读者可以掌握字符串的处理和文件操作的基本技巧。 第四部分:结构体和内存管理。这一部分介绍了结构体的定义、初始化和使用方法,以及动态内存分配和释放的相关知识。读者可以通过学习这一部分,了解C语言中复杂数据类型的使用和内存管理的重要概念。 第五部分:高级主题。这一部分介绍了一些C语言的高级概念和技巧,包括位运算、函数指针、宏定义等。读者可以通过学习这一部分掌握一些更加高级和灵活的编程技巧。 《Essential C》全面而系统地介绍了C语言的基本知识和编程技巧,适合初学者系统地学习和巩固C语言的基础,也适合有一定编程经验的读者查阅和扩展知识。无论是计算机专业的学生还是从事软件开发的工程师,都可以从这本书中受益。 ### 回答3: 《Essential C》(C语言必备)是一本面向初学者的C语言教程,它包含了C语言的基本知识和核心概念。该书的目录涵盖了C语言的各个方面,以下是对其目录的简要介绍。 第一章介绍了C语言的基本概念和发展历史,包括了C语言的起源、特点和应用领域。 第二章讲解了C语言的基本语法,包括常见的数据类型、变量声明和定义、运算符和表达式等等。 第三章讨论了C语言的控制语句,包括条件语句、循环语句和跳转语句,这些语句使得程序的流程控制更加灵活。 第四章介绍了C语言的函数概念和使用方法,包括自定义函数的声明和定义、函数参数的传递、递归函数的应用等等。 第五章深入讨论了C语言的指针,包括指针的定义、指针变量和指针运算符的使用,以及指针和数组之间的关系。 第六章介绍了C语言的数组,包括一维数组和多维数组的定义、初始化和使用方法。 第七章讨论了C语言中的结构体,包括结构体的定义、使用和访问结构体成员等等。 第八章介绍了C语言的文件操作,包括文件的读写、文件指针的定位和文件的打开与关闭等等。 第九章讨论了C语言中的动态内存分配,包括动态内存的申请和释放,以及常见的内存泄漏问题。 最后一章是对整本书的总结和对C语言学习的建议,包括如何进一步深入学习C语言以及实际项目中的注意事项。 《Essential C》的目录全面覆盖了C语言的各个重要方面,对于初学者来说是一个很好的入门教材。通过学习本书,读者可以掌握C语言的基本语法和常用功能,为后续的C语言开发打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值