當前位置:首頁 » 編程語言 » c語言程序實驗

c語言程序實驗

發布時間: 2022-11-01 23:10:38

c語言程序設計實驗報告怎麼寫啊

通過本試驗初步培養計算機邏輯解題能力。熟練掌握賦值語句和if語句的應用;掌握switch多路分支語句和if嵌套語句的使用

② C語言程序實驗設計

年齡分段:

main()
{
int x;
scanf("%d", &x);
if(x <= 0)
{printf("input error\n"); return;}
switch(x)
{
case 1:case 2:case 3:case 4:case 5:
printf("學齡前幼兒\n");
break;
case 6:case 7:case 8:case 9:case 10:case 11:
printf("兒童\n");
break;
case 12:case 13:case 14:case 15:case 16:case 17:
printf("少年\n");
break;
case 18:case 19:case 20:case 21:case 22:case 23:case 24:
case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:
case 34:case 35:case 36:case 37:case 38:case 39:
printf("青年\n");
break;
case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:
case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:
case 58:case 59:
printf("中年\n");
break;
default:
printf("老年\n");
break;
}
}

Sn=:

int value(int a, int n)
{
int i, result = 0;
while(n --)
{
result += a;
a *= 10;
}
return result;
}
int calc(int a, int n)
{
int i, result = 0;
result = value(a, n);
while(--n)
{
result -= value(a, n);
}
return result;
}
main()
{
int a, n;
scanf("%d", &n);
for(a = 1; a < 10; a++)
printf("a= %d, n = %d, result is %d\n", a, n, calc(a, n));
}

猴子吃桃:

int main()
{
int i,j;
j=1;
for(i=1;i<10;i++)
{
j=2*(j+1);
}
printf("第一天摘桃子的個數為%d\n",j);
return 0;
}

③ c語言程序設計實驗報告

五、 課程設計小結心得體會
1設計思想
1)、設定一個一維數組,可先按員工序號設定每位員工的工資
2)、利用While語句和Prinft語句完成用戶菜單的設計
功能為:第1項 設為員工編號和工資數據
第2項 設為修改員工工資數據
第3項 設為查詢員工工資數據
第4項 設為結束系統
3)、當用戶選擇1、2項時,需輸入員工編號,所以需要設計編號校正功能,如果出錯可輸出「The error employe number」
4)、當選擇2時,進行工資數據的修改,並將新數據存回該員工的工資數組中
5)、利用for循環中判斷語句,將用戶工資數與數組中的工資數進行比較,如相同則輸出,將計數器加1,如此下去,直到把整個數組遍歷一遍
6)、判斷計數器是否為0, 是0表示找不到相符的工資,如果不為0,則輸出共查出幾比相符的工資
以上當然裡面也涉及了「函數的模塊化」理念,可以避免但需要重復列印頭文件時重復編寫列印信頭的語句。像這樣的程序是多見的,這樣不但降低了程序還發效率,而且耗時浪費資源「共用體」的使用簡化了程序的「復雜」性,正如(4)中,學號與姓名同時表示一個人,但在函數使用了「共用體」,從而程序的簡單可以便於糾錯,查找問題,避免了代碼的重復,這樣就給編譯時帶來了一定的難度與「量」的繁雜。一般不採取這樣的做法,力求「簡單、明了、清晰」。

④ C語言程序實驗課

  1. #include<stdio.h>
    intmain(){
    inta=0;
    intb=0;
    intc=0;
    intmax=0;
    scanf("%d%d%d",&a,&b,&c);
    max=a>b?a:b;
    max=max>c?max:c;
    printf("%d ",max);
    return0;
    }
  2. #include<stdio.h>
    intmain(){
    intscore;
    chargrade;
    scanf("%d",&score);
    if(score>=90)
    {
    grade='A';
    }
    elseif(score>=80&&score<90)
    {
    grade='B';
    }
    elseif(score>=70&&score<80)
    {
    grade='C';
    }
    elseif(score>=60&&score<70)
    {
    grade='D';
    }
    else{
    grade='E';
    }

    switch(grade)
    {
    case'A':
    printf("A");
    break;
    case'B':
    printf("B");
    break;
    case'C':
    printf("C");
    break;
    case'D':
    printf("D");
    break;
    case'E':
    printf("E");
    break;
    }
    return0;
    }
  3. #include<stdio.h>
    intmain(){
    intx=0,y=0;
    scanf("%d",&x);
    if(x<1)
    {
    y=x;
    }
    elseif(x<10&&x>=1)
    {
    y=2*x-1;
    }
    elseif(x>=10)
    {
    y=3*x+11;
    }
    printf("%d ",y);
    return0;
    }

⑤ C語言實驗

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

本文描述在網上能夠找到的最簡單,最快速的哈夫曼編碼。本方法不使用任何擴展動態庫,比如STL或者組件。只使用簡單的C函數,比如:memset,memmove,qsort,malloc,realloc和memcpy。
因此,大家都會發現,理解甚至修改這個編碼都是很容易的。

背景
哈夫曼壓縮是個無損的壓縮演算法,一般用來壓縮文本和程序文件。哈夫曼壓縮屬於可變代碼長度演算法一族。意思是個體符號(例如,文本文件中的字元)用一個特定長度的位序列替代。因此,在文件中出現頻率高的符號,使用短的位序列,而那些很少出現的符號,則用較長的位序列。
編碼使用
我用簡單的C函數寫這個編碼是為了讓它在任何地方使用都會比較方便。你可以將他們放到類中,或者直接使用這個函數。並且我使用了簡單的格式,僅僅輸入輸出緩沖區,而不象其它文章中那樣,輸入輸出文件。
bool CompressHuffman(BYTE *pSrc, int nSrcLen, BYTE *&pDes, int &nDesLen);
bool DecompressHuffman(BYTE *pSrc, int nSrcLen, BYTE *&pDes, int &nDesLen);
要點說明
速度
為了讓它(huffman.cpp)快速運行,我花了很長時間。同時,我沒有使用任何動態庫,比如STL或者MFC。它壓縮1M數據少於100ms(P3處理器,主頻1G)。
壓縮
壓縮代碼非常簡單,首先用ASCII值初始化511個哈夫曼節點:
CHuffmanNode nodes[511];
for(int nCount = 0; nCount < 256; nCount++)
nodes[nCount].byAscii = nCount;
然後,計算在輸入緩沖區數據中,每個ASCII碼出現的頻率:
for(nCount = 0; nCount < nSrcLen; nCount++)
nodes[pSrc[nCount]].nFrequency++;
然後,根據頻率進行排序:
qsort(nodes, 256, sizeof(CHuffmanNode), frequencyCompare);
現在,構造哈夫曼樹,獲取每個ASCII碼對應的位序列:
int nNodeCount = GetHuffmanTree(nodes);
構造哈夫曼樹非常簡單,將所有的節點放到一個隊列中,用一個節點替換兩個頻率最低的節點,新節點的頻率就是這兩個節點的頻率之和。這樣,新節點就是兩個被替換節點的父節點了。如此循環,直到隊列中只剩一個節點(樹根)。
// 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個記錄哈夫曼樹中的父節點。並且在構造樹的時候只使用一個指針數組(ChuffmanNode *pNodes[256])來指向這些節點。同樣使用兩個變數來操作隊列索引(int nParentNode = nNodeCount;nBackNode = nNodeCount –1)。
接著,壓縮的最後一步是將每個ASCII編碼寫入輸出緩沖區中:
int nDesIndex = 0;
// loop to write codes
for(nCount = 0; nCount < nSrcLen; nCount++)
{
*(DWORD*)(pDesPtr+(nDesIndex>>3)) |=
nodes[pSrc[nCount]].dwCode << (nDesIndex&7);
nDesIndex += nodes[pSrc[nCount]].nCodeLength;
}
(nDesIndex>>3): >>3 以8位為界限右移後到達右邊位元組的前面
(nDesIndex&7): &7 得到最高位.
注意:在壓縮緩沖區中,我們必須保存哈夫曼樹的節點以及位序列,這樣我們才能在解壓縮時重新構造哈夫曼樹(只需保存ASCII值和對應的位序列)。
解壓縮
解壓縮比構造哈夫曼樹要簡單的多,將輸入緩沖區中的每個編碼用對應的ASCII碼逐個替換就可以了。只要記住,這里的輸入緩沖區是一個包含每個ASCII值的編碼的位流。因此,為了用ASCII值替換編碼,我們必須用位流搜索哈夫曼樹,直到發現一個葉節點,然後將它的ASCII值添加到輸出緩沖區中:
int nDesIndex = 0;
DWORD nCode;
while(nDesIndex < nDesLen)
{
nCode = (*(DWORD*)(pSrc+(nSrcIndex>>3)))>>(nSrcIndex&7);
pNode = pRoot;
while(pNode->pLeft)
{
pNode = (nCode&1) ? pNode->pRight : pNode->pLeft;
nCode >>= 1;
nSrcIndex++;
}
pDes[nDesIndex++] = pNode->byAscii;
}

⑥ 學院c語言實驗報告選擇結構程序設計

一、
scanf("%lf", x); 改為scanf("%lf", &x);

y = 1 / x 沒加分號

二、if( a + b > c || b + c > a || a + c > b)改成if( !(a + b > c || b + c > a || a + c > b) )

⑦ 大學C語言程序設計實驗報告,求程序步驟。

#include<stdio.h>
void main()
{ float f=555.5678,ff;
int a[10]={ 0,1,2,3,4,5,6,7,8,9 },b[10],i;
FILE *fp;
if ( fp=fopen("TEXT.dat","wb+") )
{ fwrite(&f,sizeof(float),1,fp);
for ( i=0;i<10;i++ ) fwrite(&a[i],sizeof(int),1,fp);
fclose(fp);
} else printf("無法建立文件。\n"); goto ERROREND;
if ( fp=fopen("TEXT.dat","rb") )
{ fread(&ff,sizeof(float),1,fp);
for ( i=0;i<10;i++ ) fread(&b[i],sizeof(int),1,fp);
fclose(fp);
} else printf("無法打開文件。\n"); goto ERROREND;
printf("%.2f ",ff); for ( i=0;i<10;i++ ) printf("%d ",b[i]); printf("\n");
ERROREND:;
}

⑧ C語言循環實驗

#include"stdio.h"
#include"string.h"
intmain()
{
chars[110];
intcnt;
gets(s);
intlen=strlen(s);
cnt=0;
intflag=0;

int_flag=0;

for(inti=0;i<=len;i++)
{
if((s[i]>='0'&&s[i]<='9')&&(s[i+1]=='.'&&(s[i+2]>='0'&&s[i+2]<='9')))
{
_flag=1;//出現數字標記
continue;

}
if(_flag==1)
{
cnt--;//前面有數字,現在不是數字,說明增加了一個整數
_flag=0;
// 處理了部分小數問題如果是0.3之類的還是會有問題的
}

}
for(inti=0;i<=len;i++)
{

if((s[i]>='0'&&s[i]<='9'))
{
flag=1;//出現數字標記
continue;

}
if((flag==1))
{
cnt++;//前面有數字,現在不是數字,說明增加了一個整數
flag=0;

}



}
printf("%d ",cnt);
getchar();
return0;
}

基本在下面的兄弟上面改進了點 ============貌似被我改難看了..樓下別怪我啊,,,,大哥你的代碼看起來很舒服的..

熱點內容
輸入虛擬手機伺服器地址怎麼填 發布:2025-01-09 18:58:50 瀏覽:348
dede換資料庫 發布:2025-01-09 18:53:23 瀏覽:262
sql2000資料庫置疑修復 發布:2025-01-09 18:35:54 瀏覽:411
塊設備塊緩存 發布:2025-01-09 18:35:46 瀏覽:484
HED編譯 發布:2025-01-09 18:20:26 瀏覽:407
從安卓轉移設備從哪裡呢 發布:2025-01-09 18:12:31 瀏覽:556
為什麼半夜伺服器會炸 發布:2025-01-09 18:06:32 瀏覽:320
編譯器處理數據類型 發布:2025-01-09 18:06:29 瀏覽:945
狐狸視頻源碼 發布:2025-01-09 17:56:27 瀏覽:443
javaif或條件 發布:2025-01-09 17:51:22 瀏覽:295