C語言實(shí)驗(yàn)報(bào)告_第1頁
C語言實(shí)驗(yàn)報(bào)告_第2頁
C語言實(shí)驗(yàn)報(bào)告_第3頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(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ù)備知識(shí)1、 VC6.0 的安裝與使用。2、 C 程序設(shè)計(jì)基礎(chǔ)知識(shí)。四、實(shí)驗(yàn)內(nèi)容采用模塊化程序設(shè)計(jì)完成進(jìn)制轉(zhuǎn)換。五、程序框圖六、程序清單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、;( 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)步驟#include <stdio.h>charnum16='0','1','2','3','4','5','6','7','8','9','A','B','C',&#

3、39;D','E','F'void fun(int n, int m)int 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("

4、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;while(1);fun(a,c);printf("Go on? (Y/N):");cIn = getchar( );if(cIn = 'N' | cIn = 'n')return 0;while(1);3、

5、調(diào)試。八、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)二學(xué)生班級(jí)成績統(tǒng)計(jì)一、實(shí)驗(yàn)要求設(shè)計(jì)一個(gè)統(tǒng)計(jì)班級(jí)學(xué)生成績的程序。統(tǒng)計(jì)一個(gè)班 ( 最多有 35 人)的學(xué)生成績,要求能實(shí)現(xiàn)如下四個(gè)功能:(1) 由鍵盤輸入每個(gè)學(xué)生的學(xué)號(hào)和四門課程的成績。(2) 計(jì)算每個(gè)學(xué)生的平均成績和總成績。(3)按總成績從高到低排名,并按名次輸出每個(gè)學(xué)生的情況,包括:學(xué)號(hào),各科成績,平均成績,總成績,排名(4) 根據(jù)要求輸出某門課程 ( 由鍵盤輸入課程號(hào) ) 成績?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)境的安裝、使用。2、進(jìn)一步復(fù)習(xí) C 程序設(shè)

6、計(jì)等基礎(chǔ)課程的知識(shí)。3、進(jìn)一步掌握C 語言編程的方法。三、預(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é)生成績的程序。六、程序清單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:編寫查詢程序,輸入查詢的科目縮寫,并排名后輸出。七、實(shí)驗(yàn)步驟1、可行性分析2、需求分析3、概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)(含繪制流程圖)。4、編碼實(shí)現(xiàn)#include <stdio.h&g

7、t;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 退出輸入 ):" );scanf( "%d", &stub.id );fflus

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

9、ub.english +stub.chinese,puter; addaverb = addsumb / 4.0;orderb = stub.id;b+;int query( int id )int i = 0;for( i=0; i<b; i+ )if ( stui.id = id )return i;return -1;void paiming()int i,j;for( i=0; i<b; i+ )for( j=i+1; j<b; j+ )if ( addsumi - addsumj < 0.001 )int temp_id = orderi;or

10、deri = orderj;orderj = temp_id;void output()int i;printf( "名次 學(xué)號(hào)姓名數(shù)學(xué) 英語 語文for( i=0; i<b; i+ )int j = query( orderi );if ( j<0 )計(jì)算機(jī)總分平均 n" );6/21 頁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,

11、stuj.id, ,stuj.math, stuj.english, stuj.chinese,puter,addsumj, addaverj );void chaxun()char a1;int i;printf("輸入你所想要查詢的課程代號(hào):");scanf("%c",&a1);printf( "名次 學(xué)號(hào)姓名數(shù)學(xué) 英語 語文 計(jì)算機(jī)總分 平均 n" );if(a1='m')for(i=0;i<b;i+)if(stui.math>90 && or

12、deri< 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')for(i=0;i<b;i+)if(stui.english>90 && orderi< 5)printf( "%02d %5.d %s %4.2f %4.

13、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;i<b;i+)if(stui.chinese>90 && orderi< 5)printf( "%02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2fn", i+1,stui.id

14、, ,stui.math, stui.english, stui.chinese,puter,addsumi, addaveri );elsefor(i=0;i<b;i+)if(puter>90 && 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,a

15、ddsumi, addaveri );void main()shuru();paiming();output();chaxun();5、調(diào)試。八、實(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è)文件。五、程序清單請(qǐng)按

16、照自己對(duì)程序設(shè)計(jì)需求的理解進(jìn)行設(shè)計(jì)。六、程序框圖七、實(shí)驗(yàn)步驟#include <stdio.h>#include <stdlib.h>void Output(FILE *fp)char ch,t,str3100;int i=0,j,k;while(ch=fgetc(fp)!=EOF)str3i = ch;i+;for(j=0;j<=i;j+)for(k=j+1;k<i;k+)if(str3j>str3k)t= str3j;str3j = str3k ;str3k = t;for(j=0;j<=i;j+)printf("%c",

17、str3j);main(void)FILE *fp1,*fp2,*fp3;char ch1100,ch2100,ch3100;char ch,str1100,str2100;printf("please input first filename:n");scanf("%s",ch1);printf("please input second filename: n");scanf("%s",ch2);printf("please input third filename:n");scanf(&qu

18、ot;%s",ch3);if(fp1=fopen(ch1,"w")= NULL)printf("can not open file");getchar();exit(0);printf("please write first file:n");getchar();gets(str1);fputs(str1,fp1);printf("n");if(fp2=fopen(ch2,"w")= NULL)printf("can not open file");getchar(

19、);exit(0);printf("please write second filegetchar();gets(str2);fputs(str2,fp2);printf("n");fclose(fp1);fclose(fp2);if( fp3 = fopen(ch3,"w")= NULL ):n");printf("can not open file");getchar();exit(0);fp1=fopen(ch1,"r");while(ch = fgetc(fp1)!= EOF)fputc

20、(ch,fp3);fclose(fp1);fp2=fopen(ch2,"r");while(ch=fgetc(fp2)!= EOF)fputc(ch,fp3);fclose(fp2);fclose(fp3);fp3=fopen(ch3,"r");printf("the third file: n");Output(fp3);printf("n");八、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)四鏈表基本操作一、實(shí)驗(yàn)要求完成單鏈表的建立、插入和刪除操作。鏈表,就是用“指針域”鏈在一起的自引用結(jié)構(gòu)( 稱為“結(jié)點(diǎn)” ) 的線性集合。鏈表是通過指向鏈表

21、第一個(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)的有關(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)容完成單

22、鏈表的建立、插入和刪除操作。五、程序清單1、定義頭文件,編寫共用體結(jié)構(gòu)體及主函數(shù);2、在主函數(shù)中運(yùn)用switch以及 do while函數(shù)使程序可以循環(huán)調(diào)用子函數(shù);3、編寫子函數(shù)1:手動(dò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ù)值的鏈表;7、從鍵盤輸入0 后推出程序。六、程序框圖七、實(shí)驗(yàn)步驟1、可行性分析2、需求分析 34、編碼實(shí)現(xiàn)#include<s

23、tdio.h> #include<stdlib.h>#include<string.h>struct lian_nodeint n; int num;struct lian_node*link;struct lian_node*Create_Lian_Doc(); void SearchDoc_num(structlian_node*link,int num); void InsertDoc(struct lian_node*llist,structlian_node*p,int n); void DeleteDoc(struct lian_node*llist,

24、int n); voidPrint_Lian_Doc(struct lian_node*llist);int main(void)struct lian_node*llist,*p;int n,num,choice;int size=sizeof(struct lian_node);llist=Create_Lian_Doc();doprintf(" n鏈表操作 n");printf(" 1:查找 n");printf(" 2:刪除 n");printf(" 3:插入 n");printf(" 0 :退出

25、 n");printf("請(qǐng)選擇功能: ");scanf("%d",&choice);switch(choice)case 0:break;case 1:printf("輸入值: ");scanf("%d",&num);13/21 頁SearchDoc_num(llist,num);break;case 3:printf("插入結(jié)點(diǎn)位置 :");scanf("%d",&n);printf("插入結(jié)點(diǎn)數(shù)值 :");scanf

26、("%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 siz

27、e=sizeof(struct lian_node);struct lian_node *llist,*tail,*p;llist=tail=NULL;printf("請(qǐng)輸入鏈表長度n=");scanf("%d",&n);printf("請(qǐng)輸入鏈表的各個(gè)值:");for(i=1;i<=n;i+)p=(struct lian_node *)malloc(size);scanf("%d",&num);p->n=i;p->num=num;p->link=NULL;if(llist=

28、NULL)llist=p;else14/21 頁tail->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=llist;ptr;ptr=ptr->link)if(ptr->num=num)printf("輸出序號(hào)為: %dnn",ptr->n);break;if(ptr=NULL)prin

29、tf("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=ptr2;ptr1->link=p;elseprintf("n無結(jié)

30、果! 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");pt

31、r1=llist;ptr2=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

32、(ptr=llist;ptr;ptr=ptr->link)printf("%5d",ptr->num);printf("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è)人按順時(shí)針方向圍坐一圈,每人持有一個(gè)密碼( 正整數(shù) )。一開始任選一個(gè)整數(shù)作為報(bào)數(shù)上限值m ,從第一個(gè)人開始順時(shí)針自1順序報(bào)數(shù),報(bào)到m 時(shí)停止報(bào)數(shù)。報(bào)m 的人出列,將他的密碼作為新的m 值,從他在順時(shí)針方向上的下一個(gè)人開始重新從1 報(bào)數(shù),如此下去,直至所有的人全部出列為止。試設(shè)計(jì)一個(gè)程序,求出出列順序。要求利用

33、單循環(huán)鏈表作為存儲(chǔ)結(jié)構(gòu)模擬此過程,按照出列順序打印出各人的編號(hào)。例如m 的初值為 20, n=7,7 個(gè)人的密碼依次是 3, 1, 7, 2, 4, 8, 4,出列的順序?yàn)?6,1, 4, 7, 2, 3,5。請(qǐng)用鏈表完成。二、實(shí)驗(yàn)?zāi)康?、復(fù)習(xí)指針的概念。2、復(fù)習(xí)數(shù)據(jù)結(jié)構(gòu)的有關(guān)基本知識(shí)。3、復(fù)習(xí)鏈表的使用方法。三、預(yù)備知識(shí)1、 C 程序設(shè)計(jì)基礎(chǔ)知識(shí)。2、數(shù)據(jù)結(jié)構(gòu)的有關(guān)基本知識(shí)。四、實(shí)驗(yàn)內(nèi)容用鏈表完成約瑟夫環(huán)的過程。五、程序清單請(qǐng)按照自己對(duì)程序設(shè)計(jì)需求的理解進(jìn)行設(shè)計(jì)。六、程序框圖開始輸入人數(shù)每個(gè)人對(duì)應(yīng)輸入密形成鏈表按約瑟夫環(huán)輸出出列順序七、實(shí)驗(yàn)步驟結(jié)束1、可行性分析2、需求分析3、概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)(含繪制流程圖)。4、編碼實(shí)現(xiàn)#include <stdio.h>#include <malloc.h>typedef struct Nodeint Num;struct Node *next;JoseNode, *PNode, *HNode;int JoseInit(HNode *h)if (!h)printf("初始化鏈表錯(cuò)誤!n");return 0;18/21頁(*h)->next = (*h);/ return 1;循環(huán)單鏈表int JoseInsert(JoseNode *h, int pos, int x)P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論