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

这篇具有很好参考价值的文章主要介绍了【C++ 程序设计入门基础】- 第4节-函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、函数

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

【C++ 程序设计入门基础】- 第4节-函数,C++快速入门,c++,开发语言,函数

 函数的定义:

标准函数:

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

#include <iostream>
#include <windows.h>
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<n;i++){
		cin>>a>>b;
		c[i]=add(a,b);//调用函数
	}
	for(int i=0;i<n;i++){
		cout<<c[i]<<endl;
	}
	return 0;
}

int add(int a,int b){//函数定义
	return a+b;
}

运行结果如下:

【C++ 程序设计入门基础】- 第4节-函数,C++快速入门,c++,开发语言,函数

 无返回值:

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

#include <iostream>
#include <windows.h>
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<<i<<endl;
	}
}

运行结果:

【C++ 程序设计入门基础】- 第4节-函数,C++快速入门,c++,开发语言,函数

 无参数:

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

#include <iostream>
#include <windows.h>
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!"<<endl;
	}
}

 运行结果如下:

【C++ 程序设计入门基础】- 第4节-函数,C++快速入门,c++,开发语言,函数

 传值参数:

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

#include <iostream>
#include <windows.h>
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交换后"<<a<<"\t"<<b<<endl;
	return 0;
}

void swap(int x,int y){//传值参数定义
	int temp;
	temp=x;
	x=y;
	y=temp;
}

 发现传值参数调用,只在函数内有效,离开函数,参数并未交换值。【C++ 程序设计入门基础】- 第4节-函数,C++快速入门,c++,开发语言,函数

引用参数:

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

 接下来我们在参数前面加个&号,代表引用参数,改变参数值,跳出函数依然生效。【C++ 程序设计入门基础】- 第4节-函数,C++快速入门,c++,开发语言,函数

 数组参数:

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

#include <iostream>
#include <windows.h>
using namespace std;
//int a[100];//定长数组

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

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

【C++ 程序设计入门基础】- 第4节-函数,C++快速入门,c++,开发语言,函数

 字符串参数:

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

#include <iostream>
#include <windows.h>
#include <cstring>
using namespace std;

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

 运行结果:

【C++ 程序设计入门基础】- 第4节-函数,C++快速入门,c++,开发语言,函数

 函数嵌套:

#include <iostream>
#include <windows.h>
#include <cstring>
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<<"最大公约数:"<<gcd(a,b)<<endl;
	cout<<"最小公倍数:"<<lcm(a,b)<<endl;
	return 0;
}

运行结果如下:

【C++ 程序设计入门基础】- 第4节-函数,C++快速入门,c++,开发语言,函数

 函数重载(多态):

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

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

 

#include <iostream>
#include <windows.h>
#include <cstring>
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<n;i++){
		str[i]=s[i];
	}
	return str;
}
int main()
{
	SetConsoleOutputCP(CP_UTF8);
	float a;
	string b;
	cin>>a>>b;
	cout<<"float 的一半值:"<<half(a)<<endl;
	cout<<"string 的一半值:"<<half(b)<<endl;	
	return 0;
}

 运行结果:

【C++ 程序设计入门基础】- 第4节-函数,C++快速入门,c++,开发语言,函数

 函数模版:

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

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

函数模板作用:

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

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

template --- 声明创建模板

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

T --- 通用的数据类型,名称可以替换,通常为大写字母文章来源地址https://www.toymoban.com/news/detail-795697.html

函数模版使用示例:
//交换整型函数
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<typename T>
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<int>(a, b);

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

}

int main() {

	test01();

	system("pause");

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

到了这里,关于【C++ 程序设计入门基础】- 第4节-函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 程序设计入门(023)—— Python 的自定义函数

    在 Python 中,函数的应用非常广泛。比如:input()、print()、str()、range()、len() 等,这些称为 Python 的内置函数,可以直接使用。Python 支持自定义函数,即将一段有规律的、可重复使用的代码定义为函数,达到一次编写,多次使用的目的。 自定义函数使用 def 实现,语法格

    2024年02月12日
    浏览(60)
  • 程序设计c++入门一百题(1-55)

    目录 1.矩阵转置 2.矩阵乘法 3.判断闰年 4.求斐波那契数列的指定一项 5. 进制转换 6.求多项式:1 – 1/2 + 1/3 – 1/4 + … + 1/99 – 1/100 的值。 7.给定一个n个元素的整数数组A,A中连续的相等元素所形成的数据区域称为块,求最大块的长度。(2016)  8.求e的值,e=1+1/1!+1/2!+1/3!+1/4!

    2024年02月15日
    浏览(41)
  • C++程序设计基础【五】(引用和指针)

    引用是对象的替代名称,以简化实体之间的通信。当声明一个引用变量时,不会在内存中创建一个新的对象,而只是声明一个现有变量的替代名称 引用变量在原始变量前加上r并将首字母大写,形成约定,方便查看绑定的对象 1.复合类型 引用类型是复合类型,但不能用double的

    2024年02月07日
    浏览(39)
  • C++程序设计基础【三】(类之间的关系)

    在C++中,最一般的类被称为基类,而更具体地类被称为派生类,更一般的类也称为超类,更具体的类也称为子类 派生类继承了基类中的所有成员(有些例外),它还可以添加新成员 最常用的继承是公共继承 基类中的公共成员称为派生类中的公共成员 要对基类和派生类中的函数

    2024年02月07日
    浏览(60)
  • Linux系统C++程序设计1-Linux系统和POSIX 标准入门

    本书介绍了Linux以及我们如何在Linux环境中使用C++来管理关键资源。我们想花一些时间在本章中加深对操作系统(OS)的基本了解。 您将更多地了解一些特定技术、系统调用接口和可移植操作系统接口(POSIX Portable Operating System Interface)的起源。 在Linux或其他基于Unix的操作系统

    2024年02月05日
    浏览(45)
  • 九宫格布局小程序-模仿微信钱包界面设计-基础入门

    代码展示: 使用flex布局模型和wx:for属性仿微信“钱包”页面实现九宫格 项目创建完毕之后,在根目录中会生成文件夹pages用于存放页面文件。一般来说首页默认命名为index,表示小程序运行的第一个页面; 将app.json文件内pages属性中的“pages/logs/logs”删除,并删除上一行末尾

    2024年02月08日
    浏览(47)
  • Android开发基础4:事件处理和交互实现程序设计

    应用前提:Android开发中,事件是用户对图形界面的操作,Android应用程序通过事件和信息来实现人机交互。 事件 包括:按下、弹起、滑动、双击。 信息 包括:信息框、对话框、通知。 本节学习和Android中与事件处理和交互相关的组件及知识。 每个工程下面的模块必须做的工

    2023年04月24日
    浏览(51)
  • Javaweb程序设计基础入门eclipse实现用户注册登录和session存储

    通过HTML,CSS,JavaScript和JSP实现页面的注册,登录和信息显示的三个界面的设计。 1.1注册界面 2.登录界面 3.通过Java代码进行登录界面的校验 1.用request.getParameter()获取表单提交的数据来存储账号和密码 2.if语句来进行账号和密码的校验 4.信息显示界面HTML 通过requst.getParameter()获

    2024年02月05日
    浏览(43)
  • 软考:中级软件设计师:程序语言基础:表达式,标准分类,法律法规,程序语言特点,函数传值传址

    提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 (1)自己的科研经历, 科研内容 ,学习的相关领域知识,要熟悉熟透了 (2)自己的实习经历,做了 什

    2024年02月09日
    浏览(61)
  • (后续更新)【微信小程序】毕业设计 租房小程序开发实战,零基础开发房屋租赁系统小程序

    大家好,我是子木。 以前没接触过小程序,刚好毕业设计选题选到了小程序,有前端基础,于是在提交完开题后开始自学小程序(云开发),属于边学边开发的那种。缝缝补补,最终耗时1个多月写完了我的课题。 这段时间刚写完论文比较闲,所以来记录一下自己的开发过程

    2024年02月11日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包