网站自助建站软件,广东华商网络科技有限公司,网站建设的主要产品,网站制作一薇目录
一、实验要求
二、实验原理
1.函数头
2.函数体
3.函数的定义及使用
三、实验内容
1. sum函数
代码
截图
分析
2. sum函数
代码
截图
分析
3. rank_grade函数
代码
截图
分析
4. rank_grade函数
代码
截图
分析
5. 函数的嵌套使用
代码
截图
分析…目录
一、实验要求
二、实验原理
1.函数头
2.函数体
3.函数的定义及使用
三、实验内容
1. sum函数
代码
截图
分析
2. sum函数
代码
截图
分析
3. rank_grade函数
代码
截图
分析
4. rank_grade函数
代码
截图
分析
5. 函数的嵌套使用
代码
截图
分析
6. inputt函数
代码
截图
分析
7.函数的递归
代码
截图
分析 一、实验要求
熟悉定义函数的方法。熟悉声明函数的方法。熟悉调用函数时实参与形参的对应关系以及“值传递”的方式。学习对多文件的程序的编译运行。
二、实验原理
在C语言中函数是一种可重复使用的代码块用于执行特定的任务。函数的定义包括函数头和函数体两部分。
1.函数头
函数头包含以下信息 1.返回类型指定函数返回的数据类型如int、float、void等。 2.函数名函数的标识符用于在程序中调用该函数。 3.参数列表函数接受的输入参数可以包含零个或多个参数每个参数都有自己的数据类型和名称。 2.函数体
函数体是函数的具体实现部分包含一系列要执行的语句。在函数体中可以定义局部变量、执行操作和控制流语句等。函数体内的代码在函数调用时被执行。
3.函数的定义及使用
函数的定义原理如下 1.在程序中声明函数包括函数头和函数体。 2.在需要调用函数的地方使用函数名和合适的参数列表进行函数调用。 3.程序执行到函数调用语句时会跳转到函数定义的位置并将控制权转移到函数体中。 4.在函数体中执行函数内部的代码包括变量的初始化、操作和控制流语句等。 5.函数执行完毕后将返回值如果有返回给函数调用处并将控制权返回给函数调用处继续执行。 函数的定义和使用可以将程序分解为更小的模块提高代码的可读性和可维护性。通过函数的参数和返回值可以在函数之间传递数据和结果。这样的模块化设计使得程序更易于理解、调试和修改。
三、实验内容
1. sum函数
定义一个函数功能为返回两个整型数字的和。
代码
#includeiostream
using namespace std;
int sum(int a,int b) {return a b;
}
int main() {int input1, input2,answer;cin input1 input2;answer sum(input1, input2);cout answer;return 0;
}截图 分析 上述代码定义了一个int型函数叫做sum会返回一个int型值。 在定义函数名时不能随便定义不能定义库中已有的函数会发生函数重定义的错误。函数重定义错误通常会导致编译失败并生成相应的错误消息。 由于需要输入两个数则参数列表即括号内部应包含两个参数分别为a和b等于定义了a和b在函数内部就可以使用a和b。 int型一定只会返回一个值而且是int型。sum(int a,int b)相当于一个int型的值。 在函数的使用中只需把要使用的数填补到函数中如上述代码将input1和input2放入。 2. sum函数
定义一个函数功能为返回两个float型数字的和。
代码
#includeiostream
using namespace std;
float sum(float a,float b) { return ab;
}
int main() {float a,b,ans;cin a b;ans sum(a, b);cout ans;return 0;
}截图 分析 因为要求返回float型数字的和只需把int改为float即可 3. rank_grade函数
定义一个函数分数低于60评级为4位于60-80分评级为3位于80-90分评级为2位于90-100分评级为1
代码
#includeiostream
using namespace std;
int rank_grade(int a) {if (a 60) {return 4;}else if (a 80) {return 3;}else if (a 90) {return 2;}else if (a 100) {return 1;}
}
int main() {int grade,rank;cout 请输入你的分数;cin grade;rank rank_grade(grade);cout 你的等级为rank;return 0;
}截图 分析 这个函数只需要一个输入参数即分数但是可能会返回不同的值 利用if来判断最后返回哪个评级但是这个函数有一个问题当输入比100大的数字即输入不规范的情况下它会返回1这是因为这个函数在运行过程中最后运行到return 1 在函数的最后加入一个 return 0就会返回0 因为函数会在运行到符合条件的return处结束 4. rank_grade函数
定义一个函数分数低于60评级为D位于60-80分评级为C位于80-90分评级为B位于90-100分评级为A
代码
#includeiostream
using namespace std;
char rank_grade(int a) {if (a 60) {return D;}else if (a 80) {return C;}else if (a 90) {return B;}else if (a 100) {return A;}
}
int main() {int grade;char rank;cout 请输入你的分数;cin grade;rank rank_grade(grade);cout 你的等级为 rank;return 0;
}截图 分析 由于要返回字符要将int型改为char型且一个函数不可能返回不同类型的数。 5. 函数的嵌套使用
实现函数的加减乘除共输入三个数返回一个数字前两个数字是需要参加运算的数第三个数代表运算符输入1代表加法输入2代表减法输入3代表乘法输入4代表除法。
代码
#includeiostream
using namespace std;
int addd(int a,int b) { return ab;
}
int decc(int a, int b) {return a - b;
}
int mull(int a, int b) {return a * b;
}
int divv(int a, int b) {return a / b;
}
int sortt(int a,int b,int c) {if (c 1) {return addd(a, b);}else if (c 2) {return decc(a, b);}else if (c 3) {return mull(a, b);}else if (c 4) {return divv(a, b);}
}
int main() {int a,b,c,ans;cout 请输入两个数字;cin ab;cout 请输入运算规则;cin c;ans sortt(a, b, c);cout 答案为ans;return 0;
}截图 分析 定义了五个函数前四个函数是实现加减乘除的功能第五个函数是判断实现什么运算符的功能第五个函数会用到前四个函数所以定义时放在它们的后面定义否则会报错 如下 所以要注意函数定义顺序 6. inputt函数
定义一个函数可以实现输入输出功能
代码
#includeiostream
using namespace std;
void inputt() {string s;cin s;
}
int main() {inputt();return 0;
}截图 分析 函数不需要返回任何东西则使用void声明函数即可void不会返回任何东西但这不意味着void定义的函数没什么作用上述所有函数实现的功能都可以用void函数实现有兴趣的同学可以试一下全局变量。 7.函数的递归
兔子数列问题也称为斐波那契数列Fibonacci sequence是一个经典的数学问题起源于公元13世纪的意大利数学家斐波那契Leonardo Fibonacci的著作《算盘书》Liber Abaci。
在《算盘书》中斐波那契提出了一个理想化的问题假设有一对刚出生的兔子从第三个月起每个月都会生一对新兔子一雄一雌而新生的兔子在出生后第三个月也开始生兔子。假设所有的兔子都不会死亡问在第n个月时共有多少对兔子
斐波那契数列的定义如下
第0个月0对兔子 第1个月1对兔子 第2个月1对兔子 第3个月及以后前两个月的兔子总数之和 用数学符号表示为
F(0) 0 F(1) 1 F(2) 1 F(n) F(n-1) F(n-2)其中 n ≥ 3 斐波那契数列的前几个数字为0, 1, 1, 2, 3, 5, 8, 13, 21, ...
代码
#includeiostream
using namespace std;
int fac(int n)
{if (n 0) {return 0;}else if (n 1) {return 1;}else if (n 2) {return 1;}else {return fac(n - 1) fac(n - 2);}
}
int main() {int n;cin n;cout fac(n);return 0;
}截图 分析 当n大于等于3时不能直接得到结果得通过fac(n-1)和fac(n-2)一直推直到可以直接从函数中得知fac的值会不断调用fac原理是栈数据结构会学到。