版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計</p><p> 設(shè)計課程名稱: C語言程序設(shè)計 </p><p> 題 目:多功能計算器、洗牌發(fā)牌、學(xué)生文件處理、鏈表處理 </p><p&g
2、t; 學(xué) 生 姓 名: </p><p> 學(xué) 院(系):信息科學(xué)與工程學(xué)院 專 業(yè) 班 級: </p><p><b> 課程設(shè)計任務(wù)書</b></p><p> 一、 課程設(shè)計目的:</p&g
3、t;<p> 本課程設(shè)計是計算機科學(xué)與技術(shù)專業(yè)重要的實踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完《程序設(shè)計語言(C)》課程后進行的一次全面的綜合練習(xí)。本課程設(shè)計的目的和任務(wù):</p><p> 1. 鞏固和加深學(xué)生對C語言課程的基本知識的理解和掌握</p><p> 2. 掌握C語言編程和程序調(diào)試的基本技能</p><p> 3. 利用C語言進行基本的軟件設(shè)
4、計</p><p> 4. 掌握書寫程序設(shè)計說明文檔的能力</p><p> 5. 提高運用C語言解決實際問題的能力</p><p> 二. 課程設(shè)計要求:</p><p> 1. 分析課程設(shè)計題目的要求</p><p> 2. 寫出程序流程圖</p><p> 3. 編寫程序代碼
5、及重要的解釋,調(diào)試程序使其能正確運行</p><p> 4. 設(shè)計完成的軟件要便于操作和使用</p><p> 4. 設(shè)計完成后提交課程設(shè)計報告</p><p><b> 三.設(shè)計內(nèi)容:</b></p><p><b> 題一:</b></p><p> 設(shè)計一個多
6、功能計算程序(計算器模擬)</p><p><b> 實現(xiàn)功能:</b></p><p> 具備整型數(shù)據(jù)、浮點型數(shù)據(jù)的算術(shù)(加、減、乘、除)運算功能。依次輸入第一個運算數(shù)、運算符(+,-,*,/)、第二個運算數(shù),然后輸出結(jié)果。結(jié)果可以作為下一個運算的第一運算數(shù)。按‘C’清屏,按‘R’退出。</p><p> 例如:輸入:2 +5 <
7、;/p><p><b> 輸出:7</b></p><p><b> 1.概要設(shè)計:</b></p><p> 該程序運用switch語句,進行運算法則的多路選擇,采用循環(huán),使得程序能夠連續(xù)輸入,運用字符串函數(shù)對符號進行處理。</p><p><b> 2.流程圖:</b>
8、</p><p><b> 3.程序如下:</b></p><p><b> /*計算器*/</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("輸入計算式:\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;/*記入所得值并把它作為下一次運算的第一個數(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,再進行*/</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 謝謝使用?。?!");</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.程序運行如下:</b></p><p><b> 按c清屏:</b></p>&l
24、t;p><b> 按r退出:</b></p><p> 題二:銀行存取款機器的模擬</p><p><b> 洗牌和發(fā)牌模擬</b></p><p> 用隨機數(shù)開發(fā)一個可用來實現(xiàn)具體的玩牌游戲中的洗牌和發(fā)牌的模擬程序。</p><p><b> 實現(xiàn)功能:</b>
25、;</p><p><b> 洗牌功能</b></p><p> 發(fā)牌功能: 54張牌,隨機發(fā)給4個玩家,要求顯示各玩家及底牌.</p><p> 設(shè)計模擬4副牌的程序</p><p><b> 概要設(shè)計:</b></p><p> 運用二維數(shù)組,先存儲對應(yīng)的牌數(shù),
26、對牌的花色,數(shù)字進行存儲。然后采用隨機函數(shù),隨機抽取,進行交換。單獨處理大小王的問題。將洗好的牌分發(fā)。</p><p><b> 流程圖:</b></p><p><b> 存儲流程圖:</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));/*隨機*/</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;/*隨機*/</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.程序運行如下:</b></p><p><b> 題三:</b><
43、/p><p><b> 學(xué)生成績文件管理</b></p><p> 現(xiàn)有3個班學(xué)生的C語言課程成績,請以班級為單位對學(xué)生的成績按從高到低的順序排序,并將排序后的結(jié)果存入文件中。必須采用指針和函數(shù)。</p><p> 提示:定義三個一維數(shù)組分別存放三個班的成績,排序方法可以采用冒泡法或其它方法,在函數(shù)中實現(xiàn)數(shù)組的排序,在主函數(shù)中調(diào)用函數(shù)。<
44、;/p><p><b> 概要設(shè)計:</b></p><p> 建立結(jié)構(gòu)體,用來儲存各班學(xué)生學(xué)號,成績。采用冒泡排序法對學(xué)生成績進行由大到小排序,并寫入文件中保存。</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é)生成績文件管理*/</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é)號、成績的數(shù)組*/</p><p><b> int i;</b></p><p> printf("Input class1 scores:\n");/*輸入一班的成績*/</p><p> for(i=0;i<SIZE;i++)</p><p&
49、gt;<b> {</b></p><p> printf("第%d個學(xué)生學(xué)號:",i+1);</p><p> scanf("%d",&cl_a[i].number);</p><p> printf("輸入成績:");</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");/*輸入二班的成績*/</p><p> for(i=0;i<SIZE;i++)</p><p><b> {</b></p><p> printf("第%d個學(xué)生學(xué)號
52、:",i+1);</p><p> scanf("%d",&cl_b[i].number);</p><p> printf("輸入成績:");</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、);/*輸入三班的成績*/</p><p> for(i=0;i<SIZE;i++)</p><p><b> {</b></p><p> printf("第%d個學(xué)生學(xué)號:",i+1);</p><p> scanf("%d",&cl_c[i].numbe
55、r);</p><p> printf("輸入成績:");</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é)號","成
57、績");/*列表*/</p><p> for(i=0;i<SIZE;i++)</p><p><b> {</b></p><p> printf("%4d%4d\n",Grade1[i].number,Grade1[i].grade);/*輸出排序后的成績*/</p><p>
58、;<b> }</b></p><p> printf("Input class2 scores:\n");</p><p> printf("%4s%4s\n","學(xué)號","成績");</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);/*輸出排序后的成績*/</p><p><b> }</b></p><p> printf("Input
60、 class3 scores:\n");</p><p> printf("%4s%4s\n","學(xué)號","成績");</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);/*輸出排序后的成績*/</p><p><b> }</b></p><p> if((cfptr=fopen("班級成績","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;,"班級","學(xué)號","成績");/*文件中的頭文字*/</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、/*打印成績*/</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.程序運行如下:</b></p><p><b> 輸入 : </b></p><p><b> 運行結(jié)果:</b></p><p> 保存在文件中的樣式:</p><p><b> 題四:</b></p><p&
70、gt; 讀一個文件把各記錄讀入鏈表各結(jié)點中;對鏈表進行添加\刪除操作;把鏈表的每個結(jié)點元素存儲在該文件中.</p><p><b> 概要設(shè)計:</b></p><p> 該程序運用鏈表,函數(shù)調(diào)用完成程序應(yīng)用操作。其中包含保存、輸入、顯示、編輯(添加、刪除、顯示函數(shù))函數(shù)等,用主函數(shù)調(diào)用其它被調(diào)函數(shù)實現(xiàn)完整的應(yīng)用程序。</p><p>
71、 應(yīng)用函數(shù)調(diào)用,用主函數(shù)調(diào)用被調(diào)函數(shù)并用鏈表顯示出來。詳細內(nèi)容:顯示主菜單,輸入選項錄入、顯示。保存后可調(diào)出進行對已保存的信息的編輯(添加、修改、刪除)。</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.讀一個文件把各記錄讀入鏈表各結(jié)點中;對鏈表進行添加\刪除操作;把鏈表的每個結(jié)點元素存儲在該文件中.*/</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é)號*/</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é)點函數(shù)*/</p><p> struct student *del(struct student * head,long num);/*定義刪除結(jié)點函數(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é)號*/</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é)號*/</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("班級成績表.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é)號","成績");/*寫入文件標(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é)點*/</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é)點,逐步輸出*/</p><p> }while(p!=NULL);</p><p>
101、;<b> }</b></p><p> struct student *insert(struct student *head,struct student * stud) /*插入結(jié)點函數(shù)*/</p><p><b> {</b></p><p> struct student *p0,*p1,*p2
102、;</p><p> p1=head;/*使p1指向第一個結(jié)點*/</p><p> p0=stud;/*p0指向要插入的結(jié)點*/</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é)點作為頭結(jié)點*/</p><p><b> {</b></p><p> p2=p1;/*p2指向剛才p1指向的結(jié)點*/</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;/*插到原來第一個結(jié)點之前*/</p><p&
106、gt;<b> else</b></p><p> p2->next=p0;/*指向p2指向的結(jié)點之后*/</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é)點之后*/</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é)點函數(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é)點,
111、并且后面還有結(jié)點*/</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é)點,把第二個結(jié)點地址賦給head*/</p><p><b> else</b></p
113、><p> p2->next=p1->next;/*否則將下一個結(jié)點地址賦給前一結(jié)點地址*/ </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é)點*/</p><p> end: return(head);</p><p><b> }</b></p><p><b> 4.程序運行如下:</b></p>&
115、lt;p><b> 界面:選擇</b></p><p><b> 錯誤!未指定書簽。</b></p><p> 選擇1插入數(shù)據(jù),并顯示出來:</p><p><b> 文件中的顯示:</b></p><p> 選擇2刪除一條數(shù)據(jù),并顯示出來:</p>
116、<p><b> 顯示操作后的結(jié)果:</b></p><p> 四、設(shè)計中遇到的難點及解決辦法:</p><p> 對于第一題,開始編的時候,感覺很順手,畢竟是學(xué)過的東西。但是遇到清屏的問題,不知該怎么處理。通過同學(xué),了解到system(‘cls’)的使用,問題迎刃而解。</p><p> 對于第二題,大小王的問題不知怎樣
117、分發(fā),發(fā)牌是總是會出現(xiàn)第一個人發(fā)13張,第二個人發(fā)26張,第三個人發(fā)39張,第四個人發(fā)52張。解決辦法:大小王采用重新存儲在數(shù)組中,發(fā)牌時調(diào)用。至于發(fā)牌問題,循環(huán)語句處出現(xiàn)問題,經(jīng)修正,問題解決。</p><p> 對于第三題,出現(xiàn)無法從文件中讀出數(shù)據(jù),排序也出現(xiàn)問題,無法將成績按大小排。后經(jīng)查找,讀出數(shù)據(jù)格式出現(xiàn)錯誤。冒泡排序出現(xiàn)問題,指針的誤用(值與地址)。經(jīng)查找,并請教同學(xué)后,問題解決。</p>
118、;<p> 對于第四題,由于鏈表的學(xué)習(xí)不是很深入,從文件中讀入數(shù)據(jù)用鏈表結(jié)點時無從下手,于是參考譚浩強編的《c程序設(shè)計(第三版)》</p><p> 一書中對鏈表結(jié)點的說明,以及插入結(jié)點,刪除結(jié)點的函數(shù)的使用,受益匪淺,在書上的參考下,寫出了其程序,并編寫了菜單。運行時由于忽略了插入結(jié)點要分配內(nèi)存,導(dǎo)致錯誤。后經(jīng)查找,問題解決了。</p><p> 五、課程設(shè)計心得與體
119、會</p><p> 通過兩周的c課程設(shè)計的學(xué)習(xí),在輔導(dǎo)老師的耐心輔導(dǎo)解答下,終于將此課程設(shè)計圓滿完成。</p><p> 在這個編程過程中曾經(jīng)我想放棄過,因為實在太復(fù)雜,但是最終我還是說服了自己堅持了下來,看到自己最后的作業(yè),雖然不是很優(yōu)秀,但是還是很自豪。在編寫的過程中,發(fā)現(xiàn)其實里面還是充滿樂趣的,一旦真的研究下去什么事情都可以放下,來認(rèn)真研究。在此學(xué)習(xí)當(dāng)中我對c語言這門課程更加理
120、解透徹,融會貫通了。</p><p> 無論什么樣的問題,只要和同學(xué)互相討論,向老師討教都能迎刃而解。在程序設(shè)計階段,與同學(xué)之間的交流和溝通是十分重要的。有問題到家一起討論,說自己的想法,經(jīng)過大家的交流,很容易解決問題同時也會發(fā)現(xiàn)新的問題,大家交換意見共同進步,我想每個人都會有不同的收獲。在這收獲的過程中老師的諄諄教導(dǎo),給了我很大的幫助,遇到解決不了的問題第一時間問老師是最好的選擇。無論什么樣的問題他們都耐心的
121、傾聽,詳細的講解,從來都仔細認(rèn)真,盡可能的幫助我們把問題搞懂,同時也會適當(dāng)?shù)膸椭覀冞M一步理解c語言的基礎(chǔ)能容,讓我們在理解的基礎(chǔ)上,編寫出正確規(guī)范的程序。不單單把程序的問題解決,同時也掌握相應(yīng)的知識點,真是受益匪淺。特別是對自己邏輯思維的培養(yǎng)有很大的幫助。</p><p> 我相信在以后的學(xué)習(xí)過程中我會更加的努力學(xué)習(xí)了。</p><p><b> 六、參考文獻:</b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言程序設(shè)計課程設(shè)計報告
- 《c語言程序設(shè)計》課程設(shè)計報告
- c語言程序設(shè)計課程設(shè)計
- 《c++語言程序設(shè)計》課程設(shè)計報告
- c++課程設(shè)計--c++程序設(shè)計語言
- c語言程序設(shè)計課程設(shè)計報告—宿舍管理系統(tǒng)
- 《c語言程序設(shè)計》課程設(shè)計報告-景點查詢系統(tǒng)
- 《c語言程序設(shè)計》課程設(shè)計推箱子
- 《程序設(shè)計語言(c++)》課程設(shè)計
- c語言程序設(shè)計課程設(shè)計(論文)-迷宮
- 《c語言程序設(shè)計》課程設(shè)計指導(dǎo)手冊()
- c語言程序設(shè)計課程
- 《c語言程序設(shè)計》課程設(shè)計報告---商品訂購系統(tǒng)設(shè)計
- 課程設(shè)計報告-- linux c 程序設(shè)計
- c++程序設(shè)計課程設(shè)計報告
- c課程設(shè)計報告-- windows程序設(shè)計報告
- 《c語言程序設(shè)計》課程設(shè)計報告-招生信息查詢系統(tǒng)
- 《c語言程序設(shè)計課程設(shè)計》-課程教學(xué)大綱
- c語言課程設(shè)計--紅旗圖案的程序設(shè)計
- c語言程序設(shè)計報告
評論
0/150
提交評論