PTA 习题集6-函数的定义与调用(C++)

目录

7-1 使用函数求最大公约数

输入格式:

输出格式:

输入样例:

输出样例:

 答案:

7-2 计算圆柱体的体积

输入格式:

输出格式:

输入样例:

输出样例:

 答案:

7-3 求10个点到原点的距离和

输入格式:

输出格式:

输入样例:

输出样例:

 答案:

7-4 求阶乘问题

输入格式:

输出格式:

输入样例:

输出样例:

 答案:

7-5 判断数字字符

输入样例:

输出样例:

输入样例:

输出样例:

答案:

7-6 寻找孪生素数

输入格式:

输出格式:

输入样例:

输出样例:

 答案:


7-1 使用函数求最大公约数

要求使用函数编写程序实现一个计算两个整数的最大公约数,其中求最大公约数的函数原型为int gcd(int x,int y);

输入格式:

输入在一行中给出2个整数A和B。

输出格式:

在一行中输出A和B的最大公约数。

输入样例:

在这里给出一组输入。例如:
32 72

输出样例:

8

 答案:

#include <iostream>
using namespace std;
int gcd(int x, int y) 
{
    while (y != 0) 
    {
        int temp = x % y;
        x = y;
        y = temp;
    }
    return x;
}

int main() {
    int a, b;
    cin >> a >> b;
    cout<< gcd(a, b) << endl;
    return 0;
}

7-2 计算圆柱体的体积

输入圆柱的高和半径,求圆柱体积,volume=π×r2×h 。要求定义和调用函数cylinder (r, h )计算圆柱体的体积。

输入格式:

输入在一行中给出2个实数,分别为半径r和高h。

输出格式:

在一行中以“Volume = 值”的形式输出圆柱体的体积,结果保留三位小数。

输入样例:

3.0 10

输出样例:

Volume = 282.743

 答案:

#include <iostream>
#include <iomanip>
using namespace std;
double cylinder(double r,double h)
{
    double pi = 3.1415926;
    double volum = pi * r * r * h;
    return volum;
}

int main()
{
    double r,h;
    cin>>r>>h;
    cout<<"Volume = "<<fixed<<setprecision(3)<<cylinder(r,h)<<endl;
}

7-3 求10个点到原点的距离和

求10个点到原点的距离和。输入10个点的坐标,计算并输出这些点到原点的距离和。定义函数dist(x, y),计算平面上任意一点(x, y)到原点(0, 0)的距离,函数返回值类型是double。

输入格式:

输入在一行中给出10对实数,每对实数对应一个点的横坐标和纵坐标。

输出格式:

在一行中按照“distance = S”的格式输出部分和的值S,精确到小数点后六位,请注意等号的左右各有一个空格。题目保证计算结果不超过双精度范围。

输入样例:

0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9

输出样例:

distance = 63.639610

 答案:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double dist(double x,double y)
{
    double distance = sqrt(x*x + y*y );
    return distance;
}


int main()
{
    double sum = 0;
    double x,y;
    double temp = 0;
    for(int i =1;i<=10;i++)
    {
        cin >>x>>y;
        temp = dist(x,y);
        sum = sum + temp;
    }
    cout<<"distance = "<<fixed<<setprecision(6)<<sum<<endl;
}

7-4 求阶乘问题

输入一个正整数n,输出n!。

输入格式:

输入在一行中给出1个正整数n。

输出格式:

在一行中输出n!的值。

输入样例:

4

输出样例:

24

 答案:

#include <iostream>
using namespace std;
unsigned long long factorial(int a)
{
    unsigned long long n;
    if(a == 0||a==1)
    {
        n = 1;
    }
    else
    {
        n = factorial(a -1)*a;
    }
    return n;
}

int main()
{
    int n;
    cin >>n;
    cout<<factorial(n)<<endl;
}

7-5 判断数字字符

编写函数,判断指定的字符是否是数字字符,如果是函数返回1,否则函数返回0.要求在主调函数中输入该字符,调用函数并输出判断结果。

输入格式:

在一行中给出1个字符。

输出格式:

对于给定输入的字符,输出判断结果yes或no。

输入样例:

6

输出样例:

yes

输入样例:

H

输出样例:

no

答案:

#include <iostream>
using namespace std;
int jud(char c1)
{
    if(c1<='9'&&c1>='0')
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int main()
{
    char c1;
    cin >> c1;
    if(jud(c1) == 1)
    {
        cout<<"yes";
    }
    if(jud(c1) == 0)
    {
        cout<<"no";
    }
}

7-6 寻找孪生素数

数学家希尔伯特在1900年国际数学家大会的报告上提出一个“孪生素数猜想”,即:
存在无穷多个素数p,使得p + 2是素数。p和p+2这一对差为2的素数,被称为“孪生素数”。

看起来,这个猜想是成立的,我们总能找到很多对孪生素数,例如:3和5,5和7,11和13……
这一猜想至今还未被证明。

现在,对于给定的整数n
请寻找大于n的最小的一对孪生素数pq(q=p+2)。

输入格式:

一个不超过7位数字的整数n。

输出格式:

在一行中输出 p q ,中间用空格间隔。

输入样例:

100

输出样例:

101 103

 答案:

#include <iostream>
#include <cmath>
using namespace std;

int Prime(long n)
{
    int i;
    if(n<=1)
    {
        return 0;
    }
    for(i = 2;i<=sqrt(n);i++)
    {
        if(n % i==0)
        {
            break;
        }
    }
    if(i>sqrt(n))
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int main()
{
    long n;
    cin>>n;
    while(true)
    {
        long p = ++n;
        long q = p+2;
        if(Prime(p)&&Prime(q))
        {
            cout<<p<<" "<<q<<endl;
            break;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值