程序开发实训 【专题一】 函数一
包含题目
1、素数判断
2、直角三角形
3、直角三角形,求最小余弦
4、求三角形面积
5、整数各位数求和
6、玫瑰花数
注意
1.以下代码仅供参考,不代表最优解。
2.代码的运行结果与编译环境有关,以下代码均通本地测试,如果代码存在无法编译或输出异常,请检查运行环境。
3.如果发现问题或者您有更优的解,欢迎加群交流。
# 1、素数判断
【问题描述】
编写一个函数 isprime(n).判断整数 n 是否为素数.编写程序使用此函数,当输入一个整数时,对它进行判断,当为素数时,输出 1.否则,输出 0.
【输入形式】控制台输入一个整数.
【输出形式】控制台输出判断结果 0 或者 1.
【样例输入】45
【样例输出】0
#include<iostream>
#include<math.h>
using namespace std;
int isprime(int n)
{
int flag = 1;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
flag = 0;
break;
}
}
return flag;
}
int main()
{
int n;
cin>>n;
cout<<isprime(n);
return 0;
}
# 2、直角三角形
【题目描述】
任意输入三条边的边长(实数类型),判断能否组成三角形,如果不可以组成三角形,程序输出“It is not a triangle”;如果可以组成三角形,进而判断该三角形是否是直角三角形,如果是直角三角形,程序输出“It is a right triangle”,否则输出“It is not a right triangle”。
【输入形式】三条边的边长。
【输出形式】对三条边的判断结果。
【样例输入】6 8 10
【样例输出】It is a right triangle
#include <iostream>
#include <math.h>
using namespace std;
int isTriangle(float a, float b, float c)
{
if ((a + b <= c) || (a + c <= b) || (b + c <= a))
return 0;
else
return 1;
}
int isRightTriangle(float a, float b, float c)
{
if (pow(a, 2) + pow(b, 2) == pow(c, 2) || pow(a, 2) + pow(c, 2) == pow(b, 2) || pow(c, 2) + pow(b, 2) == pow(a, 2))
return 1;
else
return 0;
}
int main()
{
float a, b, c;
cin >> a >> b >> c;
if (isTriangle(a, b, c) != 1)
cout << "It is not a triangle" << endl;
else if (isRightTriangle(a, b, c) == 1)
cout << "It is a right triangle" << endl;
else
cout << "It is not a right triangle" << endl;
return 0;
}
# 3、直角三角形,求最小余弦
【问题描述】
任意输入三条边的边长(整数类型),判断能否组成三角形,如果不可以组成三角形,程序输出“It is not a triangle”;如果可以组成三角形,进而判断该三角形是否是直角三角形,如果不是直角三角形,程序输出“It is not a right triangle”,否则输出最小余弦值的最简分式。比如三边分别是 6、8、10 时,最小的余弦值是 6/10,那么输出的结果应该是 3/5。
【输入形式】三条边的边长(整数类型)(无序)
【输出形式】最小余弦值的最简分式
【样例输入】8 6 10
【样例输出】3/5
#include <iostream>
#include <math.h>
#include <cmath>
using namespace std;
int isTriangle(int a, int b, int c)
{
if ((a + b <= c) || (a + c <= b) || (b + c <= a))
return 0;
else
return 1;
}
int isRightTriangle(int a, int b, int c)
{
if (pow(a, 2) + pow(b, 2) == pow(c, 2) || pow(a, 2) + pow(c, 2) == pow(b, 2) || pow(c, 2) + pow(b, 2) == pow(a, 2))
return 1;
else
return 0;
}
void reduce(int m, int n)
{
int x = m, y = n;
while (x != y)
{
if (x > y)
x = x - y;
else
y = y - x;
}
cout << m / x << "/" << n / x << endl;
}
int main()
{
int a, b, c;
cin >> a >> b >> c;
if (isTriangle(a, b, c) != 1)
cout << "It is not a triangle";
else if (isRightTriangle(a, b, c) != 1)
cout << "It is not a right triangle";
else
{
int n = max(max(a, b), c);
int m = min(min(a, b), c);
reduce(m, n);
}
}
# 4、求三角形面积
【问题描述】
若已知三角形三个边的长度分别为 a,b,c(并假设三个边长度的单位一致,在本编程题中忽略其单位),则可以利用公式求得三角形的面积,
其中:s=(a+b+c)/2。编程实现从控制台读入以整数表示的三个边的长度(假设输入的长度肯定可以形成三角形),然后利用上述公式计算面积并输出,结果小数点后保留 3 位有效数字。
【输入形式】
从控制台输入三个整数表示三角形三个边的长度,以空格分隔三个整数。
【输出形式】
向控制台输出求得的三角形的面积,小数点后保留三位有效数字。
【输入样例】4 4 6
【输出样例】7.937
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
float area(int a, int b, int c)
{
int s;
float S;
s = (a + b + c) / 2;
S = sqrt(s * (s - a) * (s - b) * (s - c));
return S;
}
int main()
{
int a, b, c;
cin >> a >> b >> c;
cout << fixed << setprecision(3) << area(a, b, c);
return 0;
}
# 5、整数各位数求和
【问题描述】
编写一个函数 sum(i),将输入的整形参数 i 的各位求和,返回求和结果。在 main()函数中测试此函数,从键盘输入整数 n(n 在区间[1,20]),然后再输入 n 个非负整数,对于每一个非负整数调用 sum 函数求各位数和,将结果输出到屏幕。
【输入形式】
从键盘输入一个正整数 n,然后有 n 行输入,分别表示 n 个非负整数。
【输出形式】
在屏幕上分别输出 n 行,第 i 行依次对应第 i 个非负整数的各位之和。
【输入样例】
4
234567
0
999999
000432
【输出样例】
27
0
54
9
#include <iostream>
using namespace std;
int sum(int i)
{
int s = 0;
while (i)
{
s += i % 10;
i /= 10;
}
return s;
}
int main()
{
int n;
cin >> n;
int numbers[n];
for (int i = 0; i < n; i++)
{
int number;
cin >> number;
numbers[i] = sum(number);
}
for (int i = 0; i < n; i++)
{
cout << numbers[i] << endl;
}
return 0;
}
# 6、玫瑰花数
【题目描述】
如果一个四位数各位数字的四次方之和恰好等于该数本身,那么这个四位数就是一个玫瑰花数,例如: 1634=14+64+34+44=1+1296+81+256 写一个函数,判断某一个四位数是不是玫瑰花数,如果是玫瑰花数返回 1,否则返回 0。并在主函数中调用该函数,最终输出所有的玫瑰花数。
【输入形式】没有输入。
【输出形式】所有的四位玫瑰花数。(每行中仅显示一个玫瑰花数)
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int x, y, n, i, j;
x = 1000;
do
{
y = x / 1000;
n = x / 100 % 10;
i = x / 10 % 10;
j = x % 10;
if (x == pow(y, 4) + pow(n, 4) + pow(i, 4) + pow(j, 4))
cout << x << endl;
x = x + 1;
} while (x <= 9999);
return 0;
}
# 评论交流
最后,如果你觉得笔记对你有帮助,不妨赞赏一杯可乐😅
QQ 交流群 217394861