零
概述
为了程序的模块化管理,任何计算机语言都会设计函数,将多次执行的程序封装为函数,以供任何时候调用。下面介绍C++中的函数使用。
壹
函数简介
数据类型就是前文讲解的内容,经常使用的数据类型有:int、float等等,函数名称的命名与变量名称的命名要保持相同的法则,函数名后面开括号里的内容是调用函数的参数。
依据输入和输出的类型,C++函数可以大致分为以下几类
有输入,有输出
有输入,无输出
无输入,有输出
无输入,无输出
一个函数的完整使用过程,不但包括函数的具体定义,还要在主程序main函数之前进行声明,如
using namespace std;
\\函数声明
输出类型 函数名称(参数1,参数2...)
int main()
{
\\函数调用
return 0;
}
\\函额具体定义
输出类型 函数名称(参数1,参数2...){
程序语句
return 函数返回值;
}
下面依次介绍这几种函数
贰
有输入,有输出
设计一个简单的数学函数,这个函数分为三个阶段,x在不同的阶段y有不同对应的函数值,如
y=x-1 x<0
y=x^2 x>=0 && x<10
y=x^3 x>+10
对应的C++程序为
using namespace std;
double subroutine(double x);
int main(){
double x = 0;
cout << "Please input X:\t" << endl;
cin >> x;
cout << "The Y is:\t" << subroutine(x) << endl;
system("pause");
return 0;
}
double subroutine( double x){
if (x<0){
return x - 1;
}
else if (x >= 0 && x < 10){
return x*x;
}
else{
return x *x*x;
}
}
上面的程序首先向屏幕请求一个输入,然后将用户输入的数值传入函数中,函数判断x的范围并进行相应的计算,当输入的数值为56时,输出的内容为
Please input X:
56
The Y is: 175616
叁
有输入,无输出
这里设计一个函数,这个函向屏幕输出许多行字符,输出的行数是通过参数传进来,这个函数不向主程序返回任何数值,只是向屏幕输出以字符,如
using namespace std;
void subroutine(int x);
int main(){
int x = 0;
cout << "输入行数:\t" << endl;
cin >> x;
subroutine(x);
system("pause");
return 0;
}
void subroutine( int x){
for (int i = 1; i <= x; i++){
cout << "第"<<i<<"行,共计"<<x<<"行。\n" << endl;
}
}
上面的程序接受一个整型参数,这个参数数值就是函向屏幕输入的字符串行数,当输入的数值为8时,输出的结果为
输入行数:
8
第1行,共计8行。
第2行,共计8行。
第3行,共计8行。
第4行,共计8行。
第5行,共计8行。
第6行,共计8行。
第7行,共计8行。
第8行,共计8行。
肆
无输入,有输出
下面的函数没有接接受输入,但是向主程序返回了一个整型的数值,并将该数值赋值给一个整型变量,并且向屏幕输出了结果
using namespace std;
\\define function
int subroutine();
int main(){
int output = 0;
\\call subroutine
output=subroutine();
cout << output << endl;
system("pause");
return 0;
}
\\define function
int subroutine(){
cout << "这是一个无输入但是有数值输出的函数!" << endl;
cout << "这个函数输出的数值内容为:" << endl;
return 23;
}
上面的函数输出结果为
这是一个无输入但是有数值输出的函数!
这个函数输出的数值内容为:
23
伍
无输入,无输出
无输入也无输出的函数定义为
void functionname()
{
\\codes
}
这种函数声明方式,不需要在函数中添加代码return,只需要设置输出类型为void即可。
设置无输入也无输出函数也可以采用如下方式
int functionname()
{
\\codes
return0;
}
上面代码将函数输出类型设置为int,而且在函数程序中添加了return 0,这意味着程序会返回一个0数值,这也是可行的。同样的道理,也可以
string functionname()
{
return "";
}
这就返回了一个空的字符串,也是可行的。
下面给出了一个无输入也无输出的函数示例
using namespace std;
void subroutine();
int main(){
subroutine();
system("pause");
return 0;
}
void subroutine(){
cout << "这是一个没有输入,也没有数值输出的函数。" << endl;
cout << "这个函数仅仅向屏幕输出了这两句话。" << endl;
}
运行上述程序,只会向屏幕输出两句话,而没有任何的数值输出,输出结果为
这是一个没有输入,也没有数值输出的函数。
这个函数仅仅向屏幕输出了这两句话。
陆
函数与数组的联合使用
函数不但可以用来接收一些简单的数据,还可以接收数组和指针类型的数据,这里介绍一个接收数组类型的函数例子
假设要计算一个班级里面所有人一学期的签到次数,就需要创建一个数组,数组的索引就是第几个人,数组的数值就是一个人签到的次数,这里假设一个班级里面有8个人,设计如下程序
using namespace std;
const int people = 8;
int sum(int arr[],int n);
//第六行代码改成这样也是可以运行的,int sum(int [],int );
int main(){
int data;
//班级里面每个人额签到次数
int arr[8] = {1,2,3,4,5,6,7,8};
//调用函数
data = sum(arr, people);
cout << "班级里所有人签到的总次数为:\t"<<data<< endl;
system("pause");
return 0;
}
int sum(int arr[], int n)
{
int m = 0;
for (int i = 0; i < n; i++)
{
m += arr[i];
}
return m;
}
注意第七行的注释,将int sum(int arrr[],int n)修改为 int sum(int [], int)也是可以正确运行的,这是因为函数原型中的参数不需要准确的变量名称,只需要知道数据类型就行。
关于函数、数组和指针的应用,会更加的有意思,下一部分帖子会重点讲解指针与数组的内容。