程序开发实训 【专题一】 函数一


2020-05-02 作业笔记 程序开发实训

包含题目

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(并假设三个边长度的单位一致,在本编程题中忽略其单位),则可以利用公式求得三角形的面积,

gs

其中: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

Last Updated: 5/30/2020, 10:01:03 AM