摘要:C語言課程設計是C語言學習中一個不可缺少的環(huán)節(jié),是學習和掌握C語言的重要手段。結(jié)合C語言的學習和課程設計的經(jīng)驗,給出了C語言在學生成績管理系統(tǒng)設計的一些框架,指出了C語言課程設計中應該注意的一些問題。
關鍵詞:C語言;課程設計;學生成績管理系統(tǒng)
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)19-30092-02
Practice and Analysis in C Language Design
CAI Ya-ling
(Nanhua College of Industry and Commerce, Guangzhou 510507, China)
Abstract: C language design is very important in C language learning to master this programming language. In this paper, I describe the flowchart of the student management system design in C language. Moreover, some important problems in C language design are specified.
Key words: C language; language design; student management system
1 設計要求
矩陣乘法:編寫一個函數(shù)實現(xiàn)矩陣A(2行3列)與矩陣B相乘(3行2列),乘積放在C數(shù)組中。在主函數(shù)中輸入相乘的兩數(shù)組,并輸出結(jié)果。
學生成績管理:結(jié)構(gòu)體數(shù)組、函數(shù)、指針、算法、流程結(jié)構(gòu)及文件等的綜合應用。
程序說明:有N個學生,每個學生的數(shù)據(jù)包含學號(不重復)、姓名、三門課的成績及平均成績,試設計一學生成績管理系統(tǒng)。
2 功能模塊的設計
2.1 輸入記錄函數(shù)STUDENT *create()
算法:先聲明一個首節(jié)點head,并將head->next設為NULL。每輸入一個數(shù)據(jù)就聲明一個新節(jié)點p,把p->next設為NULL,并且鏈接到之前列表的尾端。
N-S流程圖如圖1:
■
圖1
2.2 記錄函數(shù)void print(STUDENT *head)
算法:先將p結(jié)點的指針指向第一個結(jié)點,將p結(jié)點(即第一個結(jié)點)的數(shù)據(jù)輸出。然后再將p結(jié)點的指針指向p指針的的指針(即下一結(jié)點),將p結(jié)點(即第一結(jié)點)的數(shù)據(jù)輸出。重復執(zhí)行此步聚直到p指針指向NULL為止。
N-S流程圖如圖2:
2.3 找記錄函數(shù)void search(STUDENT *head)
算法:采用線性查找法往下一個節(jié)點查找。輸入所要查找的學生的學號s,設一個指針變量p,先指向第一個結(jié)點,當strcmp(p->name,s) p!= NULL時,使p后移一個結(jié)點,如果p!=NULL,輸出p所指的結(jié)點。
N-S流程圖如圖3:
■
圖3
3 設計中應注意的問題
3.1 程序效率分析
在程序中頻繁的調(diào)用函數(shù)會增加系統(tǒng)的負擔,降低程序的執(zhí)行速度,花費較多的時間,影響C程序的執(zhí)行效率。同一個程序編寫方式的不同,它們運行的效率也就不同,這就要求我們在編寫程序時,在程序的可靠性得到保證的前提下,根據(jù)具體情況找出最優(yōu)的、能充分利用系統(tǒng)資源和提高程序運行效率的一種最佳方法。當然,在不同的系統(tǒng)和不同配置的計算機上程序的運行效率是不盡相同的,程序的效率問題是在編寫較大或較復雜程序時應該充分考慮的。
3.2 數(shù)據(jù)類型的使用
數(shù)據(jù)類型是C語言中的一個既簡單又基本的問題,如果我們對它沒有充分的理解,往往會導致一些莫名其妙的錯誤。C語言追求簡捷、自然,編起程序來簡單、方便、可讀性好。另一方面,C編譯程序的語法檢查很不嚴格,所以程序即使通過了編譯連接仍然可能得不到正確結(jié)果。特別是對于一些運行時錯誤,如運算溢出、數(shù)組越界,編譯程序根本不做什么檢查。這就要求程序員認真研究、掌握規(guī)律、避免錯誤。對于某些微妙的問題,如果能從書本上找到現(xiàn)成的答案固然好,但可能性不大。最好的辦法還是用機器實驗,實踐是檢驗真理的唯一標準。如果程序員懂得匯編語言,那是大有好處的。不僅能提高聯(lián)想力,而且可以閱讀TCC產(chǎn)生的C源程序的匯編語言版本,那么我們幾乎可以搞懂C語言的一切細節(jié)。
3.3 指針的使用
指針是C語言中的一個重要概念,也是C語言的一個重要特色。正確而靈活地運用它,可以有效的表示復雜的數(shù)據(jù)結(jié)構(gòu);能動態(tài)分配內(nèi)存;能方便地使用字符串等。掌握指針的應用,可以使程序簡潔、緊湊、高效。指針較難掌握,在使用時稍有不慎,將給C程序帶來隱患甚至是致命的錯誤。
在指針的使用中經(jīng)常容易產(chǎn)生以下錯誤:1) 定義和應用的錯誤;2) 類型匹配的錯誤;3) 共享內(nèi)存和雙向傳遞的錯誤;4) 指針在數(shù)組中的錯誤使用。
3.4 函數(shù)浮點形參的使用
在使用Turbo C語言開發(fā)程序時,并非需要將函數(shù)的形參float類型數(shù)據(jù)進行轉(zhuǎn)換為double,也并非Turbo C在處理此類問題時存在缺陷和錯誤。本文通過實例分析,闡明了在Turbo C開發(fā)環(huán)境下,在進行函數(shù)說明和定義時,有兩種方式可以使用,第一種是使用傳統(tǒng)型函數(shù)說明和傳統(tǒng)型函數(shù)定義,第二種是使用函數(shù)原型定義和說明,不能任意組合。
3.5 ++運算符的使用
在C語言中原本規(guī)定++運算是定義在整型上的,但是由于C語言中提供了自動類型轉(zhuǎn)換,所以對于float類型使用++運算的時候編譯器投有檢查出錯誤。然而其運算過程不同于int類型,主要是由干要進行類型轉(zhuǎn)換的原因。因此一般情況一下不必利用float類型進行++運算。
4 結(jié)論
本文在結(jié)合學生管理信息系統(tǒng)課程設計的經(jīng)驗的基礎上,探討了在C語言課程設計中的設計方法和應注意的一些重要問題,這對C語言的學習和課程設計有一定的指導作用。
參考文獻:
[1]袁蒲佳,唐謙,韓麗娟. C語言程序設計[M]. 武漢: 華中科技大學出版社,2007.
[2]朱玉龍,任文嵐. C語言中的數(shù)據(jù)類型[J]. 小型微型計算機系統(tǒng),2001,22(9):1146-1179.
[3]郝蕊潔. 談談C語言中的變量[J]. 中國科技信息,2008,5:94-95.
[4]王學超. 淺談職高C語言函數(shù)的教學[J]. 電腦知識與技術,2008,2:332-334.
[5]施煒. 靈活應用C語言中的++/--運算符[J]. 科技資訊,2007,35:199-200.
[6]張慧娥,李旸園,鄭國杰. C語言中浮點數(shù)輸入出現(xiàn)異常的研究[J]. 電腦知識與技術,2007,172-173.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文