C高級(jí)編程實(shí)驗(yàn)指導(dǎo)書(1-5)_第1頁(yè)
C高級(jí)編程實(shí)驗(yàn)指導(dǎo)書(1-5)_第2頁(yè)
C高級(jí)編程實(shí)驗(yàn)指導(dǎo)書(1-5)_第3頁(yè)
C高級(jí)編程實(shí)驗(yàn)指導(dǎo)書(1-5)_第4頁(yè)
C高級(jí)編程實(shí)驗(yàn)指導(dǎo)書(1-5)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C高級(jí)編程實(shí)驗(yàn)指導(dǎo)書 (1-5)C 高級(jí)編程實(shí)驗(yàn)指導(dǎo)書實(shí)驗(yàn)一 進(jìn)制轉(zhuǎn)換一、實(shí)驗(yàn)要求采用模塊化程序設(shè)計(jì)完成進(jìn)制轉(zhuǎn)換。 由鍵盤輸入一個(gè)十進(jìn)制正整數(shù), 然后將該數(shù)轉(zhuǎn)換成指定的進(jìn)制數(shù) ( 二、八、十六 ) 形式輸出。指定的進(jìn)制由用戶輸入。二、實(shí)驗(yàn)?zāi)康?、熟悉 C 環(huán)境的安裝、使用。2、承上啟下,復(fù)習(xí)C 程序設(shè)計(jì)等基礎(chǔ)課程的知識(shí)。3、掌握 C語(yǔ)言編程的方法。三、預(yù)備知識(shí)1、VC6.0 的安裝與使用。2、C 程序設(shè)計(jì)基礎(chǔ)知識(shí)。四、實(shí)驗(yàn)內(nèi)容采用模塊化程序設(shè)計(jì)完成進(jìn)制轉(zhuǎn)換。五、程序框圖請(qǐng)按照自己對(duì)程序設(shè)計(jì)需求的理解進(jìn)行設(shè)計(jì)。主函數(shù)輸入需要調(diào)用判斷Y根據(jù) while 里進(jìn)制N根據(jù) while里輸 出輸 出六、程

2、序清單1. 編寫主函數(shù):輸入需轉(zhuǎn)換的數(shù)與轉(zhuǎn)換的進(jìn)制2. 編寫子函數(shù)( 1)函數(shù)轉(zhuǎn)換為除 16 進(jìn)制以外的進(jìn)制轉(zhuǎn)換算數(shù)編程,使用 while 循環(huán)實(shí)現(xiàn)計(jì)算進(jìn)制的轉(zhuǎn)換,并輸出轉(zhuǎn)換后的數(shù)字;( 2)函數(shù)轉(zhuǎn)換為 16 進(jìn)制,用 while 函數(shù)實(shí)現(xiàn) 16 進(jìn)制轉(zhuǎn)換的計(jì)算并輸出 16 進(jìn)制轉(zhuǎn)換后的數(shù)據(jù);3. 編寫數(shù)組,關(guān)于 16 進(jìn)制的一系列字符4. 編寫主函數(shù)加入 do while 使函數(shù)可以循環(huán)。七、實(shí)驗(yàn)步驟1、繪制流程圖(程序框圖)。2 、編碼。#include charnum16=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;void fun(int n, int m)int

3、i=-1, a100;if(m!=16)while(n)ai+=n%m;n=n/m;while(i!=-1)printf(%d,a-i);printf(n);elsewhile(n)a+i=numn%16;n/=16;while(i!=-1)printf(%c,ai-);printf(n);int main()int a, c;char cIn = 0;doprintf(n輸入正整數(shù),轉(zhuǎn)換的進(jìn)制:);scanf(%d %d,&a,&c);fun(a,c);printf(Go on? (Y/N):);cIn = getchar( );if(cIn = N | cIn = n)return 0;w

4、hile(1);3、調(diào)試。八、實(shí)驗(yàn)結(jié)果進(jìn)制轉(zhuǎn)換結(jié)果。實(shí)驗(yàn)二學(xué)生班級(jí)成績(jī)統(tǒng)計(jì)一、實(shí)驗(yàn)要求設(shè)計(jì)一個(gè)統(tǒng)計(jì)班級(jí)學(xué)生成績(jī)的程序。統(tǒng)計(jì)一個(gè)班 ( 最多有 35 人 ) 的學(xué)生成績(jī),要求能實(shí)現(xiàn)如下四個(gè)功能:(1) 由鍵盤輸入每個(gè)學(xué)生的學(xué)號(hào)和四門課程的成績(jī)。(2) 計(jì)算每個(gè)學(xué)生的平均成績(jī)和總成績(jī)。(3) 按總成績(jī)從高到低排名,并按名次輸出每個(gè)學(xué)生的情況,包括:學(xué)號(hào),各科成績(jī),平均成績(jī),總成績(jī),排名(4) 根據(jù)要求輸出某門課程 ( 由鍵盤輸入課程號(hào) ) 成績(jī)?cè)?90 分 ( 含 90 分 ) 以上且總分在前 5 名的學(xué)生情況 ( 請(qǐng)采用結(jié)構(gòu)體數(shù)據(jù)類型,并采用模塊化結(jié)構(gòu)實(shí)現(xiàn) ) 。二、實(shí)驗(yàn)?zāi)康?、進(jìn)一步熟悉C環(huán)境

5、的安裝、使用。2、進(jìn)一步復(fù)習(xí)C程序設(shè)計(jì)等基礎(chǔ)課程的知識(shí)。3、進(jìn)一步掌握C語(yǔ)言編程的方法。三、預(yù)備知識(shí)1、VC6.0 的安裝與使用。2、C 程序設(shè)計(jì)基礎(chǔ)知識(shí)。3、軟件實(shí)現(xiàn)基本流程。四、實(shí)驗(yàn)內(nèi)容設(shè)計(jì)一個(gè)統(tǒng)計(jì)班級(jí)學(xué)生成績(jī)的程序。五、程序框圖編寫 主函 數(shù)包 含子函數(shù) 1:輸入數(shù)據(jù),并計(jì)算平子函數(shù) 2:根據(jù)子函數(shù) 1子函數(shù) 3:按子函數(shù)2子函數(shù)4:輸入需要查詢科目的六、程序清單1、先編寫主函數(shù),將所需要用到的子函數(shù)編寫,2、子函數(shù) 1:輸入數(shù)據(jù),將所需要的數(shù)據(jù)存到數(shù)組中并計(jì)算平均值和總分,3、子函數(shù) 2:根據(jù)子函數(shù)1 計(jì)算所得值進(jìn)行排序,4、子函數(shù) 3:輸出排序完的數(shù)據(jù),5、子函數(shù) 4:編寫查詢程序,

6、輸入查詢的科目縮寫,并排名后輸出。七、實(shí)驗(yàn)步驟1、可行性分析2、需求分析3、概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)(含繪制流程圖)。4、編碼實(shí)現(xiàn)#include int order35;double addsum35;double addaver35;int b= 0;typedef struct studentint id;char name35;double math;double english;double chinese;double computer; student; student stu35;void shuru()b= 0;while( b 35 )printf( 輸入學(xué)號(hào) ( 輸入 0 退出

7、輸入 ): );scanf( %d, &stub.id );fflush( stdin );if ( stub.id = 0 )break;printf(輸入名字: );scanf(%s,&);printf( 輸入 4 門成績(jī) ( 數(shù)學(xué) 英語(yǔ) 語(yǔ)文計(jì)算機(jī) ): );scanf( %lf %lf %lf %lf, &stub.math, &stub.english,&stub.chinese, &puter );fflush( stdin );addsumb = stub.math + stub.english +stub.chinese, pu

8、ter;addaverb = addsumb / 4.0;orderb = stub.id;b+;int query( int id )int i = 0;for( i=0; ib; i+ )if ( stui.id = id )return i;return -1;void paiming()int i,j;for( i=0; ib; i+ )for( j=i+1; jb; j+ )if ( addsumi - addsumj 0.001 )int temp_id = orderi;orderi = orderj;orderj = temp_id;void output()int i;pri

9、ntf( 名次 學(xué)號(hào) 姓名 數(shù)學(xué) 英語(yǔ) 語(yǔ)文 計(jì)算機(jī) 總分 平均 n ); for( i=0; ib; i+ )int j = query( orderi );if ( j0 )printf( order%d= %d errorn, i+1, orderi );continue;printf( %02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2fn, i+1, stuj.id, ,stuj.math, stuj.english,stuj.chinese, puter,addsumj, addaverj );void

10、chaxun()char a1;int i;printf(輸入你所想要查詢的課程代號(hào):);scanf(%c,&a1);printf( 名次 學(xué)號(hào) 姓名 數(shù)學(xué) 英語(yǔ) 語(yǔ)文 計(jì)算機(jī) 總分 平均 n ); if(a1=m)for(i=0;i90 & orderi 5)printf( %02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2fn, i+1, stui.id, ,stui.math, stui.english,stui.chinese, puter,addsumi, addaveri );else if(a1=e)f

11、or(i=0;i90 & orderi 5)printf( %02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2fn, i+1, stui.id, ,stui.math, stui.english,stui.chinese, puter,addsumi, addaveri );else if (a1=c)for(i=0;i90 & orderi 5)printf( %02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2fn, i+1, stui.id, ,stu

12、i.math, stui.english,stui.chinese, puter,addsumi, addaveri );elsefor(i=0;i90 & orderi 5)printf( %02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2fn, i+1, stui.id, ,stui.math, stui.english,stui.chinese, puter,addsumi, addaveri );void main()shuru();paiming();output();chaxun();5

13、、調(diào)試 6、運(yùn)行維護(hù),完善文檔八、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)三文件合并一、實(shí)驗(yàn)要求將兩個(gè)文件中的數(shù)據(jù)合并至一個(gè)文件。有兩個(gè)文件“ Afile ”和“ Bfile ”, 各存放一行字母, 今要求把這兩個(gè)文件中的信息合并 ( 按字母順序排列 ) ,輸出到一個(gè)新文件“ Cfile ”中去。二、實(shí)驗(yàn)?zāi)康?、掌握指針、文件指針的概念。2、掌握文件操作的知識(shí)。3、進(jìn)一步掌握軟件開發(fā)的基本流程。三、預(yù)備知識(shí)1、C 程序設(shè)計(jì)基礎(chǔ)知識(shí)。2、軟件實(shí)現(xiàn)基本流程。四、實(shí)驗(yàn)內(nèi)容將兩個(gè)文件中的數(shù)據(jù)合并至一個(gè)文件。五、程序清單1、將頭文件編寫齊全,建立主函數(shù);2、建立數(shù)組空間str140, str220,str360用來存放文件A,B,

14、C3、打開文件A,并將文件A 中的字符存入str140中,并輸出;4、打開文件B,并將文件B 中的字符存入str140中,并輸出;5、將 str2中的字符存入str1中,將 str1中的字符存入str3中;6、將 str3中的字符排序,存入文件C中;的字符;7、輸出文件C中字符。六、程序框圖編 寫 頭 文建立文件指針打開文件 A,將文件 A中打開文件 B,將文件 B中將 str2 中的字符存入 str1 中,將 str3 中的字符排序,存七、實(shí)驗(yàn)步驟1、可行性分析2、需求分析3、概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)(含繪制流程圖)。編 寫 頭 文建立文件指針打開文件 A,將文件 A 中打開文件 B,將文件 B

15、中將 str2 中的字符存入 str1 中,將 str3中的字符排序,存4、編碼實(shí)現(xiàn)# include # include # include int main()FILE *fp1, *fp2, *fp3;int i,j,n;char t;char str140, str220,str360;if(fp1=fopen(A.txt,r)=NULL)printf(無法打開 A文件! );exit(0);fgets(str1,20,fp1);printf(%sn,str1);if(fp2=fopen(B.txt,r)=NULL)printf(無法打開 B文件! );exit(0);fgets(st

16、r2,20,fp2);printf(%sn,str2);strcat(str1,str2);strcpy(str3,str1);n=strlen(str3);for(j=0;jn-1;j+)for(i=0;istr3i+1)t=str3i;str3i=str3i+1;str3i+1=t;if(fp3=fopen(C.txt,w)=NULL)printf(無法打開 C文件! );exit(0);fputs(str3,fp3);fputs(n,fp3);printf(%sn,str3);return 0;5、調(diào)試6、運(yùn)行維護(hù),完善文檔八、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)四鏈表基本操作一、實(shí)驗(yàn)要求完成單鏈表的建立、插入

17、和刪除操作。鏈表,就是用“指針域”鏈在一起的自引用結(jié)構(gòu) ( 稱為“結(jié)點(diǎn)” ) 的線性集合。鏈表是通過指向鏈表第一個(gè)結(jié)點(diǎn)的指針訪問的,其后的結(jié)點(diǎn)是通過前一結(jié)點(diǎn)中的“指針域”訪問的。在單鏈表中,數(shù)據(jù)域用來存儲(chǔ)數(shù)據(jù),指針域用來存儲(chǔ)下一個(gè)結(jié)點(diǎn)的地址。建立單鏈表可以通過頭插法完成,也可以通過尾插法完成。在單鏈表的第 i 個(gè)元素前插入一個(gè)新的元素,先必須找到第 i-1 個(gè)元素、找到第 i 個(gè)元素,然后新建一個(gè)節(jié)點(diǎn),再進(jìn)行相應(yīng)的插入。從單鏈表中刪除一個(gè)元素, 先必須找到這個(gè)元素的前一個(gè)元素、 找到這個(gè)元素, 然后進(jìn)行相應(yīng)的刪除,刪除后的元素必須被釋放掉內(nèi)存。二、實(shí)驗(yàn)?zāi)康?、復(fù)習(xí)指針的概念。2、復(fù)習(xí)數(shù)據(jù)結(jié)構(gòu)的

18、有關(guān)基本知識(shí)。3、掌握鏈表的使用方法。三、預(yù)備知識(shí)1、C 程序設(shè)計(jì)基礎(chǔ)知識(shí)。2、數(shù)據(jù)結(jié)構(gòu)的有關(guān)基本知識(shí)。四、實(shí)驗(yàn)內(nèi)容完成單鏈表的建立、插入和刪除操作。五、程序清單1、定義頭文件,編寫共用體結(jié)構(gòu)體及主函數(shù);2、在主函數(shù)中運(yùn)用switch 以及 do while 函數(shù)使程序可以循環(huán)調(diào)用子函數(shù);3、編寫子函數(shù)1:手動(dòng)輸入鏈表長(zhǎng)度及鏈表中的數(shù)值建立鏈表;4、編寫子函數(shù)2:從鍵盤輸入需要查詢的值,然后輸出其所在的節(jié)點(diǎn);5、編寫子函數(shù)3:從鍵盤輸入需要?jiǎng)h除的節(jié)點(diǎn),然后輸出刪除此節(jié)點(diǎn)后的鏈表;6、編寫子函數(shù)4:從鍵盤輸入需要添加數(shù)值的節(jié)點(diǎn), 從鍵盤輸入要添加進(jìn)去的數(shù)值,然后輸出增加此節(jié)點(diǎn)數(shù)加1 后添加數(shù)值的

19、鏈表;7、從鍵盤輸入0 后推出程序。六、程序框圖定義頭文件,共用編寫 子函數(shù)編寫子函數(shù) 2 查找數(shù)值,并編寫子函數(shù)3 刪除節(jié)編寫子函數(shù) 4 插入節(jié)輸入 0七、實(shí)驗(yàn)步驟1、可行性分析2、需求分析3、概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)(含繪制流程圖)。4、編碼實(shí)現(xiàn)#include#include#includestruct lian_nodeint n;int num;struct lian_node*link;定義頭文件,共用編寫子函數(shù)編寫子函數(shù) 2 查找數(shù)值,并編寫子函數(shù) 3 刪除節(jié)編寫子函數(shù) 4 插入節(jié)struct lian_node*Create_Lian_Doc();void SearchDoc_n(s

20、truct lian_node*link,int n);void SearchDoc_num(struct lian_node*link,int num);void InsertDoc(struct lian_node*llist,struct lian_node*p,int n); void DeleteDoc(struct lian_node*llist,int n);void Print_Lian_Doc(struct lian_node*llist);int main(void)輸入 0struct lian_node*llist,*p;int n,num,choice;int siz

21、e=sizeof(struct lian_node);llist=Create_Lian_Doc();doprintf( n鏈表操作 n);printf(1:查找 n);printf(2:刪除 n);printf( 3:插入 n);printf(0:退出 n);printf(請(qǐng)選擇功能: );scanf(%d,&choice);switch(choice)case 0:break;case 1:printf(輸入值: );scanf(%d,&num);SearchDoc_num(llist,num);break;case 3:printf(插入結(jié)點(diǎn)位置 :);scanf(%d,&n);prin

22、tf(插入結(jié)點(diǎn)數(shù)值 :);scanf(%d,&num);p=(struct lian_node *)malloc(size);p-n=n+1;p-num=num;p-link=NULL;InsertDoc(llist,p,n);break;case 2:printf(n刪除結(jié)點(diǎn) : );scanf(%d,&n);DeleteDoc(llist,n);break;while (choice!=0);return 0;struct lian_node*Create_Lian_Doc()int i,num,n;int size=sizeof(struct lian_node);struct lian

23、_node *llist,*tail,*p;llist=tail=NULL;printf(請(qǐng)輸入鏈表長(zhǎng)度n=);scanf(%d,&n);printf(請(qǐng)輸入鏈表的各個(gè)值:);for(i=1;in=i;p-num=num;p-link=NULL;if(llist=NULL)llist=p;elsetail-link=p;tail=p;return llist;void SearchDoc_num(struct lian_node*llist,int num)struct lian_node *ptr;if(llist=NULL)printf(n無結(jié)果! n);return;for(ptr=ll

24、ist;ptr;ptr=ptr-link)if(ptr-num=num)printf(輸出序號(hào)為: %dnn,ptr-n);break;if(ptr=NULL)printf(n無結(jié)果! n);void InsertDoc(struct lian_node*llist,struct lian_node*p,int n)int i=1;struct lian_node *ptr,*ptr1,*ptr2;ptr1=llist;ptr2=llist-link;while(ptr1-n!=n & ptr2!=NULL)ptr1=ptr2;ptr2=ptr2-link;if(ptr1-n=n)p-link

25、=ptr2;ptr1-link=p;elseprintf(n無結(jié)果! n);for(ptr=llist;ptr;ptr=ptr-link)ptr-n=i;i+;Print_Lian_Doc(llist);void DeleteDoc(struct lian_node*llist,int n)struct lian_node *ptr,*ptr1,*ptr2;int i=1;while(llist!=NULL & llist-n=n)ptr2=llist;llist=llist-link;free(ptr2);if(llist=NULL)printf(n無結(jié)果! n);ptr1=llist;pt

26、r2=llist-link;while(ptr2!=NULL)if(ptr2-n=n)ptr1-link=ptr2-link;free(ptr2);elseptr1=ptr2;ptr2=ptr1-link;for(ptr=llist;ptr;ptr=ptr-link)ptr-n=i;i+;Print_Lian_Doc(llist);void Print_Lian_Doc(struct lian_node*llist)struct lian_node*ptr;printf(輸出鏈表: );for(ptr=llist;ptr;ptr=ptr-link)printf(%5d,ptr-num);pri

27、ntf(n);5、調(diào)試6、運(yùn)行維護(hù),完善文檔八、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)五約瑟夫環(huán)(一)一、實(shí)驗(yàn)要求 號(hào) 1,2,n 的 n 個(gè)人按 方向 坐一圈,每人持有一個(gè)密 ( 正整數(shù) ) 。一開始任 一個(gè)整數(shù)作 數(shù)上限 m,從第一個(gè)人開始 自1 序 數(shù), 到m 停止 數(shù)。 報(bào) m的人出列, 將他的密 作 新的 m ,從他在 方向上的下一個(gè)人開始重新從 1 數(shù),如此下去,直至所有的人全部出列 止。 一個(gè)程序,求出出列 序。 要求利用 循 表作 存 構(gòu)模 此 程,按照出列 序打印出各人的 號(hào)。例如 m的初 20, n=7,7 個(gè)人的密 依次是3,1, 7, 2, 4, 8, 4,出列的 序 6,1,4, 7, 2, 3, 5。 用 表完成。二、實(shí)驗(yàn)?zāi)康?、復(fù) 指 的概念。2、復(fù) 數(shù)據(jù) 構(gòu)的有關(guān)基本知 。3、復(fù) 表的使用方法。三、預(yù)備知識(shí)1、C 程序 基 知 。2、數(shù)據(jù) 構(gòu)的有關(guān)基本知 。四、實(shí)驗(yàn)內(nèi)容用 表完成 瑟夫 的 程。五、程序清單六、程序框圖請(qǐng)按照自己對(duì)程序設(shè)計(jì)需求的理解進(jìn)行設(shè)計(jì)。七、實(shí)驗(yàn)步驟1、可行性分析2、需求分析3、概要 與 (含 制流程 )。4、 #include #include typedef struct Nodeint Num;struct Nod

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論