【C++ 程序设计入门基础】- 第4节-函数

1、函数

函数是对实现某一功能的代码的模块化封装。

【C++ 程序设计入门基础】- 第4节-函数_第1张图片

 函数的定义:

【C++ 程序设计入门基础】- 第4节-函数_第2张图片标准函数:

输入 n 对整数的 a、b ,输出它们的和。

#include 
#include 
using namespace std;

int add(int a,int b);//函数原型声明

int main()
{
	int n,a,b;
	cin>>n;
	int *c=new int[n];//动态数组
	for(int i=0;i>a>>b;
		c[i]=add(a,b);//调用函数
	}
	for(int i=0;i

运行结果如下:

【C++ 程序设计入门基础】- 第4节-函数_第3张图片

 无返回值:

输入n,输出1~n之间所有整数。

#include 
#include 
using namespace std;

void print(int n);//函数原型声明

int main()
{
	int n;
	cin>>n;
	print(n);
	return 0;
}

void print(int n){//函数定义
	for(int i=1;i<=n;i++){
		cout<

运行结果:

【C++ 程序设计入门基础】- 第4节-函数_第4张图片

 无参数:

输入n,如果n为10的倍数,输出3个“very good!”。

#include 
#include 
using namespace std;

void print();//函数原型声明

int main()
{
	int n;
	cin>>n;
	if(n%10==0){
		print();
	}
	return 0;
}

void print(){//函数定义
	for(int i=1;i<=3;i++){
		cout<<"very good!"<

 运行结果如下:

【C++ 程序设计入门基础】- 第4节-函数_第5张图片

 传值参数:

输入两个整数a,b,交换后输出。

#include 
#include 
using namespace std;

void swap(int x,int y);//函数原型声明

int main()
{
	SetConsoleOutputCP(CP_UTF8);
	int a,b;
	cin>>a>>b;
	swap(a,b);
	cout<<"a和b交换后"<

 发现传值参数调用,只在函数内有效,离开函数,参数并未交换值。【C++ 程序设计入门基础】- 第4节-函数_第6张图片

引用参数:

比如:int &b = a; 在定义b的时候前面的符号& 就表示b是a的一个引用,对引用变量的赋值等操作相当于对变量本身的操作。所以你对b赋值 b=a+14其实相当于a=a+14操作,引用又称为别名,相当于一个人两个名字。所以b是15。

 接下来我们在参数前面加个&号,代表引用参数,改变参数值,跳出函数依然生效。【C++ 程序设计入门基础】- 第4节-函数_第7张图片

 数组参数:

输入n个数存入数组a[]中,求和后输出和值。

#include 
#include 
using namespace std;
//int a[100];//定长数组

long long sum(int s[],int n){//参数数组
	long long count=0;
	for(int i=0;i>n;
    int *a = new int[n];//动态数组
	for(int i=0;i>a[i];
	}
	cout<<"sum 计算结果"<

 运行结果(这里我输入10个数):

【C++ 程序设计入门基础】- 第4节-函数_第8张图片

 字符串参数:

输入n个字母,如果是小写字母将其转换为大写字母,输出转换后的字符串。

#include 
#include 
#include 
using namespace std;

string covert(string &s)
{
	for(int i=0;i='a'&&s[i]<='z'){
			s[i]-=32;//将小写字符转为大写
		}
	}
	return s;
}
int main()
{
	SetConsoleOutputCP(CP_UTF8);
	string s;
	cin>>s;
	covert(s);
	cout<

 运行结果:

【C++ 程序设计入门基础】- 第4节-函数_第9张图片

 函数嵌套:

#include 
#include 
#include 
using namespace std;

int gcd(int x,int y)//最大公约数
{
	int t;
	t=x%y;//求余数 
	while(t!=0)
	{
		x=y;//y做被除数 
		y=t;//余数做除数 
		t=x%y;//求余数 
	}
	return y;
}
int lcm(int x,int y){//最小公倍数
	return x*y/gcd(x,y);
}
int main()
{
	SetConsoleOutputCP(CP_UTF8);
	int a,b;
	cin>>a>>b;
	cout<<"最大公约数:"<

运行结果如下:

【C++ 程序设计入门基础】- 第4节-函数_第10张图片

 函数重载(多态):

多个同名函数(参数数目、类型、顺序不同)

写一个函数,对于字符串类型数据取其长度的一半,对于浮点数类型,求其值的二分之一。

 

#include 
#include 
#include 
using namespace std;

float half(float a){
	return a/2;
}
string half(string s){
	int n=s.length()/2;
	char *str=new char[n];
	for(int i=0;i>a>>b;
	cout<<"float 的一半值:"<

 运行结果:

【C++ 程序设计入门基础】- 第4节-函数_第11张图片

 函数模版:

  • C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板

  • C++提供两种模板机制:函数模板类模板

函数模板作用:

建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。

函数模版语法:
template
T add(T x,T y)
{
	return x+y;
 } 
解释:

template --- 声明创建模板

typename --- 表面其后面的符号是一种数据类型,可以用class代替

T --- 通用的数据类型,名称可以替换,通常为大写字母

函数模版使用示例:
//交换整型函数
void swapInt(int& a, int& b) {
	int temp = a;
	a = b;
	b = temp;
}

//交换浮点型函数
void swapDouble(double& a, double& b) {
	double temp = a;
	a = b;
	b = temp;
}

//利用模板提供通用的交换函数
template
void mySwap(T& a, T& b)
{
	T temp = a;
	a = b;
	b = temp;
}

void test01()
{
	int a = 10;
	int b = 20;
	
	//swapInt(a, b);

	//利用模板实现交换
	//1、自动类型推导
	mySwap(a, b);

	//2、显示指定类型
	mySwap(a, b);

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

}

int main() {

	test01();

	system("pause");

	return 0;
}
总结:
  • 函数模板利用关键字 template
  • 使用函数模板有两种方式:自动类型推导、显示指定类型
  • 模板的目的是为了提高复用性,将类型参数化

你可能感兴趣的:(C++快速入门,c++,开发语言,函数)