真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言實驗函數(shù)桂林 桂林電子科技大學c語言實驗十四

怎樣編寫c語言積分函數(shù)

積分分為兩種,數(shù)值積分,公式積分。

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務嵩縣,10年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792

公式積分:部分函數(shù)可以直接用公式求得其不定積分函數(shù)。C語言中可以直接用積分公式寫出其積分函數(shù)。

數(shù)值積分:按照積分的定義,設置積分范圍的步長,用梯形面積累加求得其積分。

以【f(x)=x*sin(x) 從1到2的積分】為例:

#include?math.h

#include?stdio.h

double?integral(double(*fun)(double?x),double?a,double?b,int,n){

double?s,h,y;

int?i;

s=(fun(a)+fun(b))/2;

h=(b-a)/n;?/*積分步長*/

for(i=1;in;i++)

s=s+fun(a+i*h);

y=s*h;

return?y;/*返回積分值*/

}

double?f(double?x){

return(x*sinx)??/*修改此處可以改變被積函數(shù)*/

}

int?main(){

double?y;

y=integral(f,1.0,2.0,150);/*修改此處可以改變積分上下限和步數(shù),步長=(上限-下限)/步數(shù)*/

printf("y=%f\n",y);

return?0;

}

C語言程序設計實驗報告 (1)編寫一個函數(shù)primeNum(int x),功能是辨別一個數(shù)是否為素數(shù)。

#include math.h

int primeNum(int p)

{

int i, q;

/* Negative number is not a prime */

if (p 0)

return 0;

q = (int) sqrt(p);

for (i = 2; i q; i++)

if ((p % i) == 0)

return 0;

/* No factor of p is found */

return 1;

}

/*原理::

從2-sqrt(x)的數(shù)中看是否有可以整除的, 如果沒有, 則為素數(shù).

*/

C語言實驗

哈夫曼編碼(Huffman Coding)是一種編碼方式,以哈夫曼樹—即最優(yōu)二叉樹,帶權路徑長度最小的二叉樹,經(jīng)常應用于數(shù)據(jù)壓縮。 在計算機信息處理中,“哈夫曼編碼”是一種一致性編碼法(又稱"熵編碼法"),用于數(shù)據(jù)的無損耗壓縮。這一術語是指使用一張?zhí)厥獾木幋a表將源字符(例如某文件中的一個符號)進行編碼。這張編碼表的特殊之處在于,它是根據(jù)每一個源字符出現(xiàn)的估算概率而建立起來的(出現(xiàn)概率高的字符使用較短的編碼,反之出現(xiàn)概率低的則使用較長的編碼,這便使編碼之后的字符串的平均期望長度降低,從而達到無損壓縮數(shù)據(jù)的目的)。這種方法是由David.A.Huffman發(fā)展起來的。 例如,在英文中,e的出現(xiàn)概率很高,而z的出現(xiàn)概率則最低。當利用哈夫曼編碼對一篇英文進行壓縮時,e極有可能用一個位(bit)來表示,而z則可能花去25個位(不是26)。用普通的表示方法時,每個英文字母均占用一個字節(jié)(byte),即8個位。二者相比,e使用了一般編碼的1/8的長度,z則使用了3倍多。倘若我們能實現(xiàn)對于英文中各個字母出現(xiàn)概率的較準確的估算,就可以大幅度提高無損壓縮的比例。

本文描述在網(wǎng)上能夠找到的最簡單,最快速的哈夫曼編碼。本方法不使用任何擴展動態(tài)庫,比如STL或者組件。只使用簡單的C函數(shù),比如:memset,memmove,qsort,malloc,realloc和memcpy。

因此,大家都會發(fā)現(xiàn),理解甚至修改這個編碼都是很容易的。

背景

哈夫曼壓縮是個無損的壓縮算法,一般用來壓縮文本和程序文件。哈夫曼壓縮屬于可變代碼長度算法一族。意思是個體符號(例如,文本文件中的字符)用一個特定長度的位序列替代。因此,在文件中出現(xiàn)頻率高的符號,使用短的位序列,而那些很少出現(xiàn)的符號,則用較長的位序列。

編碼使用

我用簡單的C函數(shù)寫這個編碼是為了讓它在任何地方使用都會比較方便。你可以將他們放到類中,或者直接使用這個函數(shù)。并且我使用了簡單的格式,僅僅輸入輸出緩沖區(qū),而不象其它文章中那樣,輸入輸出文件。

bool CompressHuffman(BYTE *pSrc, int nSrcLen, BYTE *pDes, int nDesLen);

bool DecompressHuffman(BYTE *pSrc, int nSrcLen, BYTE *pDes, int nDesLen);

要點說明

速度

為了讓它(huffman.cpp)快速運行,我花了很長時間。同時,我沒有使用任何動態(tài)庫,比如STL或者MFC。它壓縮1M數(shù)據(jù)少于100ms(P3處理器,主頻1G)。

壓縮

壓縮代碼非常簡單,首先用ASCII值初始化511個哈夫曼節(jié)點:

CHuffmanNode nodes[511];

for(int nCount = 0; nCount 256; nCount++)

nodes[nCount].byAscii = nCount;

然后,計算在輸入緩沖區(qū)數(shù)據(jù)中,每個ASCII碼出現(xiàn)的頻率:

for(nCount = 0; nCount nSrcLen; nCount++)

nodes[pSrc[nCount]].nFrequency++;

然后,根據(jù)頻率進行排序:

qsort(nodes, 256, sizeof(CHuffmanNode), frequencyCompare);

現(xiàn)在,構造哈夫曼樹,獲取每個ASCII碼對應的位序列:

int nNodeCount = GetHuffmanTree(nodes);

構造哈夫曼樹非常簡單,將所有的節(jié)點放到一個隊列中,用一個節(jié)點替換兩個頻率最低的節(jié)點,新節(jié)點的頻率就是這兩個節(jié)點的頻率之和。這樣,新節(jié)點就是兩個被替換節(jié)點的父節(jié)點了。如此循環(huán),直到隊列中只剩一個節(jié)點(樹根)。

// parent node

pNode = nodes[nParentNode++];

// pop first child

pNode-pLeft = PopNode(pNodes, nBackNode--, false);

// pop second child

pNode-pRight = PopNode(pNodes, nBackNode--, true);

// adjust parent of the two poped nodes

pNode-pLeft-pParent = pNode-pRight-pParent = pNode;

// adjust parent frequency

pNode-nFrequency = pNode-pLeft-nFrequency + pNode-pRight-nFrequency;

這里我用了一個好的訣竅來避免使用任何隊列組件。我先前就直到ASCII碼只有256個,但我分配了511個(CHuffmanNode nodes[511]),前255個記錄ASCII碼,而用后255個記錄哈夫曼樹中的父節(jié)點。并且在構造樹的時候只使用一個指針數(shù)組(ChuffmanNode *pNodes[256])來指向這些節(jié)點。同樣使用兩個變量來操作隊列索引(int nParentNode = nNodeCount;nBackNode = nNodeCount –1)。

接著,壓縮的最后一步是將每個ASCII編碼寫入輸出緩沖區(qū)中:

int nDesIndex = 0;

// loop to write codes

for(nCount = 0; nCount nSrcLen; nCount++)

{

*(DWORD*)(pDesPtr+(nDesIndex3)) |=

nodes[pSrc[nCount]].dwCode (nDesIndex7);

nDesIndex += nodes[pSrc[nCount]].nCodeLength;

}

(nDesIndex3): 3 以8位為界限右移后到達右邊字節(jié)的前面

(nDesIndex7): 7 得到最高位.

注意:在壓縮緩沖區(qū)中,我們必須保存哈夫曼樹的節(jié)點以及位序列,這樣我們才能在解壓縮時重新構造哈夫曼樹(只需保存ASCII值和對應的位序列)。

解壓縮

解壓縮比構造哈夫曼樹要簡單的多,將輸入緩沖區(qū)中的每個編碼用對應的ASCII碼逐個替換就可以了。只要記住,這里的輸入緩沖區(qū)是一個包含每個ASCII值的編碼的位流。因此,為了用ASCII值替換編碼,我們必須用位流搜索哈夫曼樹,直到發(fā)現(xiàn)一個葉節(jié)點,然后將它的ASCII值添加到輸出緩沖區(qū)中:

int nDesIndex = 0;

DWORD nCode;

while(nDesIndex nDesLen)

{

nCode = (*(DWORD*)(pSrc+(nSrcIndex3)))(nSrcIndex7);

pNode = pRoot;

while(pNode-pLeft)

{

pNode = (nCode1) ? pNode-pRight : pNode-pLeft;

nCode = 1;

nSrcIndex++;

}

pDes[nDesIndex++] = pNode-byAscii;

}

C語言實驗 關于指針的!!

#include stdio.h

#includestdlib.h

#includestring.h /*頭文件*/

int find(char srt[],char xCh); /*函數(shù)要聲明*/

void main() /*main()不是這樣寫吧*/

{

int cs; /*i時什么東西*/

char a,k[100]; /*char a,k;字符串數(shù)組不是這樣聲明*/

/*int find(char srt,char xCh);這個放到上面聲明*/

/*clrscr();這個有什么用?*/

printf("input a char\n");

scanf("%c",a); /*scanf("%s",a);錯*/

printf("input a find\n");

scanf("%s",k);

cs=find(k,a); /*cs=find(a,k);*/

printf("%d\n",cs);

}

int find(char srt[],char xCh) /*int findchar srt,char xCh要用()這個,不能用還有錯誤自己對照*/

{

int j,cs=0,len=strlen(srt);

char*p; /* int *p;*/

p=srt;

/*下面這部分自己看,和你自己的對照一下*/

for(j=0;jlen;j++)

{

if(*(p+j)==xCh)

{

cs++;

printf("%d \n",j);} }

/*這個干嗎用?*/

return(cs);

}

/*改了我好長時間,給分啊~~~*/

C語言實驗7 函數(shù)1

#include?stdio.h

int?main?()

{

int?ad(int);

int?n;

printf("請輸入一個測試數(shù):");

while(scanf("%d",n)==1)

if(ad(n))

printf("\t?%d?是??素數(shù).\n",n);

else?

printf("\t?%d?不是素數(shù).\n",n);

return?0;

}

int?ad(int?n)

{

int?flag=1,i;

for?(i=2;i=n/2??flag==1;i++)??//?這里?i=n/2就好了

if(n%i==0)

flag=0;

return?(flag);

}

代碼有點小問題,參看上面的注釋


新聞名稱:c語言實驗函數(shù)桂林 桂林電子科技大學c語言實驗十四
當前URL:http://weahome.cn/article/hggcid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部