广州大学学生实验报告
开课学院及实验室:计算机学院/电子信息楼 202x年 月 日
学 院 | 计算机 | 年级/专业/班 | 计科 | 姓名 | Great Macro | 学号 | |
实验课程名称 | 程序设计基础 | 成绩 | |||||
实验项目名称 | 实验2函数 | 指导老师 |
(***(1)报告只能为文字和图片;(2)实验项目名称不能有任何改动;(3)必须填写正确的姓名和学号;否则会影响最后成绩的统计,后果自负***)
一、实验目的及要求
1.掌握函数的定义方法,及函数调用的形式;
2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;
3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;
4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;
5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。
二、实验设备与平台
1. 实验设备:计算机;
2. 平台:Windows操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013/2015/2017/2019;或适合的C/C++编程环境。
三、实验内容及步骤
编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。
1、求三角形的面积。已知三角形的三边a、b、c,则三角形的面积为
(1)三角形的三边的边长由cin输入,需要判断这三边是否构成一个三角形。若是,则计算其面积并输出,否则输出“错误:不能构成三角形!”。
(2)程序中要包含两个函数,一个函数判断是否构成三角形,另一个函数计算三角形的面积。
#include <iostream> #include <math.h> using namespace std; int check(float a, float b, float c) { if(a + b > c && a + c > b && b + c > a && a - b < c && a - c < b && b - c < a) { return 1; } return 0; } float Area(float a, float b, float c) { float s; s = (a + b + c) / 2; return sqrt(s*(s-a)*(s-b)*(s-c)); } int main() { float a, b, c; cout << "请输入三角形的三条边(用空格分开):"; cin >> a >> b >> c; if(check(a, b, c)) { cout << "该三角形的面积是:" << Area(a, b, c) << endl; } else { cout << "所输入的三边无法构成三角形!" << endl; } return 0; }
2、编程求下式值,其中ni用函数来实现,且设参数n的默认值为2:
#include <iostream> using namespace std; int fun(int i, int n = 2) { if(n <= 0) { return 0; } int j, sum; for(j = 1, sum = 1; j <= i; j++) { sum *= n; } return sum; } int main() { int i, n, sum; cout << "请输入n的值:"; cin >> n; for(i = 1, sum = 0; i <= 10; i++) { sum += fun(i, n); } cout << "计算n^1+n^2+...+n^10 = " << sum << endl; return 0; }
3、用递归法将一个整数n转换成字符串。如输入1234,应输出字符串“1234”。n的位数不确定,可以是任意位数的整数。
#include <iostream> #include <string.h> using namespace std; void fun(int n, char *s) { // 最高位,直接放到s[0]中 if(n > 0 && n < 10) { *s = char('0' + n); return; } // 递归调用从最高位开始一直加到最低位 fun(n / 10, s); // strlen(s) 用来计算数组的长度 s[strlen(s)] = char('0' + n % 10); } int main() { int n; char s[15] = {'\0'}; cout << "请输入一个整数:"; cin >> n; fun(n, s); cout << "转换成字符串为:"<< s << endl; return 0; }
4、编写程序,计算下面公式并输出结果。
(1)编写一个函数计算n!
(2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。
(3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。
(4)运行程序,输出计算,
#include <iostream> using namespace std; // 计算n! int fun(int n) { if(n <= 1) { return 1; } int i, sum; for(i = 2, sum = 1; i <= n; i++) { sum *= i; } return sum; } int main() { int n, m; cout << "请输入组合数C(n, m)的n 和 m:"; cin >> n >> m; if(n < m) { cout << "输入的m值不应该大于n" << endl; return 0; } cout << "C(" << n << "," << m << ") = " << fun(n) / (fun(n - m) * fun (m)) << endl; cout << "C(8, 5) = " << fun(8) / (fun(3) * fun(5)) << endl; cout << "C(5, 2) = " << fun(5) / (fun(3) * fun(2)) << endl; cout << "C(7, 0) = " << fun(7) / (fun(7) * fun(0)) << endl; return 0; }