一、知识点内容
(一) 程序结构
第一部分:1,预处理指令;2,符号常量定义;3函数声明。
第二部分:主函数;
第三部分:函数的定义。
(二) 传递方式
分为三种:传数值,传地址,传引用。
1,传数值
传递过程:首先计算出实参表达式的值;接着给对应的形参变量分配一个存储空间;然后把以求出的实参表达式的值存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用。
注:被调用函数本身不对实参进行操作,即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。
例如:
#include<bits/stdc++.h>
using namespace std;
void swap(int,int);
int main()
{
int a=3,b=4;
swap(a,b);
cout<<a<<b<<endl;//输出的a=4,b=3.
return 0;
}
void swap(int x,int y)
{
int t=x;x=y;y=t;
}
2,传地址
如果在函数定义时,将形参说明成指针,调用函数时,就需要确定指定地址值形式的实参。
注意:传地址和传数值的不同在于:形参指针和实参指针指向同一个地址。因此,被调用函数中对形参指针所指向的地址内容的任何改变都会影响到实参。
例如
#include<iostream>
using namespace std;
void swap(int *,int *);
int main()
{
int a=3,b=4;
swap(&a,&b);
cout<<a<<b<<endl;//输出a=4,b=3.
return 0;
}
void swap(int *x,int *y)
{
int t=*x;
*x=*y;
*y=t;
}
3,传引用。
在函数定义时,在形参前面加上引用运算符“&”。(注意此处的&不是取地址的意思)
例如:#include<iostream>
using namespace std;
void swap(int &x,int &y);
int main()
{
int a=3,b=4;
swap(a,b);
cout<<a<<b<<endl;//输出的a=4,b=3
return 0;
}
void swap(int &x,int &y)
{
int t=x;
x=y;
y=t;
}
二、相关题型
比较经典的一种题型:验证哥德巴赫猜想
#include<bits/stdc++.h>
using namespace std;
int prime(int x);
int main()
{
int n,n1,n2;
cin>>n;
for(int n1=2;n1<=n/2;n1++)
{
n2=n-n1;
if(prime(n1))
if(prime(n2))
cout<<n<<" = "<<n1<<" + "<<n2<<endl;
}
return 0;
}
int prime(int x)
{
int j;
if(x==2)
return 1;
j=2;
while(j<=sqrt(x)&&x%j!=0)j++;
if(x%j==0)
return 0;
else
return 1;
}
<bits/stdc++.h>
using namespace std;
int prime(int x);
int main()
{
int n,n1,n2;
cin>>n;
for(int n1=2;n1<=n/2;n1++)
{
n2=n-n1;
if(prime(n1))
if(prime(n2))
cout<<n<<" = "<<n1<<" + "<<n2<<endl;
}
return 0;
}
int prime(int x)
{
int j;
if(x==2)
return 1;
j=2;
while(j<=sqrt(x)&&x%j!=0)j++;
if(x%j==0)
return 0;
else
return 1;
}
三、函数练习部分做题心得:
1、在做题之前一直比较困扰的问题是自定义函数后面的括号中需要定义几个变量以及变量的数据类型,后来在做题的过程中, 明白,括号中定义的变量类型和个数是根据需要进行次函数运算的数据度数据类型及个数。
2、要有方法的去做题,而不是刷题,要做到认识题型,进而用熟悉的方法去解决问题