您的位置:首页 > 编程语言 > C语言/C++

用C/C++解决一些数学问题(一)

2015-05-26 17:09 477 查看
1:高中有道数学题是求n!的题,意思是求出1*2*3*....*n,现在做一个这样的程序

      要求:输入n值(n必须是整形),然后求出n!,需要要将这个功能写入函数,然后直接调用函数

      代码如下:

#include <iostream>
using namespace std;
int fun1();                         //函数声明
void main()
{
while(1)
{
fun1();
}

}
int fun1()
{
int n;
int pro=1;
cout<<"请输入你要求的阶乘:";
cin>>n;
if(n<=0||(int)n!=n)                           //n做一个判断,必须是>0的整数,不符合的处理方式
{
cout<<"请输入一个整数"<<endl;
pro=0;
return pro;
}
for (int i = 1; i<=n; i++)
{
pro=pro*i;
}
if(pro<=pow(2,32)&&pro>0)
{
cout<<pro<<endl;
}
else  //对计算结果溢出
{
cout<<n<<"的阶乘已经大于计算机计算范围"<<endl;
}

return pro;
}

运行结果:



2:记得 初中还是有小学背诵的质数(素数表),能不能通过c/C++输出呢?

      首先找了下素数定义:这样的整数,它除了能表示为它自己和 1 的乘积以外,不能表示为任 何其它两个整数的乘积

      有了这个定义基础后,我需要求出100以内的素数,并且将1000以内的素数输出来,首先得做一个1~100的循环,对每个数进行判断,如果是素数,就输出,如果不是,就进入下个循环:代码如下:

#include <iostream>
using namespace std;
bool fun1(int num);
void main()
{
for(int i=2;i<=1000;i++)
{
if(fun1(i)==true)
{
cout<<i<<'\t';
}
}
}
bool fun1(int num)
{
if(num==2)
{
return true;
}
for(int i=2;i<num;i++)
{
if(num%i==0)
{
return false;
}
}
return true;
}
运行结果:



3:在实际计算三角形的过程当中,我们知道3个边的长度,想求出三角形的面积,每次计算起来很麻烦,我们这个也可以通过C/C++编程实现

      首先我们得清楚通过三边计算面积的海伦公式,S=√[P(P-A)(P-B)(P-C)],其中p=三边和/2,有了这个公式,我们将其写入函数代码如下:

#include <iostream>
using namespace std;
double fun1(double a,double b,double c);                         //函数声明
void main()
{
while(1)
{
double a,b,c,s;
cout<<"输入三边:";
cin>>a>>b>>c;
s=fun1(a,b,c);
cout<<"面积:"<<s<<endl;
}
}
double fun1(double a,double b,double c)
{
double p=(a+b+c)/2;
double s=sqrt(p*(p-a)*(p-b)*(p-c));
return s;
}
运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息