一、基础知识
函数的定义
1、函数定义的语法形式
数据类型 函数名(形式参数表)
{
函数体 //执行语句
}
2、函数定义的例子
定义一个函数,返回两个数中的较大数。
int max(intx,inty)
{
return x>y?x:y;
}
该函数返回值是整形,有两个整形的形参,用来接收实参传递的两个数据,函数体内的语句是求两个数中的较大者并将其返回主调函数。
3、函数的形式
函数的形式从结构上说可以分为三种:无参函数、有参函数和空函数。他们的定义形式都相同。
注:空函数不完成什么工作,只占据一个位置。在大型程序设计中,空函数用于扩充函数功能。
二、函数的声明和调用
1.函数的声明
例:int js(int n);
也可以:
int js(int);
2.函数的调用
例:函数名(实参列表) //例题中语句sum+=js(i)
3.函数的返回值
例:return(表达式); //例题中语句return s;
*三、函数的传值调用
1.传值调用
这种调用方式是将实参的数据值传递给形参,即将实参拷贝一个副本存放在被调用的函数的栈区中。在被调用函数中,形参值可以改变,但不影响主函数的实参值。参数传递方向只是从实参到形参,简称单项值传递。
using namespace std;
void swap(int a,int b)
{
int tmp=a;a=b;b=tmp;
}
int main()
{
int c=1,d=2;
swap(c,d);
cout<<c<<''<<d<<endl;
return 0;
} //程序输出为:1 2
*2.传址调用
这种调用方式是将实参变量的地址值传递给形参,这时形参是指针,即让形参的指针指向实参地址,这里不再是将实参拷贝一个副本给形参,而是让形参直接指向实参,这就提供了一种可以改变实参变量的值的方法。现在用传址调用来实现swap:
#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
int tmp=a;a=b;b=tmp;
}
int main()
{
int c=1,d=2;
swap(c,d);
cout<<c<<''<<d<<endl;
return 0;
} //程序输出为:2 1
*引用
指针变量
二、典型例题
1!+2!+3!+4!+.....+n!的和
#include<bits/stdc++.h>
using namespace std;
int jiecheng(int a)
{
int i,b=1;
for(i=1;i<=a;i++)
b*=i;
return b;
}
int main()
{
int n,k,m=0;
cin>>n;
for(k=1;k<=n;k++)
{
m+=jiecheng(k);
}
cout<<m;
return 0;
}
验证歌德巴赫猜想
#include<bits/stdc++.h>
using namespace std;
int sushu(int n);
int main()
{
int x,j;
cin>>x;
for(j=2;j<=x/2;j++)
{
if(sushu(j))
if(sushu(x-j))
{
cout<<x<<" "<<"="<<" "<<j<<" "<<"+"<<" "<<(x-j);
cout<<endl;
}
}
return 0;
}
int sushu(int n)
{
int i,t=1;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)t=0;
if(t==1)
return 1;
else
return 0;
}
水仙花数
#include<bits/stdc++.h>
using namespace std;
int lifang(int n);
int main()
{
int j;
for(j=100;j<=1000;j++)
if(j==lifang(j))
cout<<j<<" ";
return 0;
}
int lifang(int n)
{
int s=0,t;
int i;
for(i=1;i<=3;i++)
{
t=n%10;
s+=t*t*t;
n=floor(n/10);
}
return s;
}
三、个人总结
经过这段时间的学习,我觉得我对c++函数部分有了一定的体会,感觉函数就像是数学里面的公式,尤其是学到递归时那典型的f(n)=n*f(n-1)让我有一种特别的熟悉感。从这里我越发认识到c++与数学有着很深的联系。在做函数这部分的练习时,最真实的体会就是将以前的原题换了一种新方式去做,虽然用函数这种方式去做题在当前我们这些简单题来说可能会显得有些自找麻烦,但是我知道函数的思想对于日后的大工程量的编程里是必不可少的,它可以让我们的编程变得条理,就如老师说的增加程序的“可读性”。同时,我感觉对函数思想的掌握可以使我的头脑更清晰,我感觉我学到了一种很有用(不只是编程)的思想。