C++程序设计基础2:函数

163 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

  • 本文为笔者大一《C++程序软件设计》课程章节实验报告,现将题目整理并分享,希望能够帮助正在学习C++的小伙伴!
  • 本文将学习到的编程技能包括:函数的概念、函数的定义、递归思想、各种逻辑结构、一些基本运算...

知识提纲

  • 函数
  • 递归思想
  • 条件、循环
  • 运算

一、计算三角形面积

  • 题目:求三角形的面积。已知三角形的三边a、b、c,则三角形的面积为area=s(sa)(sb)(sc)area=\sqrt{s(s-a)(s-b)(s-c)},其中,s=(a+b+c)/2
  • 要求:

(1)三角形的三边的边长由cin输入,需要判断这三边是否构成一个三角形。若是,则计算其面积并输出,否则输出“错误:不能构成三角形!”。

(2)程序中要包含两个函数,一个函数判断是否构成三角形,另一个函数计算三角形的面积。

  • 代码:
#include "pch.h"
#include <iostream>
using namespace std;

int Judge(double a, double b, double c)
{
	int t;
	if (a + b > c&& a + c > b && b + c > a) 
	{
		t = 1; cout << "能构成三角形\t";
	}
	else 
	{
		t = 0; cout << "不能构成三角形\t";
	}
	return t;
}

double Area( double a, double b, double c)
{	
	double s,area;
	s = (a + b + c) / 2;
	area = sqrt(s*(s - a)*(s - b)*(s - c));
	return area;
}

int main()
{
	double a, b, c,area;
	int s;
	cout << "请输入三角形三边长,a,b,c\t";
	cin >> a >> b >> c;
	s=Judge(a, b, c);
	if (s == 1) 
	{
		cout <<"三角形面积=" << Area(a, b, c);
	};
}
  • 结果: 在这里插入图片描述

二、计算n的i次幂之和

  • 题目:编程求下式值,其中ni用函数来实现,且设参数n的默认值为2: n1+n2+n3+n4+...+n10,n=1,2,3n^1+n^2+n^3+n^4+...+n^{10}, n=1,2,3
  • 代码:
#include "pch.h"
#include <iostream>
using namespace std;
int SUM(int i,int n = 2);
int SUM( int i ,int n)
{
	int s,t,sum=0;
	for(t=1;t<=i;++t)
	{
		s = pow(n, t);
		sum  += s;	
	}
	return sum;
}	

int main()
{
	for (int n = 1; n < 4; ++n)
	{
		int sum;
		sum = SUM(10, n);
		cout << "sum("<<n<<","<<10<<")="<<  sum<<endl;
	}
}
  • 结果: 在这里插入图片描述

三、整数转字符串(递归法)

  • 题目:用递归法将一个整数n转换成字符串。如输入1234,应输出字符串“1234”。n的位数不确定,可以是任意位数的整数。
  • 代码:
#include "pch.h"
#include <iostream>
using namespace std;
void convert(int n)
{
	int i;
	char c;
	if ((i = n / 10) != 0)
		convert(i);
	c = n % 10 + '0';
	cout<< c;
}
int main()
{
	int number;
	cout << "input an integer:";
	cin >> number;
	cout << "output:" << endl;
	cout << '"';
	if (number < 0)
	{
		cout << "-";
		number = -number;
	}
	convert(number);
	cout << '"';
	cout << endl;
	return 0;
}
  • 结果: 在这里插入图片描述

四、计算组合数

  • 题目:编写程序,计算下面公式并输出结果。 Cnm=n!(nm)!m!C_n^m=\frac{n!}{(n-m)!m!}
  • 要求: (1)编写一个函数计算n! (2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。 (3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。 (4)运行程序,输出计算 C85C_8^5, C52C_5^2, C70C_7^0
  • 代码:
#include "pch.h"
#include <iostream>
using namespace std;

int factorial(int n) //阶乘函数
{
	int i,a=1;
	for (i = n-1; i >0; --i)
	{
		n = n * i;	
	}
	return n;
}

int CN(int n, int m) //组合数函数combinatorial number
{
	int N, M,NM,C;
	if (m == 0) C = 1;
	else
	{
		N = factorial(n);
		M = factorial(m);
		NM = factorial(n - m);
		C = N / (NM*M);
	}

	return C;
}


int main()
{
	int n, m,C,k=1;
	for(;k!=0;)
	{
	cout << "请输入要求的组合数的参数n,m(n>=m):";
	cin >> n >> m;
	if (n < m||n<0||m<0) { k = 0; cout << "输入有误!\n"; }
	else 
	{
		k = 1;
		C = CN(n, m);
		cout << "C(" << n << "," << m << ")=" << C << endl;;
	}
	}
	cout << "C(" << 8 << "," << 5 << ")=" << CN(8,5)<<endl;
	cout << "C(" << 5 << "," << 2 << ")=" << CN(5, 2)<<endl;
	cout << "C(" << 7 << "," << 0 << ")=" << CN(7, 0);
  • 结果: 在这里插入图片描述