扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
有几个办法可以实现这个任务。
创新互联建站是一家集网站建设,辽中企业网站建设,辽中品牌网站建设,网站定制,辽中网站建设报价,网络营销,网络优化,辽中网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
最简单地,定义一个宏就可以了:
#define PI 3.1415926
宏替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。这种替换在预编译时进行,称作宏展开。解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,编译顺会自动将源程序中的PI替换为3.1415926。
还有一种办法是定义一个常量(使用const):
const double Pi=3.1415926;
const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。
const关键字的作用主要有以下几点:
(1)可以定义const常量,具有不可变性。
例如:const int Max=100; Max++会产生错误;
(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;
(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,一变都变!
如(1)中,如果想修改Max的内容,只需要:const int Max=you want;即可!
////////////////////////////////////////////////////////////////////////////////////////////////
//(有错,这样不能修改,会报重复定义的错误)
///////////////////////////////////////////////////////////////////////////////////////////////
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错;
例如: void f(const int i) { i=10;//error! }
(5) 可以节省空间,避免不必要的内存分配。 例如:
#define PI 3.14159 //常量宏
const double Pi=3.14159; //此时并未将Pi放入RAM中 ......
double i=Pi; //此时为Pi分配内存,以后不再分配!
double I=PI; //编译期间进行宏替换,分配内存
double j=Pi; //没有内存分配
double J=PI; //再进行宏替换,又一次分配内存!
const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干份拷贝。
(6) 提高了效率。
编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
C语言函数中π一般用宏进行定义:
#define PI 3.14
因为π是无限不循环小数,计算机的存储不可能全部存下来,所以只能近似表示。
圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。π也等于圆形之面积与半径平方之比。是精确计算圆周长、圆面积、球体积等几何形状的关键值。 在分析学里,π可以严格地定义为满足sinx = 0的最小正实数x。
圆周率用字母 (读作pài)表示,是一个常数(约等于3.141592654),是代表圆周长和直径的比值。它是一个无理数,即无限不循环小数。在日常生活中,通常都用3.14代表圆周率去进行近似计算。而用十位小数3.141592654便足以应付一般计算。即使是工程师或物理学家要进行较精密的计算,充其量也只需取值至小数点后几百个位。
首先,while循环,条件是某一项,也就是t的绝对值小于10的-6次方,fabs是求绝对值的函数。
pi初始化为0,然后在循环里,就按照公式,首先先把t的第一次的值加上,也就是1,然后把t进行处理,用n来表示分母,s代表每项的符号,然后把t值改变为下一项,像第一次循环中,最后t就会变成1/3,然后把t会拿去判断,如果没在范围内,就继续这个步骤,pi加上t,然后继续把t进行处理,变成下一项,如此循环,等判断符合条件时,就会跳出,然后再把pi值乘以4就可以了。因为现在求出的pi相当于是原公式中的右边的部分,左边是除以了4的,最后乘回去就可以了。
整个过程就是模拟了一遍公式,很简单的。
#includestdio.h
#includemath.h//开根号我用了数学库函数
int main()
{
double Pi=2,x=0,t;//我把第一项2作为Pi的初始值
while(1)
{
x=sqrt(x+2);//x是分母
t=2/x;//t是现在要乘的数
Pi=Pi*t;
if(t-11e-14) break;//因为t一定大于1,就这么写了;精确到小数点后14位
}
printf("%.14lf\n",Pi);//小数点后14位
return 0;
}
#include "stdio.h"
#include "math.h"
main()
{
int n = 1;
float pi = 0.0, m, k;
m = 2 * n - 1;
while ( fabs( pi ) 1e-6 ) /*你看一下,这个是什么意思:pi的绝对值大于1e-6,直至pi的绝对值小于1e-6,我们要的PI是3.14啊,好好想一下逻辑*/
{
pi = pi + 1 / m;
n++;
m = 2 * n - 1;
m = -m;
}
printf( "%f", pi * 4);
getch();
return 0;
}
/*
n = 100000000
3.14
Press any key to continue
*/
#include stdio.h
#include stdlib.h
#include time.h
int main() {
double dx,dy;
int i,n,c = 0;
printf("n = ");
scanf("%d",n);
srand((unsigned)time(NULL));
for(i = 0; i n; ++i) {
dx = rand() * 0.99999 / RAND_MAX - 0.5;
dy = rand() * 0.99999 / RAND_MAX - 0.5;
if(dx * dx + dy * dy = 0.25) ++c;
}
printf("%.2lf\n",4.0 * c / n);
return 0;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流