『壹』 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了
我的運行結果,但我不知道運算的對不對,程序反正沒有錯誤了,也可以運行的