本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
- 本文为笔者大一《C++程序软件设计》课程章节实验报告,现将题目整理并分享,希望能够帮助正在学习C++的小伙伴!
- 本文将学习到的编程技能包括:函数的概念、函数的定义、递归思想、各种逻辑结构、一些基本运算...
知识提纲
- 函数
- 递归思想
- 条件、循环
- 运算
一、计算三角形面积
- 题目:求三角形的面积。已知三角形的三边a、b、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:
- 代码:
#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;
}
- 结果:
四、计算组合数
- 题目:编写程序,计算下面公式并输出结果。
- 要求: (1)编写一个函数计算n! (2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。 (3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。 (4)运行程序,输出计算 , ,
- 代码:
#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);
- 结果: