‘壹’ c语言怎么写自然数e的x次方
#include<stdio.h>
#include<math.h>
main()
{
int x;
double y;
printf("Please input x:");
scanf("%d",&x);
if(x>0)
{
y=exp(x);
}
else if(x<0)
{
y=exp(x);
}
else
{
printf("y==1 ");
}
printf("y=%f ",y);
}
(1)c语言ex的用法扩展阅读:
printf()函数的用法
1.printf()函数的调用格式为:printf("<格式化字符串>",<参量表>);
//__stdcall
int __cdecl printf(const char*p,...);
...可变参数
printf在打印浮点数,不论原来是双精度还是单精度,都变为双精度(8字节)
打印1字节(char)2字节(short)4字节(int)==>4字节,除了long long(8字节)
void main()
{
int a=10;
folat ft=12.25f;
printf("%d%d ",a,ft);
}
%d格式控制符--不具有强转能力
A格式化字符串包括两部分内容:
一部分是正常字符,这些字符将按原样输出;
另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
1.d/i有符号十进制形式输出(正数不输出符号)
2.u无符号十进制形式输出
3.o无符号八进制形式输出(不输出前缀0)
4.x无符号十六进制形式输出(不输出前缀Ox),并以小写abcdef表示。
5.X无符号十六进制形式输出(不输出前缀Ox),并以大写ABCDEF表示。
6.c输出单个字符
7.s输出字符串
8.f以小数形式输出单、双精度实数
9.E/e用科学计数法表示浮点数
10.G/g以%f或%e中较短的输出宽度输出单、双精度实数
+++++++++
void main()
{
long long x=0x12345678901357;
printf("%x ",x);//=>78 90 13 57
printf("%lx ",x);//=>78 90 13 57
printf("%llx ",x);//=>12345678901357
}
‘贰’ c语言 1.1 指数函数值
#include<stdio.h>
#include<math.h>
doubleexp(doublex){
doublesum=0;
doubleterm=1;
doubleindex=1;
while(fabs(term)>=1e-6){
sum=sum+term;
term=term*x/index;
index=index+1;
}
returnsum;
}
intmain(){
charc;
doublex;
while(scanf("%c",&c)==1){
if(c=='#')break;
ungetc(c,stdin);
scanf("%lf",&x);
printf("e(%.3lf)=%.5lf ",x,exp(x));
}
}
‘叁’ C语言编程:ex=1+x/1!+x2/2!+x3/3!++xn/n!+
#include
‘肆’ 如何用c语言求e^x的近似值
如下:
(1)#include<stdio.h>
int main()
{
double item=1,sum=1,n;
for(n=1;n<=20;n++)
{
item*=1.0/n;
sum+=item;
}
printf("The sum is %lf ",sum);
return 0;
}
(2)#include<stdio.h>
#include<math.h>
int main()
{
double item=1,sum=1,n=1;
do
{
item*=1.0/n;
sum+=item;
n++;
}while(fabs(item)>=1e-4);
printf("The sum is %lf ",sum);
return 0;
}
介绍
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。
C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性。
‘伍’ C语言中的数学符号如何表示(大全)
abs(计算整型数的绝对值)
相关函数 labs, fabs
表头文件 #include<stdlib.h>
定义函数 int abs (int j)
函数说明 abs()用来计算参数j的绝对值,然后将结果返回。
返回值 返回参数j的绝对值结果。
范例 #ingclude <stdlib.h>
main(){
int ansert;
answer = abs(-12);
printf("|-12| = %d\n", answer);
}
执行 |-12| = 12
/*---------------------------------*/
exp(计算指数)
相关函数 log,log10,pow
表头文件 #include<math.h>
定义函数 double exp(double x);
函数说明 exp()用来计算以e为底的x次方值,即ex值,然后将结果返回。
返回值 返回e的x次方计算结果。
附加说明 使用GCC编译时请加入-lm。
范例 #include<math.h>
main()
{
double answer;
answer = exp (10);
printf("e^10 =%f\n", answer);
}
执行 e^10 = 22026.465795
/*-----------------------------------*/
sqrt(计算平方根值)
相关函数 hypotq
表头文件 #include<math.h>
定义函数 double sqrt(double x);
函数说明 sqrt()用来计算参数x的平方根,然后将结果返回。参数x必须为正数。
返回值 返回参数x的平方根值。
错误代码 EDOM 参数x为负数。
附加说明 使用GCC编译时请加入-lm。
范例 /* 计算200的平方根值*/
#include<math.h>
main()
{
double root;
root = sqrt (200);
printf("answer is %f\n",root);
}
执行 answer is 14.142136
/*--------------------------------*/
fabs(计算浮点型数的绝对值)
相关函数:abs
表头文件:#include<math.h>
定义函数:double fabs(double x);
函数说明:fabs()用来计算浮点型数x的绝对值,然后将结果返回。
返回值:返回参数x的绝对值计算结果
#include <math.h>
main()
{
double answer;
answer=fabs(-3.141592);
printf("|-3.141592|=%f\n",answer);
}
执行结果
|-3.141592|=3.141592
‘陆’ c语言_beginthreadex()函数不会用,求实例,纯c实现的,谢谢
//sipvoiplink.h
classSIPVoIPLink
{
private:
staticunsigned__stdcallReceivingThrd(void*pParam);
}//sipvoiplink.cpp
#include<Winsock2.h>
#include<process.h>
boolSIPVoIPLink::init()
{
......
HANDLEhThread;
unsignedthreadID;
hThread=(HANDLE)_beginthreadex(NULL,0,&SIPVoIPLink::ReceivingThrd,(LPVOID)this,0,&threadID);
if(hThread==NULL)
returnfalse;
}
unsigned__stdcallSIPVoIPLink::ReceivingThrd(void*pParam)
{
//getEvent();
((SIPVoIPLink*)pParam)->getEvent();
return0;
}
一个线程的好例子:http://www.cppblog.com/mzty/archive/2007/07/25/28756.html
引申阅读:
关于_beginthreadex和CreateThread的区别
在Win32API中,创建线程的基本函数是CreateThread,而_beginthread(ex)是
C++运行库的函数。为什么要有两个呢?因为C++运行库里面有一些函数使用了全局
量,如果使用CreateThread的情况下使用这些C++运行库的函数,就会出现不安全
的问题。而_beginthreadex为这些全局变量做了处理,使得每个线程都有一份独立
的“全局”量。
所以,如果你的编程只调用Win32API/SDK,就放心用CreateThread;如果要用到
C++运行时间库,那么就要使用_beginthreadex,并且需要在编译环境中选择Use
MultiThreadLib/DLL。
C++运行期库有两个创建线程的函数,另一个是_beginthread,它们两者的区别请
自己去看MSDN:
通常他们的解释都是这容易造成内存泄漏。这个解释本身是没有错的,但是解释得不够完全和详细。以至于造成很多新手盲目的信任了那句话,在那里都是用_beginthreadex函数,或者是装作没有看到使用CreateThread函数。曾经有一段时间我也对这个问题很是困惑,不知道到底用那个才是对的。因为我不止一次在很多权威性的代码中看到对CreateThread函数的直接调用。难道是权威错了??抱着怀疑的态度查找了大量的资料和书籍,终于搞明白了这个问题的关键所在,在此做个说明,算是对那句话的一个完善。关于_beginthreadex和CreateThread的区别我就不做说明了,这个很容易找到的。我们只要知道一个问题:_beginthreadex是一个C运行时库的函数,CreateThread是一个系统API函数,_beginthreadex内部调用了CreateThread。只所以所有的书都强调内存泄漏的问题是因为_beginthreadex函数在创建线程的时候分配了一个堆结构并和线程本身关联起来,我们把这个结构叫做tiddata结构,是通过线程本地存储器TLS于线程本身关联起来。我们传入的线程入口函数就保存在这个结构中。tiddata的作用除了保存线程函数入口地址之外,还有一个重要的作用就是:C运行时库中有些函数需要通过这个结构来保存和获取一些数据,比如说errno之类的线程全局变量。这点才是最重要的。
当一个线程调用一个要求tiddata结构的运行时库函数的时候,将发生下面的情况:
运行时库函数试图TlsGetvalue获取线程数据块的地址,如果没有获取到,函数就会现场分配一个tiddata结构,并且和线程相关联,于是问题出现了,如果不通过_endthreadex函数来终结线程的话,这个结构将不会被撤销,内存泄漏就会出现了。但通常情况下,我们都不推荐使用_endthreadex函数来结束线程,因为里面包含了ExitThread调用。找到了内存泄漏的具体原因,我们可以这样说:只要在创建的线程里面不使用一些要求tiddata结构的运行时库函数,我们的内存时安全的。所以,前面说的那句话应该这样说才完善:
“绝对不要调用系统自带的CreateThread函数创建新的线程,而应该使用_beginthreadex,除非你在线程中绝不使用需要tiddata结构的运行时库函数”这个需要tiddata结构的函数有点麻烦了,在侯捷的《win32多线程程序设计》一书中这样说到:
”如果在除主线程之外的任何线程中进行一下操作,你就应该使用多线程版本的Cruntimelibrary,并使用_beginthreadex和_endthreadex:
1使用malloc()和free(),或是new和delete
2使用stdio.h或io.h里面声明的任何函数
3使用浮点变量或浮点运算函数
4调用任何一个使用了静态缓冲区的runtime函数,比如:asctime(),strtok()或rand()
‘柒’ ex在c语言中怎么表示
C语言exp()函数:e的次幂函数(以e为底的x次方值)头文件: #include exp()用来计算以e 为底的x 次方值,即ex值,然后将结果返回。
‘捌’ C语言编程:ex=1+x/1!+x2/2!+x3/3!+……+xn/n!+……
#include <stdio.h>#include <math.h>// 计算 n 的阶乘int jc (int n){ if (n < 0) return -1; else if (n == 0) return 1; else return n * jc (n - 1);}// 计算 ex 的值double ex (double x){ int i = 0; double sum = 0; // pow(x,i)是x的i次方, elem是要计算的多项式的通项式 double elem = pow (x, i) / (double) (jc (i)); // 当elem的值小于 0.000001 时结束循环 while (elem > 1e-6) { sum = sum + elem; i++; elem = pow (x, i) / (double)(jc (i)); } return sum;}int main(){ double x; printf("请输入x的值: "); scanf("%lf", &x); printf("ex = %lf\n", ex(x)); return 0;}以上代码已经通过测试,结果正确,并有一定量的注释,便于理解‘玖’ C语言编程 用泰勒展开式计算e^x的值
#include<stdio.h>
#include<math.h>
intmain()
{
doubleadd(doublex,doublen);
doublex,n,sum;
scanf("%lf%lf",&x,&n);
if(n<0||x<0)
{
printf("error");
return0;
}
else
{
sum=add(x,n);
printf("%.6lf",sum);
}
return0;
}
doubleadd(doublex,doublen)
{
doubleb=1,c=1;
doublesum=1;
for(b=1;b<=n;b++)
{
sum=sum+(pow(x,b))/c;
b=b+1;
c=c*b;
}
returnsum;
}
你这样做,那个输出错误的结果判断要在计算之前,并且出错后要退出,而且你的异常条件要写成:if(n<0||x<0),因为0是允许的。然后计算和的函数我减去了一个变量,有循环变量就可以替代n了
我的运行结果,但我不知道运算的对不对,程序反正没有错误了,也可以运行的