目录
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的最小的一对孪生素数p
和q
(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;
}
}
}