2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論