c語言課程設計總結
❶ c語言課程設計 心得誰能幫我編幾句啊
經過此次上機實驗,我對C語言的理解又更進一步,對學好它更有信心了…………我一般是這樣的
❷ c語言課程設計報告
#include<stdio.h>
#include<conio.h>
int
CF(int
i)/*求10的i次方的函數*/
{
int
j,m=1;
for(j=0;j<i;j++)
m=10*m;
return
m;
}
void
sort(int
fun[],int
n)/*對分離後的六個數進行從小到大排序*/
{
int
i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(fun[i]>fun[j])
{
temp=fun[i];
fun[i]=fun[j];
fun[j]=temp;
}
}
}
}
int
pick(int
a,int
s)/*挑選這個數乘以s後滿足的數a*/
{
int
i;
int
fun1[6],fun2[6],b;
b=a*s;
for(i=0;i<6;i++)
{
fun1[i]=a%CF(i+1)/CF(i);/*求這個六位數每位上的數字*/
fun2[i]=b%CF(i+1)/CF(i);
}
sort(fun1,6);/*對數字進行排序*/
sort(fun2,6);
for(i=0;i<6;i++)
{
if(fun1[i]!=fun2[i])
break;/*依次進行比較,如果均相同即滿足,返回1*/
}
if(i==6)
return
1;
else
return
0;
}
int
search(int
a[],int
s)/*搜索到滿足題意的結果保存在數組a[]中*/
{
int
i,n=0;
for(i=100000;i<166668;i++)
{
if(pick(i,s))
{
a[n]=i;
n++;
}
else
continue;
}
return
n;
}
void
print(int
a[],int
n)/*在屏幕上列印結果*/
{
int
i;
for(i=0;i<n;i++)
{
printf("%d
",a[i]);
}
printf("\n\n");
}
void
main()
{
int
a[100],m,s[5]={2,3,4,5,6},i;
for(i=0;i<5;i++)
{
printf("這個數乘以%d後滿足條件的結果\n",s[i]);
m=search(a,*(s+i));
print(a,m);
}
getch();
}
這個程序是求出一個六位數乘以2,3,4,5,6後得到的六位數仍由原書的數字組成,並分別輸出結果。
❸ c語言課程設計總結
課程設計是培養學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發展的日新日異,當今計算機應用在是生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握計算機開發技術十分重要的。
我的題目是文章處理系統的設計,對於我們這些新手來說,這是很大的考驗,我一千次一萬次的問自己,怎麼才能找到課堂所學與實際應用的最佳結合點?怎麼才能讓自己的程序在篇幅上簡單,在使用價值上豐富?怎樣讓自己的業余更靠近專業?怎樣讓自己的計劃更具有序性,而不會忙無一用?機會是老師,學校,以及無數代教育工作者給的,而能力是自己的,耐性是需要的。經過自己的琢磨,聽取了師姐,師兄們的建議,還查閱了很多書籍,才做到了心中有數,才了解了C語言課程設計的真正用意——培養自學能力,養成程序編輯的好習慣。我從來不相信車到山前必有路的說法,認為那隻是懶惰者自尋懶惰的借口,我要積極,要把握,要努力。
回顧起此次課程設計,至今我仍感慨頗多,的確,從從拿到題目到完成整個編程,從理論到實踐,在整整半個學期的日子裡,可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體……通過這次課程設計之後,一定把以前所學過的知識重新溫故。
這次課程設計終於順利完成了,在設計中遇到了很多編程問題,最後在郭老師的辛勤指導下,終於游逆而解。同時,在郭老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我幫助的所有同學和各位指導老師再次表示忠心的感謝
在課程設計過程中,我學到了很多人生的哲理,懂得怎麼樣去制定計劃,怎麼樣去實現這個計劃,並掌握了在執行過程中怎麼樣去克服心理上的不良情緒,黑夜過去了,我們收獲的是黎明。在本次實踐中,給我印象最為深刻的是在文件刪除程序的編譯過程中,先有我的各個子程序都已經編輯成功,那麼這最後的程序就將是我成功的關鍵。老天不會讓我太過順利,他在這最後的時刻設置的障礙,是要考驗我的能力,他要置我於死地?在這個問題的解決上,我打了退堂鼓,我不能忍受長時間的無功而反,時間正在消磨我的意志。沒有了柳暗花明的一天,那麼我怎麼能說經受住了考驗?謝謝老師的那句話,她說:人力有所不能及,然而,人的精神是不會敗倒的。我鼓起勇氣,到處問,到處查資料,黃天不負有心人,在一篇文章上,終於看到了我所特別要求的函數,我實現了組合是關鍵的理論。不得不說這是精神的勝利,是永不言敗的精神讓我的程序重見天日。謝謝給我指點迷津的老師。
6月11日,我們的課程設計結束了,但是它留給我的印象是不可磨滅的。無論我以後會不會涉及到C語言程序編譯的研究,我想,我至少掌握了一種系統的研究方法,我們學習的目的就在於運用,我們運用這種研究方法的時候會很多,我最後要感謝課程設計,它的確教會我很多。
另外,虛機團上產品團購,超級便宜
❹ c語言課程設計
很想說兩句,
你看知道教育一欄,
很多人都問各種各樣的參考資料是吧,
其實,
這類問題很多都是沒有人回答的,
或者根本就找不到提問者想要的答案,
因為現在各種各樣的資料簡直太多了,
你提問,
在網路知道問,
是面向全國,
其實別人查的可能還不如你自己查的,
別人很可能也就是在網路,
輸入要查的資料名字,
查不到,
或者查到一點就粘上去了,
遠遠不是你想要的那種,
所以,
覺得問這類問題,
就有些浪費分數了。
當然,
這只是我個人的一些看法,
還是希望你能在知道找到你想要的。
這是我復制別人的,我覺得很有道理.
❺ c#課程設計體會
要寫這么多東西,一點分都沒有,沒有誰願意的,還是你自己做吧。作為學生,不要那麼懶。
❻ c語言課程的總結
1.先學習C語言的基礎知識。現在正在學C語言的在校學生可以直接進入第2步學習。
2.按照《C語言程序設計入門學習六步曲》進行上機練習。
3.在上機練習時要養成良好的編程風格。點擊查看C語言的編程風格
4.積極參加C、C++興趣小組,養成和老師與同學交流習慣,從而相互收益。有時別人不經意的一句話可能使你茅塞頓開--「一句話點醒夢中人」。
5.及時總結自己的學習經驗,養成寫C語言日記的習慣。軟體有編程日記功能。
6.從網上或教材上找一個自己感興趣的題目(選題時根據自己的能力,可先易後難,培養自己的成就感,如果有了成就感,即使再苦再累還是感覺C語言學習是一件快樂的事,同學們喜歡打游戲,經常通宵達旦地玩游戲也樂而不疲就是這個道理)進行實戰訓練,提高自己的C語言綜合應用能力。
7. 由於C語言靈活、強大,初學者要全面地掌握它是不可能的,因此在學習C語言的過程中,不要在細枝末節上浪費精力(比如++、--用於表達式的計算,實際上是沒有意義的),但一定要熟練掌握C語言的流程式控制制語句、數組、函數、指針等基礎知識的應用,為學習面向對象程序設計打下堅實的基礎。如果這些知識你學不好,要後續學習好C++、可視化的程序設計Visual C++或C++Builder就像空中樓閣,是不現實的。
C語言程序設計入門學習六步曲
筆者在從事教學的過程中,聽到同學抱怨最多的一句話是:老師,上課我也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發生這種現象的原因有三個:
一、所謂的看懂聽明白,只是很膚淺的語法知識,而我們編寫的程序或軟體是要根據要解決問題的實際需要控製程序的流程,如果你沒有深刻地理解C語言的語句的執行過程(或流程),你怎麼會編寫程序解決這些實際問題呢?
二、用C語言編程解決實際問題,所需要的不僅僅是C語言的編程知識,還需要相關的專業知識。例如,如果你不知道長方形的面積公式,即使C語言學得再好你也編不出求長方形的面積的程序來。
三、C語言程序設計是一門實踐性很強的課程,「紙上談兵」式的光學不練是學不好C語言的。例如,大家都看過精彩自行車雜技表演,假如,你從來沒有騎過自行車,光聽教練講解相關的知識、規則、技巧,不要說上台表演、就是上路你恐怕都不行。
出現問題原因清楚了,那麼如何學習呢?請你看【C語言學習六步曲】
在程序開發的過程中,上機調試程序是一個不可缺少的重要環節。「三分編程七分調試」,說明程序調試的工作量要比編程大得多。這里以如何上機調試C程序來說明C語言的學習方法。
第一步、驗證性練習
在這一步要求按照教材上的程序實例進行原樣輸入,運行一下程序是否正確。在這一步基本掌握C語言編程軟體的使用方法(包括新建、打開、保存、關閉C程序,熟練地輸入、編輯C程序;初步記憶新學章節的知識點、養成良好的C語言編程風格)。
初學者最容易犯的錯誤是:
1、沒有區分開教材上的數字1和字母l,字母o和數字0的區別,造成變數未定義的錯誤。另一個易錯點是將英文狀態下的逗號,分號;括弧()雙引號""輸入出入成中文狀態下的逗號,分號;括弧(),雙引號「」造成非法字元錯誤。
2、C語言初學者易犯語法錯誤:使用未定義的變數、標示符(變數、常量、數組、函數等)不區分大小寫、漏掉「;」、「{」與「}」、「(」與「)」不匹、控制語句(選擇、分支、循環)的格式不正確、調用庫函數卻沒有包含相應的頭文件、調用未C聲明的自定義函數、調用函數時實參與形參不匹配、數組的邊界超界等。
3、修改C語言語法錯誤時要注意以下兩點:
(1)、由於C語言語法比較自由、靈活,因此錯誤信息定位不是特別精確。例如,當提示第10行發生錯誤時,如果在第10行沒有發現錯誤,從第10行開始往前查找錯誤並修改之。
(2)、一條語句錯誤可能會產生若干條錯誤信息只要修改了這條錯誤,其他錯誤會隨之消失。特別提示:一般情況下,第一條錯誤信息最能反映錯誤的位置和類型,所以調試程序時務必根據第一條錯誤信息進行修改,修改後,立即運行程序,如果還有很多錯誤,要一個一個地修改,即,每修改一處錯誤要運行一次程序。
第二步、照葫蘆畫瓢
在第一步輸入的C程序的基礎上進行試驗性的修改,運行一下程序看一看程序結果發生了什麼變化,分析結果變化的原因,加深新學知識點的理解。事實上這和第一步時同步進行的,實現「輸入」加深知識的記憶,「修改」加深對知識的理解。記憶和理解是相輔相成的,相互促進。
例如:將最簡單的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的
printf("Hello World!\n");
中的Hello World!改成你的姓名,運行一下程序,看有什麼變化?
再如求1+2+3...+100的和的程序
#include <stdio.h>
main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
第1次將for(i=1;i<=100;i++)中的100改成50,運行一下程序,看有什麼變化?
第2次將for(i=1;i<=100;i++)中的i++改成i=i+2,運行一下程序,看有什麼變化?
找出程序結果變化的原因,就加深了對C語句的理解。
第三步、不看教材看是否能將前兩步的程序進行正確地輸入並運行。
在這一步要求不看教材,即使程序不能運行,看能否將其改正,使其能正確運行。目的是對前兩步的記憶、理解進一步強化。
第四步、增強程序的調試能力
在教材中每章都有C語言初學者易犯的錯誤,按照易出錯的類型,將教材中的正確的程序改成錯誤的程序,運行一下程序,看出現的錯誤信息提示,並記下錯誤信息,再將程序改成正確的,運行一下程序。這樣反復修改,就能夠學習C語言程序發生錯誤的原因和修改錯誤的能力。
注意:每次只改錯一個地方,目的是顯示發生該錯誤的真正原因,避免一次改動多個地方,搞清發生錯誤的真正原因,切記!!!!
注意:上機調試程序時要帶一個記錄本,記下英文錯誤提示信息和解決該錯誤問題的方法,積累程序調試經驗,避免在編程犯同樣的錯誤,切記!!!!。
例如,將Hello World程序中語句
printf("Hello World!\n");
中的;改成中文的分號;
運行一下程序,看有什麼結果?
調試程序是一種實踐性很強的事,光紙上談兵是是沒用的,就像游泳運動員只聽教練講解示範,而不親自下水練習,是永遠學不會游泳的。
即使在優秀的程序員編寫程序也會犯錯誤的,可能事最低級的語法錯誤,但他能快速發現錯誤並改正錯誤,而我們C語言初學者面對錯誤提示,不知道發生了什麼錯誤,如何改正,這就事差別。
第五步、研究典型的C語言程序,提高程序設計能力
C語言初學者遇到最多的困惑是:上課也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發生這種現象的原因是:所謂的看懂聽明白,只是很膚淺的語法知識,而沒有深刻地理解C語言的語句的執行過程(或流程)。
計算機是按照人的指令(編寫的程序)去執行的,如果不知道這些C語句在計算機中是如何執行的,你怎麼回靈活運用這些知識去解決實際問題呢?
解決問題的方法是要先理解C語言各種語句的流程(即計算機是如何執行這些語句的過程),然後研讀現成C語言經典程序,看懂別人事如何解決問題的,以提高自己的程序設計能力。
第六步、研究課程設計源成序,提高C語言的綜合應用能力.
❼ 學生成績記錄薄 c語言 課程設計報告
C語言程序設計報告
課題名稱:學生成績管理
1 系統概述:
本程序為一個學生成績管理系統,對學生的成績進行管理,學生的信息包括學號,姓名,學期,三門課程的成績,輸入這些信息,本程序可以自動計算總成績,可以按高分到低分進行排名,並對輸入信息的人數進行匯總.
2 數據結構設計:
(1)結構體;
(2)數組的設計:運用指針代替數組,使用指針來建立線性表,使程序更加簡潔,可讀性更強.
3 各函數的設計:
函數原型:void InitList(SqLinkList &L);
功能: 創建一個空的線性鏈表;
入口參數:L為要創建的線性鏈表;
出口參數:創建鏈表的L.head為空,L.length為0;
返回值: 無;
函數原型:void EmptyLinkList(SqLinkList &L);
功能: 清空整個線性鏈表;
入口參數:L為要清空的鏈表名稱;
出口參數:若清空成功則鏈表長度L.length為0;
返回值: 無;
函數原型:int ScanE(ElemType &e);
功能: 輸入學生信息;
入口參數:e為要輸入信息的學生名稱;
出口參數:e.num保存學號,e.name保存姓名,e.team保存所在學期,e.s1,e.s2,e.s3分別保存三門課程的成績;
返回值: 輸入合法返回1,否則返回0;
錯誤處理:若學號、姓名等輸入不合法會有提示及重輸;
函數原型:Status SqLinkListAppend(SqLinkList &L,ElemType e);
功能: 追加一個結點到線性鏈表中;
入口參數:e為所追加的結點名稱,L為e所追加到的線性鏈表的名稱;
出口參數:若追加成功,則e為頭結點,鏈表長度L.length增1;
返回值: 若追加成功返回1;
函數原型:Link SearchNode(SqLinkList L,int NUM);
功能: 查找學號為NUM的學生;
入口參數:查找的鏈表名稱L,學號NUM;
出口參數:若找到結點指針p指向該結點,否則指向空結點;
返回值: 結點指針p;
函數原型:void SearchTeam(SqLinkList L,int team);
功能: 查找學期為team的所有記錄並輸出其信息;
入口參數:查找的鏈表名稱L,要查找的學期team;
出口參數:無;
返回值: 無;
函數原型:void SearchUnpass(SqLinkList L,float s1,float s2,float s3);
功能: 查找所有有掛科記錄的學生並輸出其信息;
入口參數:查找的鏈表名稱L,要查找的各門學科成績s1,s2,s3;
出口參數:無;
返回值: 無;
函數原型:void SqLinkListSearch(SqLinkList L);
功能: 對鏈表進行分類查找;
入口參數:要查找的鏈表名稱L;
出口參數:無;
返回值: 無;
函數原型: void inputData(SqLinkList &L);
功能: 輸入數據,並追加一個結點;
入口參數: L為要追加結點的鏈表名稱;
出口參數: 無;
返回值: 無;
函數原型:void SqLinkListTraverse(SqLinkList L);
功能: 輸出鏈表中所有學生成績列表;
入口參數:L為要輸出信息的鏈表名稱;
出口參數:無;
返回值: 無;
函數原型:void PrintE(ElemType e);
功能: 輸出一個結點的所有信息;
入口參數:要輸出的結點名稱e;
出口參數:無;
返回值: 無;
4 使用程序的說明:
本程序為一個學生成績管理系統。對學生的成績信息進行管理,學生的信息包括學號、姓名、學期、三門課程的成績、平均成績、名次。本管理系統實現學生的學號、姓名、學期、每門課程的成績的錄入,並自動按平均分排名,使用時按屏幕上的提示,輸入使用代碼.如下圖所示:
例如:輸入代碼數字」1」,程序執行」輸入學生成績或已存在的學生成績進行修改」這條小程序.輸入學生個人信息後,如下圖所示:
如此分別輸入相應的程序代碼,就執行相應的程序段.
如下的程序是按學號進行成績排名:
當輸入」6」時,執行相應的程序,即匯總一共輸入學生的人數:
5 總結和體會:
通過對C語言學習,尤其是這學期本班開展C語言雙語教學,體會到學習難的同時,也真正了解到C語言作為一門高級的計算機語言的強大功能,特別是在當今實際生活,生產,辦公,信息管理等方面的強大作用. 這次合作我們遇到了許多的困難。時間的緊迫,知識的不足,給我很大的壓力。最終我還是還是完成了任務。團結就是力量是我這次最真切的感受。
6 程序代碼:
void InitList(SqLinkList &L) {
// 構造一個空的線性表L;
L.head = 0; //頭指針為空;
L.length = 0; //長度初始為0;
}
void EmptyLinkList(SqLinkList &L){
//入口參數為整個線性表的數據,功能為清空線性表;
Node *p;
if(!L.head)printf("系統中不存在記錄。\n");
//頭指針為空時沒有學生錄入;
else {
while (L.head){
//每個循環將下一結點賦值給頭指針,並釋放本結點空間,直至線性表清空;
p=L.head;
L.head=p->next;
free(p);
} //end while;
L.length=0; //長度為0;
printf("該管理系統學生信息已清空。\n");
}//end else;
}
int ScanE(ElemType &e){
//輸入一個學生的成績數據結點。返回0為無效結點數據,1為有效結點數據;
printf("\n學號:");
scanf("%d",&e.num);
if(e.num==0){
//學號為0輸入不合法,重新輸入;
printf("學號輸入不合法.\n");
return 0;
}
printf("\n姓名:");
scanf("%s",&e.name);
printf("\n學期:");
scanf("%d",&e.team);
while(e.team>12){
//系統只記錄小於12的學期數;
printf("輸入的學期不能大於12,請重新輸入:");
scanf("%d",&e.team);
}
printf("\n成績A:");
scanf("%f",&e.s1);
printf("\n成績B:");
scanf("%f",&e.s2);
printf("\n成績C:");
scanf("%f",&e.s3);
return OK;
}
Status SqLinkListAppend(SqLinkList &L,ElemType e){
//追加一個結點到線性表中;
Node *p;
p=SearchNode(L,e.num);
//查找學號為e.num的記錄並將其地址賦給指針p;
if (p==0){
//若不存在添加學號相同的結點,追加一個結點;
p=(Node *)malloc(sizeof(Node));
if (!p) return ERROR;
memcpy(&(p->data),&e,sizeof(ElemType));
p->next=L.head ;
L.head=p;
//追加的一個結點為首結點;
L.length++; //表長度加1;
}
else { //如果該學號記錄已存在,則進行修改操作;
memcpy(&(p->data),&e,sizeof(ElemType));
printf("該學生記錄已經存在,已完成修改操作。\n");
}
return OK;
}
Link SearchNode(SqLinkList L,int NUM){
//查找學生記錄,該學生的學號為NUM;
Node *p;
p=L.head; //p先指在頭結點;
while (p&& p->data.num !=NUM ) p=p->next;
//如果該學生的學號不為NUM則查找下一個結點;
return p;
}
void SearchTeam(SqLinkList L,int team){
//按學期查找並輸出所有該學期存在的記錄;
Node *p;
p=L.head;
int n,sum=0;
//sum記錄該學期的學生總人數;
printf("請輸入您要查詢的學生的學期:");
scanf("%d",&n);
printf("\n學號 姓名 學期 成績A 成績B 成績C 平均成績\n");
while(p&&p->next){
//如果p結點和它的下一結點不為空,且該結點的學期等於要查找學期,則格式輸出所有該學期學生信息;
if(p->data.team==n){
PrintE(p->data);
sum++;
//查找到一個該學期的學生記錄計數加1;
}
p=p->next;
//轉向下一結點;
} //end while;
if(p->data.team==n){
//如果p的下一結點為空,且本結點學期為n,則格式輸出該結點信息;
sum++;
PrintE(p->data);
}
if(sum==0)printf("沒有這學期的記錄。\n");
if(sum)printf("該學期共有%d人的記錄.\n",sum);
}
void SearchUnpass(SqLinkList L,float s1,float s2,float s3){
//查找並輸出有掛科的學生信息;
Node *p;
p=L.head;
int sum=0;
//sum計數掛科總人數,初始為0;
printf("以下是有一門以上不及格科目的學生的成績:\n");
printf("\n學號 姓名 學期 成績A 成績B 成績C 平均成績\n");
while(p&&p->next){
//如果p及其下一結點為真,且該結點有一門以上科目分數低於60則輸出該結點成績並使sum計數加1;
if((p->data.s1<60)||(p->data.s2<60)||(p->data.s3<60))
{
PrintE(p->data);
sum++;
} //end if;
p=p->next;
//轉到下一結點;
} //end while;
if((p->data.s1<60)||(p->data.s2<60)||(p->data.s3<60)){
//查看最後一個結點,若有掛科,sum加1並格式輸出結點信息;
sum++;
PrintE(p->data);
}
if(sum==0)printf("沒有不及格的記錄。\n");
if(sum)printf("共有%d人的掛科記錄.\n",sum);
}
void SqLinkListSearch(SqLinkList L){
//分類查找學生記錄;
Node *p;
p=L.head;
int n,reg; //reg為查詢方式的指令;
printf("1--按學號查詢\n2--按學期查詢\n3--掛科學生信息列表\n");
printf("請您輸入查詢方式:");
scanf("%d",®);
if(L.length){
if(reg>3)printf("對不起沒有您要求的選項。\n");
//若reg>3則輸入不合法;
else if(reg==1){
//reg==1按學號查詢;
printf("請輸入您要查詢的學生的學號:");
scanf("%d",&n);
while(p&&p->next&& p->data.num !=n) p=p->next;
//當p和他下一結點為真時且結點數據不為要查找數據時轉向下一結點;
if(p->data.num==n){
//找到所要查詢結點,格式輸出;
printf("\n學號 姓名 學期 成績A 成績B 成績C 平均成績\n");
PrintE(p->data);
}
else printf("沒有您要查找的學號。\n");
} //end reg==1 if ;
else if(reg==2)SearchTeam(L,p->data.team);
//reg==2,調用SearchTeam函數按學期查詢並輸出;
else if(reg==3)SearchUnpass(L,p->data.s1,p->data.s2,p->data.s3);
//reg==3,調用SearchUnpass函數,輸出全部有掛科記錄的學生信息;
}//end if;
else printf("系統中無記錄.\n");
}
void inputData(SqLinkList &L){
//請求輸入學生成績,則追加一個結點並輸入;
ElemType e;
if (ScanE(e)) SqLinkListAppend(L,e); //輸入數據,追加一個結點;
}
void SqLinkListTraverse(SqLinkList L){
//所有學生信息列表輸出;
Node *p;
char c;
p=L.head;
if(p) //非空表;
{
printf("\n學號 姓名 學期 成績A 成績B 成績C 平均成績\n");
for (p=L.head ;p;p=p->next )PrintE(p->data);
//從第一個結點開始輸出所有信息直到結點為空;
}
else printf("系統中無記錄。\n");
//空表;
c=getchar();
}
void PrintE(ElemType e){
//輸出各科成績和平均成績;
printf("%d\t%s\t%d\t%f\t%f\t%f\t%f\n",e.num,e.name,e.team,e.s1,e.s2,e.s3,(e.s1+e.s2+e.s3)/3);
//格式輸出學生的學號、姓名、學期、A、B、C三門成績以及平均成績;
}