版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì)</p><p> 設(shè)計(jì)課程名稱: C語言程序設(shè)計(jì) </p><p> 題 目:多功能計(jì)算器、洗牌發(fā)牌、學(xué)生文件處理、鏈表處理 </p><p&g
2、t; 學(xué) 生 姓 名: </p><p> 學(xué) 院(系):信息科學(xué)與工程學(xué)院 專 業(yè) 班 級(jí): </p><p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p> 一、 課程設(shè)計(jì)目的:</p&g
3、t;<p> 本課程設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)重要的實(shí)踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完《程序設(shè)計(jì)語言(C)》課程后進(jìn)行的一次全面的綜合練習(xí)。本課程設(shè)計(jì)的目的和任務(wù):</p><p> 1. 鞏固和加深學(xué)生對(duì)C語言課程的基本知識(shí)的理解和掌握</p><p> 2. 掌握C語言編程和程序調(diào)試的基本技能</p><p> 3. 利用C語言進(jìn)行基本的軟件設(shè)
4、計(jì)</p><p> 4. 掌握書寫程序設(shè)計(jì)說明文檔的能力</p><p> 5. 提高運(yùn)用C語言解決實(shí)際問題的能力</p><p> 二. 課程設(shè)計(jì)要求:</p><p> 1. 分析課程設(shè)計(jì)題目的要求</p><p> 2. 寫出程序流程圖</p><p> 3. 編寫程序代碼
5、及重要的解釋,調(diào)試程序使其能正確運(yùn)行</p><p> 4. 設(shè)計(jì)完成的軟件要便于操作和使用</p><p> 4. 設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告</p><p><b> 三.設(shè)計(jì)內(nèi)容:</b></p><p><b> 題一:</b></p><p> 設(shè)計(jì)一個(gè)多
6、功能計(jì)算程序(計(jì)算器模擬)</p><p><b> 實(shí)現(xiàn)功能:</b></p><p> 具備整型數(shù)據(jù)、浮點(diǎn)型數(shù)據(jù)的算術(shù)(加、減、乘、除)運(yùn)算功能。依次輸入第一個(gè)運(yùn)算數(shù)、運(yùn)算符(+,-,*,/)、第二個(gè)運(yùn)算數(shù),然后輸出結(jié)果。結(jié)果可以作為下一個(gè)運(yùn)算的第一運(yùn)算數(shù)。按‘C’清屏,按‘R’退出。</p><p> 例如:輸入:2 +5 <
7、;/p><p><b> 輸出:7</b></p><p><b> 1.概要設(shè)計(jì):</b></p><p> 該程序運(yùn)用switch語句,進(jìn)行運(yùn)算法則的多路選擇,采用循環(huán),使得程序能夠連續(xù)輸入,運(yùn)用字符串函數(shù)對(duì)符號(hào)進(jìn)行處理。</p><p><b> 2.流程圖:</b>
8、</p><p><b> 3.程序如下:</b></p><p><b> /*計(jì)算器*/</b></p><p> #include <stdio.h>/*頭文件*/</p><p> #include <string.h></p><p>
9、; void main()</p><p><b> {</b></p><p> float num1,num2;</p><p><b> char ch;</b></p><p> float values;</p><p> printf("按C
10、清屏,按R退出:\n");</p><p> printf("輸入計(jì)算式:\n");</p><p> scanf("%f",&num1);</p><p> start:/*循環(huán)體*/</p><p> ch=getchar();/*捕捉輸入的字符'+'
11、9;-''*''/'*/</p><p> scanf("%f",&num2);</p><p> while(1)/*while循環(huán)*/</p><p><b> {</b></p><p> switch(ch)/*多路選擇*/</p&
12、gt;<p><b> {</b></p><p><b> case '+':</b></p><p><b> {</b></p><p> values=num1+num2;</p><p> printf("%f&quo
13、t;,values);</p><p> num1=values;/*記入所得值并把它作為下一次運(yùn)算的第一個(gè)數(shù)*/</p><p><b> break;</b></p><p><b> }</b></p><p><b> case '-':</b>
14、</p><p><b> {</b></p><p> values=num1-num2;</p><p> printf("%f",values);</p><p> num1=values;</p><p><b> break;</b>&
15、lt;/p><p><b> }</b></p><p><b> case '*':</b></p><p><b> {</b></p><p> values=num1*num2;</p><p> printf("
16、%f",values);</p><p> num1=values;</p><p><b> break;</b></p><p><b> }</b></p><p><b> case '/':</b></p><p&
17、gt;<b> {</b></p><p> if(num2==0)</p><p><b> {</b></p><p> printf("Error!!!,please input again.\n");/*除數(shù)不能為0*/</p><p> ch=getchar(
18、);/*去除換行鍵的影響*/</p><p> goto start;/*跳出到start,再進(jìn)行*/</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> v
19、alues=num1/num2;</p><p> printf("%f",values);</p><p> num1=values;</p><p><b> break;</b></p><p><b> }</b></p><p><
20、b> }</b></p><p> }/*end switch*/</p><p> scanf("%*c%c",&ch);/*取消換行符的影響*/</p><p> if(ch=='c'|| ch=='C')/*清屏*/</p><p><b>
21、 {</b></p><p> system("cls");</p><p> scanf("%*c%c",&ch);</p><p><b> }</b></p><p> if(ch=='r'||ch=='R')/*
22、退出*/</p><p><b> {</b></p><p> printf("\n\n 謝謝使用!?。?quot;);</p><p><b> break;</b></p><p><b> }</b></p><p>
23、scanf("%f",&num2);</p><p> }/*end while*/</p><p> }/*end main*/</p><p><b> 4.程序運(yùn)行如下:</b></p><p><b> 按c清屏:</b></p>&l
24、t;p><b> 按r退出:</b></p><p> 題二:銀行存取款機(jī)器的模擬</p><p><b> 洗牌和發(fā)牌模擬</b></p><p> 用隨機(jī)數(shù)開發(fā)一個(gè)可用來實(shí)現(xiàn)具體的玩牌游戲中的洗牌和發(fā)牌的模擬程序。</p><p><b> 實(shí)現(xiàn)功能:</b>
25、;</p><p><b> 洗牌功能</b></p><p> 發(fā)牌功能: 54張牌,隨機(jī)發(fā)給4個(gè)玩家,要求顯示各玩家及底牌.</p><p> 設(shè)計(jì)模擬4副牌的程序</p><p><b> 概要設(shè)計(jì):</b></p><p> 運(yùn)用二維數(shù)組,先存儲(chǔ)對(duì)應(yīng)的牌數(shù),
26、對(duì)牌的花色,數(shù)字進(jìn)行存儲(chǔ)。然后采用隨機(jī)函數(shù),隨機(jī)抽取,進(jìn)行交換。單獨(dú)處理大小王的問題。將洗好的牌分發(fā)。</p><p><b> 流程圖:</b></p><p><b> 存儲(chǔ)流程圖:</b></p><p> 洗牌流程圖、發(fā)牌流程圖:</p><p> 處理花色,牌數(shù)流程圖:</p
27、><p><b> 3.程序如下:</b></p><p> /* 洗牌和發(fā)牌模擬*/</p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #include<time.h><
28、/p><p> void shuffle(int Deck[][14]);/*建立洗牌函數(shù)*/</p><p> void deal(int Deck[][14]);/*建立發(fā)牌函數(shù)*/</p><p> void play_f(int num,int Deck[][14]);/*處理牌花色,牌數(shù)函數(shù)*/</p><p> int sui
29、t[4]={3,4,5,6};/*花色*/</p><p> char* face[13]={"A","2","3","4","5","6","7","8","9","10","J",&quo
30、t;Q","k"};</p><p><b> /*牌數(shù)*/</b></p><p> char *gost[2]={"gost","GOST"};/*大小王*/</p><p><b> //主函數(shù)</b></p><p>
31、; void main()</p><p><b> {</b></p><p> int deck[4][14];</p><p><b> int i,j;</b></p><p> srand(time(NULL));/*隨機(jī)*/</p><p> dec
32、k[0][13]=53;</p><p> deck[1][13]=54;</p><p> deck[2][13]=-1;</p><p> deck[3][13]=-1;</p><p> printf("模擬發(fā)牌洗牌游戲:玩家4人\n");</p><p> for(i=0;i<
33、;4;i++)</p><p> for(j=0;j<13;j++)</p><p> deck[i][j]=13*i+j+1;/*把牌放在數(shù)組里*/</p><p> shuffle(deck);/*調(diào)用洗牌函數(shù)*/</p><p> deal(deck);/*調(diào)用發(fā)牌函數(shù)*/</p><p> pr
34、intf("\n");</p><p><b> }</b></p><p> void shuffle(int Deck[][14])/*洗牌*/</p><p><b> {</b></p><p> int i,j,r,c,temp;</p><
35、p> for(i=0;i<=3;i++)</p><p> for(j=0;j<=13-(i>=2);j++)</p><p><b> {</b></p><p> r=rand()%4;/*隨機(jī)*/</p><p> c=rand()%14;</p><p>
36、 while(r>=2&&c==13)</p><p> c=rand()%14;</p><p> temp=Deck[i][j];/*交換*/</p><p> Deck[i][j]=Deck[r][c];</p><p> Deck[r][c]=temp;</p><p><
37、b> }</b></p><p><b> }</b></p><p> void deal(int Deck[][14])/*發(fā)牌*/</p><p><b> {</b></p><p> int num,n=4;/*n為玩家人數(shù)*/</p><p
38、> for(num=1;num<=n;num++)</p><p> play_f(num,n,Deck);/*調(diào)用處理牌花色,牌數(shù)函數(shù)*/</p><p><b> }</b></p><p> void play_f(int num,int n,int Deck[][14])/*處理牌*/</p><
39、p><b> {</b></p><p> int i,j,t=0;</p><p> printf("\nplayer%d:\n",num);/*玩家信息*/</p><p> for(i=0;i<=3;i++)</p><p> for(j=0;j<=13-(i>
40、=2);j++)/*花色,牌數(shù)組合成牌*/</p><p> if(Deck[i][j]%n==num-1)</p><p><b> {</b></p><p><b> t++;</b></p><p><b> if(j==13)</b></p>
41、<p> printf("%s%c",gost[i],t%4==0?'\n':'\t');/*分發(fā)含大小王的牌,成表顯示*/</p><p><b> else</b></p><p> printf("%s-%c%c",face[j],suit[i],t%4==0?'\n
42、':'\t');/*分發(fā)其他牌,成表顯示*/</p><p><b> }</b></p><p><b> }</b></p><p><b> 4.程序運(yùn)行如下:</b></p><p><b> 題三:</b><
43、/p><p><b> 學(xué)生成績(jī)文件管理</b></p><p> 現(xiàn)有3個(gè)班學(xué)生的C語言課程成績(jī),請(qǐng)以班級(jí)為單位對(duì)學(xué)生的成績(jī)按從高到低的順序排序,并將排序后的結(jié)果存入文件中。必須采用指針和函數(shù)。</p><p> 提示:定義三個(gè)一維數(shù)組分別存放三個(gè)班的成績(jī),排序方法可以采用冒泡法或其它方法,在函數(shù)中實(shí)現(xiàn)數(shù)組的排序,在主函數(shù)中調(diào)用函數(shù)。<
44、;/p><p><b> 概要設(shè)計(jì):</b></p><p> 建立結(jié)構(gòu)體,用來儲(chǔ)存各班學(xué)生學(xué)號(hào),成績(jī)。采用冒泡排序法對(duì)學(xué)生成績(jī)進(jìn)行由大到小排序,并寫入文件中保存。</p><p><b> 流程圖:</b></p><p><b> 冒泡排序流程圖:</b></p&
45、gt;<p><b> 否</b></p><p><b> 是</b></p><p><b> 程序如下:</b></p><p> /*3.學(xué)生成績(jī)文件管理*/</p><p> #include<stdio.h></p>
46、<p> #define SIZE 3</p><p> typedef struct student{/*定義結(jié)構(gòu)體*/</p><p> int number;</p><p> int grade;</p><p> }Stu;/*重命名結(jié)構(gòu)體*/</p><p> void sort(
47、Stu grade[]);/*建立排序函數(shù)*/</p><p> FILE *cfptr;</p><p> void main()</p><p><b> {</b></p><p> Stu cl_a[SIZE],cl_b[SIZE],cl_c[SIZE],Grade1[SIZE],Grade2[SIZE]
48、,Grade3[SIZE];/*申明存放學(xué)生學(xué)號(hào)、成績(jī)的數(shù)組*/</p><p><b> int i;</b></p><p> printf("Input class1 scores:\n");/*輸入一班的成績(jī)*/</p><p> for(i=0;i<SIZE;i++)</p><p&
49、gt;<b> {</b></p><p> printf("第%d個(gè)學(xué)生學(xué)號(hào):",i+1);</p><p> scanf("%d",&cl_a[i].number);</p><p> printf("輸入成績(jī):");</p><p> s
50、canf("%d",&cl_a[i].grade);</p><p> //system("cls");/*清屏*/</p><p> Grade1[i]=cl_a[i];/*賦值*/</p><p><b> }</b></p><p> sort(Grade1)
51、;/*調(diào)用排序函數(shù)*/</p><p> printf("Input class2 scores:\n");/*輸入二班的成績(jī)*/</p><p> for(i=0;i<SIZE;i++)</p><p><b> {</b></p><p> printf("第%d個(gè)學(xué)生學(xué)號(hào)
52、:",i+1);</p><p> scanf("%d",&cl_b[i].number);</p><p> printf("輸入成績(jī):");</p><p> scanf("%d",&cl_b[i].grade);</p><p> //syst
53、em("cls");/*清屏*/</p><p> Grade2[i]=cl_b[i];</p><p><b> }</b></p><p> sort(Grade2);/*調(diào)用排序函數(shù)*/</p><p> printf("Input class3 scores:\n"
54、);/*輸入三班的成績(jī)*/</p><p> for(i=0;i<SIZE;i++)</p><p><b> {</b></p><p> printf("第%d個(gè)學(xué)生學(xué)號(hào):",i+1);</p><p> scanf("%d",&cl_c[i].numbe
55、r);</p><p> printf("輸入成績(jī):");</p><p> scanf("%d",&cl_c[i].grade);</p><p> //system("cls");/*清屏*/</p><p> Grade3[i]=cl_c[i];</p&g
56、t;<p><b> }</b></p><p> sort(Grade3);/*調(diào)用排序函數(shù)*/</p><p> printf("Input class1 scores:\n");</p><p> printf("%4s%4s\n","學(xué)號(hào)","成
57、績(jī)");/*列表*/</p><p> for(i=0;i<SIZE;i++)</p><p><b> {</b></p><p> printf("%4d%4d\n",Grade1[i].number,Grade1[i].grade);/*輸出排序后的成績(jī)*/</p><p>
58、;<b> }</b></p><p> printf("Input class2 scores:\n");</p><p> printf("%4s%4s\n","學(xué)號(hào)","成績(jī)");</p><p> for(i=0;i<SIZE;i++)<
59、/p><p><b> {</b></p><p> printf("%4d%4d\n",Grade2[i].number,Grade2[i].grade);/*輸出排序后的成績(jī)*/</p><p><b> }</b></p><p> printf("Input
60、 class3 scores:\n");</p><p> printf("%4s%4s\n","學(xué)號(hào)","成績(jī)");</p><p> for(i=0;i<SIZE;i++)</p><p><b> {</b></p><p> pr
61、intf("%4d%4d\n",Grade3[i].number,Grade3[i].grade);/*輸出排序后的成績(jī)*/</p><p><b> }</b></p><p> if((cfptr=fopen("班級(jí)成績(jī)","w"))==NULL)/*打開文件,并寫入*/</p><
62、;p> printf("Error!!! File could not be opened.\n");/*打開失敗*/</p><p><b> else</b></p><p><b> {</b></p><p> fprintf(cfptr,"%8s%8s%8s\n&quo
63、t;,"班級(jí)","學(xué)號(hào)","成績(jī)");/*文件中的頭文字*/</p><p> for(i=0;i<SIZE;i++)</p><p> fprintf(cfptr,"%8s%8d%8d\n","class 1",Grade1[i].number,Grade1[i].grade);
64、/*打印成績(jī)*/</p><p> for(i=0;i<SIZE;i++)</p><p> fprintf(cfptr,"%8s%8d%8d\n","class 2",Grade2[i].number,Grade2[i].grade);</p><p> for(i=0;i<SIZE;i++)</p&
65、gt;<p> fprintf(cfptr,"%8s%8d%8d\n","class 3",Grade3[i].number,Grade3[i].grade);</p><p><b> }</b></p><p> fclose(cfptr);/*關(guān)閉文件*/</p><p><
66、;b> }</b></p><p> void sort(Stu grade[])/*冒泡排序*/</p><p><b> {</b></p><p><b> int i,j;</b></p><p><b> Stu temp;</b><
67、/p><p> for(i=1;i<SIZE;i++)/*趟數(shù)*/</p><p> for(j=0;j<SIZE-i;j++)</p><p> if(grade[j].grade<grade[j+1].grade)/*交換,從大到小排序*/</p><p><b> {</b></p>
68、;<p> temp=grade[j];</p><p> grade[j]=grade[j+1];</p><p> grade[j+1]=temp;</p><p><b> }</b></p><p><b> }</b></p><p><
69、;b> 4.程序運(yùn)行如下:</b></p><p><b> 輸入 : </b></p><p><b> 運(yùn)行結(jié)果:</b></p><p> 保存在文件中的樣式:</p><p><b> 題四:</b></p><p&
70、gt; 讀一個(gè)文件把各記錄讀入鏈表各結(jié)點(diǎn)中;對(duì)鏈表進(jìn)行添加\刪除操作;把鏈表的每個(gè)結(jié)點(diǎn)元素存儲(chǔ)在該文件中.</p><p><b> 概要設(shè)計(jì):</b></p><p> 該程序運(yùn)用鏈表,函數(shù)調(diào)用完成程序應(yīng)用操作。其中包含保存、輸入、顯示、編輯(添加、刪除、顯示函數(shù))函數(shù)等,用主函數(shù)調(diào)用其它被調(diào)函數(shù)實(shí)現(xiàn)完整的應(yīng)用程序。</p><p>
71、 應(yīng)用函數(shù)調(diào)用,用主函數(shù)調(diào)用被調(diào)函數(shù)并用鏈表顯示出來。詳細(xì)內(nèi)容:顯示主菜單,輸入選項(xiàng)錄入、顯示。保存后可調(diào)出進(jìn)行對(duì)已保存的信息的編輯(添加、修改、刪除)。</p><p><b> 流程圖:</b></p><p> Insert 函數(shù)流程圖:</p><p><b> 是</b></p><p&
72、gt;<b> 否</b></p><p><b> 否</b></p><p><b> 是</b></p><p><b> 真</b></p><p><b> 否</b></p><p>&l
73、t;b> 是</b></p><p> Delete 函數(shù)流程圖:</p><p><b> 假</b></p><p><b> 否</b></p><p><b> 是</b></p><p><b> 否&l
74、t;/b></p><p><b> 是</b></p><p><b> 程序如下: </b></p><p> /*4.讀一個(gè)文件把各記錄讀入鏈表各結(jié)點(diǎn)中;對(duì)鏈表進(jìn)行添加\刪除操作;把鏈表的每個(gè)結(jié)點(diǎn)元素存儲(chǔ)在該文件中.*/</p><p> #include <stdio.h
75、></p><p> #include <stdlib.h></p><p> #define NULL 0</p><p> #define LEN sizeof(struct student)</p><p> typedef struct student/*定義結(jié)構(gòu)體*/</p><p>
76、;<b> {</b></p><p> long int num;/*學(xué)號(hào)*/</p><p> int score;/*分?jǐn)?shù)*/</p><p> struct student *head;</p><p> struct student *next;</p><p><b&
77、gt; }Stu;</b></p><p> struct student *insert(struct student *head,struct student * stud);/*定義插入結(jié)點(diǎn)函數(shù)*/</p><p> struct student *del(struct student * head,long num);/*定義刪除結(jié)點(diǎn)函數(shù)*/</p>
78、;<p> void print(struct student *head);/*顯示數(shù)據(jù),輸出鏈表函數(shù)*/</p><p> void main()</p><p><b> {</b></p><p> Stu a,b,c,*head,*p,*stu;</p><p> FILE *write
79、cfptr;/*文件指針*/</p><p> int choice;</p><p> long del_num;/*刪除的學(xué)號(hào)*/</p><p> a.num=10101;/*賦值*/</p><p> a.score=89;</p><p> b.num=10102;</p><p
80、> b.score=78;</p><p> c.num=10103;</p><p> c.score=76;</p><p><b> head=&a;</b></p><p> a.next=&b;</p><p> b.next=&c;</p
81、><p> c.next=NULL;</p><p><b> p=head;</b></p><p> printf("********************************************************************************\n");/*程序界面*/</p&g
82、t;<p> printf("\t\t 歡迎 Welcome to\n"); </p><p> printf("\n\t\t\t 使用學(xué)生管理系統(tǒng)1.0\n\n\t\t\t\t\t\n"); </p><p> printf("*************************************MENU*****
83、**********************************\n"); </p><p> printf("\t\t\t1. 插入 Insert record to list\n"); /*插入*/</p><p> printf("\t\t\t2. 刪除 mydelete a record\n"); /*刪除*/ </p
84、><p> printf("\t\t\t3. 顯示 Print the record\n"); /*顯示*/</p><p> printf("********************************************************************************\n");</p><p&g
85、t; printf("Input you choice:\n");</p><p> start: scanf("%d",&choice);</p><p> if(choice<1 || choice>3)/*選擇失敗*/</p><p><b> {</b></p&g
86、t;<p> printf("Error!,please choose again.\n");</p><p> goto start;</p><p><b> }</b></p><p> switch(choice)</p><p><b> {</b&g
87、t;</p><p><b> case 1:</b></p><p><b> {</b></p><p> printf("\ninput the inserted record:");</p><p> stu=(Stu *)malloc(LEN);/*分配內(nèi)存*/
88、</p><p> scanf("%ld,%d",&stu->num,&stu->score);</p><p> while(!feof(stdin))/*直到eof退出*/</p><p><b> {</b></p><p> head=insert(head
89、,stu);/*插入數(shù)據(jù)*/</p><p> print(head);</p><p> printf("input the inserted record:");</p><p> scanf("%ld,%d",&stu->num,&stu->score);</p><
90、p><b> }</b></p><p> printf("input choose:\n");</p><p> goto start;/*返回*/</p><p><b> }</b></p><p><b> case 2:</b>&l
91、t;/p><p><b> {</b></p><p> printf("\ninput the deleted number:");</p><p> scanf("%ld",&del_num);/*輸入需刪除的學(xué)號(hào)*/</p><p> while(del_num!
92、=0)</p><p><b> {</b></p><p> head=del(head,del_num);/*刪除*/</p><p> print(head);/*顯示刪除后結(jié)果*/</p><p> printf("input the deleted number:");</p&
93、gt;<p> scanf("%ld",&del_num);</p><p><b> }</b></p><p> printf("input choose:\n");</p><p> goto start;</p><p><b>
94、}</b></p><p><b> case 3:</b></p><p> print(head);/*顯示數(shù)據(jù)*/</p><p><b> break;</b></p><p><b> }</b></p><p> if(
95、(writecfptr=fopen("班級(jí)成績(jī)表.txt","w"))==NULL)</p><p> printf("File could not be found.");/*打開文件失敗*/</p><p><b> else</b></p><p><b> {&
96、lt;/b></p><p> fprintf(writecfptr,"%8s%8s\n","學(xué)號(hào)","成績(jī)");/*寫入文件標(biāo)題*/</p><p><b> do</b></p><p><b> { </b></p><p
97、> fprintf(writecfptr,"%8ld%8d\n",p->num,p->score);/*逐步把數(shù)據(jù)寫入文件中*/</p><p> p=p->next;/*后移結(jié)點(diǎn)*/</p><p> }while(p!=NULL);</p><p> fclose(writecfptr);</p>
98、<p><b> }/*關(guān)閉文件*/</b></p><p><b> }</b></p><p> void print(struct student *head)/*輸出鏈表函數(shù)*/</p><p><b> {</b></p><p> struct
99、 student *p;</p><p> printf("\n Now,These records are :\n");</p><p><b> p=head;</b></p><p> if(head!=NULL)</p><p><b> do</b></
100、p><p><b> {</b></p><p> printf("%8d%8d\n",p->num,p->score);</p><p> p=p->next;/*后移結(jié)點(diǎn),逐步輸出*/</p><p> }while(p!=NULL);</p><p>
101、;<b> }</b></p><p> struct student *insert(struct student *head,struct student * stud) /*插入結(jié)點(diǎn)函數(shù)*/</p><p><b> {</b></p><p> struct student *p0,*p1,*p2
102、;</p><p> p1=head;/*使p1指向第一個(gè)結(jié)點(diǎn)*/</p><p> p0=stud;/*p0指向要插入的結(jié)點(diǎn)*/</p><p> if(head==NULL)/*原來的鏈表是空表*/</p><p><b> {</b></p><p><b> head=
103、p0;</b></p><p> p0->next=NULL;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> while((p0-&g
104、t;num>p1->num) && (p1->next!=NULL))/*使p0結(jié)點(diǎn)作為頭結(jié)點(diǎn)*/</p><p><b> {</b></p><p> p2=p1;/*p2指向剛才p1指向的結(jié)點(diǎn)*/</p><p> p1=p1->next;/*p1后移一位*/</p><p
105、><b> }</b></p><p> if(p0->num<=p1->num)</p><p><b> {</b></p><p> if(head==p1)</p><p> head=p0;/*插到原來第一個(gè)結(jié)點(diǎn)之前*/</p><p&
106、gt;<b> else</b></p><p> p2->next=p0;/*指向p2指向的結(jié)點(diǎn)之后*/</p><p> p0->next=p1;</p><p><b> }</b></p><p><b> else</b></p>
107、<p><b> {</b></p><p> p1->next=p0;</p><p> p0->next=NULL;/*插到最后的結(jié)點(diǎn)之后*/</p><p><b> }</b></p><p><b> }</b></p>
108、<p> return(head);</p><p><b> }</b></p><p> struct student *del(struct student * head,long int num)//*刪除結(jié)點(diǎn)函數(shù)*/</p><p><b> {</b></p><p>
109、; struct student *p1,*p2;</p><p> if(head==NULL)</p><p><b> {</b></p><p> printf("\nlist null!\n");</p><p><b> goto end;</b></
110、p><p> return head;</p><p><b> }</b></p><p><b> p1=head;</b></p><p> while((num != p1->num )&& (p1->next != NULL))/*p1指向的不是要找的結(jié)點(diǎn),
111、并且后面還有結(jié)點(diǎn)*/</p><p><b> {</b></p><p><b> p2=p1;</b></p><p> p1=p1->next;/*p1后移一位*/</p><p><b> }</b></p><p> if(nu
112、m==p1->num)/*找到了*/</p><p><b> {</b></p><p> if(p1==head)</p><p> head=p1->next;/*若p1指向的是首結(jié)點(diǎn),把第二個(gè)結(jié)點(diǎn)地址賦給head*/</p><p><b> else</b></p
113、><p> p2->next=p1->next;/*否則將下一個(gè)結(jié)點(diǎn)地址賦給前一結(jié)點(diǎn)地址*/ </p><p> printf("delete:%ld\n",num);</p><p><b> }</b></p><p><b> else</b></p&
114、gt;<p> printf("%ld not been found!\n",num);/*找不到該結(jié)點(diǎn)*/</p><p> end: return(head);</p><p><b> }</b></p><p><b> 4.程序運(yùn)行如下:</b></p>&
115、lt;p><b> 界面:選擇</b></p><p><b> 錯(cuò)誤!未指定書簽。</b></p><p> 選擇1插入數(shù)據(jù),并顯示出來:</p><p><b> 文件中的顯示:</b></p><p> 選擇2刪除一條數(shù)據(jù),并顯示出來:</p>
116、<p><b> 顯示操作后的結(jié)果:</b></p><p> 四、設(shè)計(jì)中遇到的難點(diǎn)及解決辦法:</p><p> 對(duì)于第一題,開始編的時(shí)候,感覺很順手,畢竟是學(xué)過的東西。但是遇到清屏的問題,不知該怎么處理。通過同學(xué),了解到system(‘cls’)的使用,問題迎刃而解。</p><p> 對(duì)于第二題,大小王的問題不知怎樣
117、分發(fā),發(fā)牌是總是會(huì)出現(xiàn)第一個(gè)人發(fā)13張,第二個(gè)人發(fā)26張,第三個(gè)人發(fā)39張,第四個(gè)人發(fā)52張。解決辦法:大小王采用重新存儲(chǔ)在數(shù)組中,發(fā)牌時(shí)調(diào)用。至于發(fā)牌問題,循環(huán)語句處出現(xiàn)問題,經(jīng)修正,問題解決。</p><p> 對(duì)于第三題,出現(xiàn)無法從文件中讀出數(shù)據(jù),排序也出現(xiàn)問題,無法將成績(jī)按大小排。后經(jīng)查找,讀出數(shù)據(jù)格式出現(xiàn)錯(cuò)誤。冒泡排序出現(xiàn)問題,指針的誤用(值與地址)。經(jīng)查找,并請(qǐng)教同學(xué)后,問題解決。</p>
118、;<p> 對(duì)于第四題,由于鏈表的學(xué)習(xí)不是很深入,從文件中讀入數(shù)據(jù)用鏈表結(jié)點(diǎn)時(shí)無從下手,于是參考譚浩強(qiáng)編的《c程序設(shè)計(jì)(第三版)》</p><p> 一書中對(duì)鏈表結(jié)點(diǎn)的說明,以及插入結(jié)點(diǎn),刪除結(jié)點(diǎn)的函數(shù)的使用,受益匪淺,在書上的參考下,寫出了其程序,并編寫了菜單。運(yùn)行時(shí)由于忽略了插入結(jié)點(diǎn)要分配內(nèi)存,導(dǎo)致錯(cuò)誤。后經(jīng)查找,問題解決了。</p><p> 五、課程設(shè)計(jì)心得與體
119、會(huì)</p><p> 通過兩周的c課程設(shè)計(jì)的學(xué)習(xí),在輔導(dǎo)老師的耐心輔導(dǎo)解答下,終于將此課程設(shè)計(jì)圓滿完成。</p><p> 在這個(gè)編程過程中曾經(jīng)我想放棄過,因?yàn)閷?shí)在太復(fù)雜,但是最終我還是說服了自己堅(jiān)持了下來,看到自己最后的作業(yè),雖然不是很優(yōu)秀,但是還是很自豪。在編寫的過程中,發(fā)現(xiàn)其實(shí)里面還是充滿樂趣的,一旦真的研究下去什么事情都可以放下,來認(rèn)真研究。在此學(xué)習(xí)當(dāng)中我對(duì)c語言這門課程更加理
120、解透徹,融會(huì)貫通了。</p><p> 無論什么樣的問題,只要和同學(xué)互相討論,向老師討教都能迎刃而解。在程序設(shè)計(jì)階段,與同學(xué)之間的交流和溝通是十分重要的。有問題到家一起討論,說自己的想法,經(jīng)過大家的交流,很容易解決問題同時(shí)也會(huì)發(fā)現(xiàn)新的問題,大家交換意見共同進(jìn)步,我想每個(gè)人都會(huì)有不同的收獲。在這收獲的過程中老師的諄諄教導(dǎo),給了我很大的幫助,遇到解決不了的問題第一時(shí)間問老師是最好的選擇。無論什么樣的問題他們都耐心的
121、傾聽,詳細(xì)的講解,從來都仔細(xì)認(rèn)真,盡可能的幫助我們把問題搞懂,同時(shí)也會(huì)適當(dāng)?shù)膸椭覀冞M(jìn)一步理解c語言的基礎(chǔ)能容,讓我們?cè)诶斫獾幕A(chǔ)上,編寫出正確規(guī)范的程序。不單單把程序的問題解決,同時(shí)也掌握相應(yīng)的知識(shí)點(diǎn),真是受益匪淺。特別是對(duì)自己邏輯思維的培養(yǎng)有很大的幫助。</p><p> 我相信在以后的學(xué)習(xí)過程中我會(huì)更加的努力學(xué)習(xí)了。</p><p><b> 六、參考文獻(xiàn):</b
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- c語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 《c++語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- c語言程序設(shè)計(jì)課程設(shè)計(jì)
- c++課程設(shè)計(jì)--c++程序設(shè)計(jì)語言
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告-景點(diǎn)查詢系統(tǒng)
- c語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告—宿舍管理系統(tǒng)
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)指導(dǎo)手冊(cè)()
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)推箱子
- c語言程序設(shè)計(jì)課程
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告---商品訂購系統(tǒng)設(shè)計(jì)
- 《程序設(shè)計(jì)語言(c++)》課程設(shè)計(jì)
- c++程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告-- linux c 程序設(shè)計(jì)
- 《c語言程序設(shè)計(jì)課程設(shè)計(jì)》-課程教學(xué)大綱
- c課程設(shè)計(jì)報(bào)告-- windows程序設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)--紅旗圖案的程序設(shè)計(jì)
- c語言程序設(shè)計(jì)報(bào)告
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告-招生信息查詢系統(tǒng)
- 系統(tǒng)軟件程序設(shè)計(jì)報(bào)告(linux下c語言程序課程設(shè)計(jì)報(bào)告)
評(píng)論
0/150
提交評(píng)論