久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

C語言實習報告(優秀范文五篇)

時間:2019-05-15 10:27:08下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《C語言實習報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《C語言實習報告》。

第一篇:C語言實習報告

C語言實習報告

在長學期之后,我們又進行了短學期,在短學期中C語言實習讓我獲益匪淺。通過C語言實習,讓我加深了對C語言的了解,而不只是單單的在課本中學到的那些理論,平時乏味的課程,通過自己動手親自編寫,變的生動有趣,而在自己動手的過程中,出現的問題很多,比理論要難的多,當一個程序寫完以后,經常會有很多錯誤而沒法解決。不過,通過幾天的實訓,逐漸積攢了一些經驗,有些錯誤可以很快就看出來。

這次實訓有很大的收獲,讓我對C語言有了更深的認識,平時在課堂上學到的東西可以自己動手編寫,將其轉化成一些實用的技能。如果是一個程序寫完一處錯誤也沒有,會有種成就感,于是興趣就來了,興趣來了,自然學的東西也就多了,能把理論變成實際的技能,讓我對C語言有了濃厚的興趣和更深層的認識。

C語言是一個有序的學習,學了最基本的替換,然后擴展到循環,嵌套,條理很清楚,不是一個零散的知識,實際上所有的課程都如此,不過通過實訓我也知道了自己的不足,存在的很多問題。

比如自己寫的寫的小程序出了問題,不會解決了就叫老師或同小組的同學幫忙,雖然說這樣會做得更好更快,但是會養成一種依賴的心理,碰到問題了第一個想到的是求助而不是自己獨立解決,所以以后要多多鍛煉自己的信心和增加自己的能力,爭取做到自己可以完成一些簡單的程序編寫與錯誤排除。

還有自己的基礎知識不扎實,遇到的問題,沒有很好的邏輯思維,親自編寫一個陌生的程序的時候會有種無法下手的感覺,找不到突破口。通過實訓,逐漸理清了順序,對于簡單的程序和一些相對比較繁瑣的嵌套,循環,不在是看著一頭霧水。其實只要理清了思路,把基礎知識掌握了,然后有條不紊的分析,一步一步理解,C語言還是很有意思的課程。

自己親自動手編寫程序讓我增加了對C語言程序開發環境的了解,在上課的時候老師就講,學習C語言最重要的是學習C語言的邏輯思維,不管以后從事什么行業,學習C語言都對自己的職業很有幫助,如果是從事編程工程工作的話,就更有幫助了,即使以后的編程工作可能不用C語言,但是擁有扎實的C語言基礎是對工作很有用的。

當初在初步接觸C語言的時候,看著一堆“奇形怪狀”的符號,覺得甚是無聊,通過這次實訓,擺脫了那種似懂非懂的狀態!

短學期讓我學到了很多知識,在實訓過程中,同學之間的相互探討,老師的循循善誘,最終讓我們達到了舉一反三的效果,在學知識的同時,也增加了同學老師之間的感情。希望以后還會有更多類似的實訓課程,在有限的大學時間內學到更多的實用技能,為以后的工作打下

一個良好的基礎。

第二篇:c語言實習報告

西安科技大學

《C/C++語言程序設計》

課程設計報告

題 目

院、系(部)

專業及班級 姓 名 日 期

1設計目的

設計一個職工信息管理系統,使之能提供以下功能: 1)錄入職工信息并保存 2)顯示所有職工信息 3)查詢職工信息 4)修改職工信息并保存 5)刪除職工信息 需求說明: 職工信息包括職工號、姓名、性別、出生年月、學歷、職務、工資、住址、電話等,并且要求職工號不重復;

錄入的職工信息要求用文件形式保存,并可以對其進行瀏覽、查詢、修改、刪除等基本操作; 職工信息的顯式要求有一定的規范格式;

對職工信息應能夠分別按工資及按學歷兩種方式進行,要求能返回所有符合條件的職工的信息; 對職工信息的修改應逐個地進行,一個職工信息的更改不應影響其他的職工記錄;

所設計的系統應以菜單方式工作,應為用戶提供清晰的使用提示,依據用戶的選擇來進行各種處理,并要求在此過程中能夠盡可能的兼容用戶使用過程中的異常情況。總體設計

1.該系統可以按功能進行模塊劃分,其模塊圖如下:

系統模塊圖

其中:

信息輸入模塊完成職工信息的輸入功能,輸入信息包括職工號、姓名、性別、出生年月、學歷、職務、工資、住址、電話等;

信息瀏覽模塊完成已錄入職工信息的顯示;

信息查詢模塊完成職工信息的查詢,查詢時對應有按工資查詢和按學歷查詢兩種方式; 信息修改模塊完成職工信息的修改功能; 信息刪除模塊完成職工信息的刪除功能;

菜單選擇模塊完成用戶命令的接收,此模塊也是職工信息管理系統的入口,用戶所要進行的各種

操作均需在此模塊中進行選擇并進而調用其他模塊實現相應的功能;

2.數據結構

本系統中主要的數據結構就是職工的信息,包含職工號、姓名、性別、出生年月、學歷、職務、工資、住址、電話等,在處理過程中各項可以作為一個職工的不同屬性來進行處理

3.程序流程

系統的執行應從功能菜單的選擇開始,依據用戶的選擇來進行后續的處理,直到用戶選擇退出系統為止,其間應對用戶的選擇做出判斷及異常處理。系統的流程圖如下:

程序流程圖 詳細設計

對應于總體設計時的系統功能模塊圖,各個功能模塊的處理邏輯如下: ① 信息輸入模塊:

打開職工信息文件; while(繼續輸入){ 讀入職工信息;

將讀入信息添加到職工信息文件中;

提示是否繼續輸入; } 關閉職工信息文件;

② 信息瀏覽模塊:

打開職工信息文件; while(不到文件結束){ 從文件中順序讀出一個職工的信息;

按指定格式輸出該職工的信息; } 關閉職工信息文件;

③ 信息查詢模塊:

while(仍繼續查詢){ if(按工資查詢){ 讀入查詢的職工工資條件;

打開職工信息文件;

while(不到文件結束){ 順序讀出一個職工的信息;

if(該職工信息的工資符合條件)輸出該職工的信息; } 關閉職工信息文件;

提示共有幾條符合條件的記錄; } else if(按學歷查詢){ 讀入學歷查詢的條件;

打開職工信息文件;

while(不到文件結束){

順序讀出一個職工的信息;

if(該職工信息的學歷符合條件)輸出該職工的信息;

} 關閉職工信息文件; 提示符合條件的記錄數; }

else 提示輸入不合適;

提示是否繼續查詢; }

④ 信息修改模塊:

while(繼續修改){

從給出信息文件中所有的記錄情況; 提示并讀入待修改的記錄的職工的職工號; 打開職工信息文件;

查找并讀出該職工的信息到一個中間變量中; 提示并讀入要針對該職工的哪個屬性進行修改; 根據用戶的選擇提示并讀入所要修改屬性的新值; 在該職工的中間變量中修改剛剛讀入的屬性值; 提示是否確定要進行修改;

如果用戶確定則將中間變量重新寫回到原職工信息文件中; 關閉職工信息文件; } ⑤ 信息刪除模塊:

while(繼續刪除){ 顯示所有職工的信息;

提示并讀入待刪除的職工的職工號;

打開職工信息文件;

查找是否有符合條件的職工記錄; if(有符合條件的記錄){ 提示是否確認該刪除操作; if(用戶確認此操作){ 創建一個新的臨時文件;

打開原信息文件;

while(原信息文件中記錄未讀完){ 讀出原信息文件中的下一條記錄;

if(此條記錄不是待刪除記錄)寫入臨時文件中去; }

關閉原信息文件; 關閉臨時文件; 讀方式打開臨時文件;

寫方式重建與原信息文件同名的新信息文件; 將臨時文件中的內容寫入到新信息文件中去; 關閉新信息文件; 關閉臨時文件; 刪除臨時文件; } } else 提示沒有符合條件的記錄存在; } ⑥ 菜單選擇模塊:

給出信息提示; 清屏;

繪制菜單(包含輸入、顯示、查詢、修改、刪除、退出); 提示菜單選擇并讀入到變量;

根據讀入變量的值調用不同的模塊函數;

數據結構:

性別: enum Sex{ male, female };學歷 :enum Education{ high, junior, college, master, doctor};日期 :struct Date { int year;int month;int day;};職工信息:struct Info {

char num[5];/* 職工號 */ char name[8];/* 姓名 */ enum Sex sex;/* 性別 */ struct Date birthday;/* 出生年月*/ enum Education education;/* 學歷 */ char duty[8];/* 職務 */ double wage;/* 工資 */ char addr[12];/* 地址 */

char phone[8];/* 電話 */ };

第三篇:C語言實習報告

新疆昌吉學院

《C語言程序設計》 教學實習報告

部門:信息技術分院

專業:計算機應用技術 班級:2010高職應用

姓名: 指導教師:

《C語言程序設計》教學實習報告

2010高職應用班

一、實習時間:

2011 年 6 月 13 日至

2011 年月 17 日

二、實習地點:第一微機室

三、實習目的:(小4宋體,約150字)

(1)能進一步熟悉C程序的編輯、編譯、連接和運行的過程;

(2)通過C語言環境下的應用實例,能有編寫程序的能力,掌握編程的思路和方法,掌握C語言程序設計的基本概念和基本技能;

(3)在程序調試過程中,能根據運行結果,運用相應的手段,正確地找出并解決程序中的邏輯錯誤;

(4)可以掌握不同類型數據之間賦值的規律;

(5)通過解題、程序設計和上機實踐,能加深對所學概念的理解,使得理論與實踐相結合的學習方法;

(6)通過C語言程序設計的課程實習,我們能具有使用計算機解決相關問題的能力,為今后學習其他計算機應用課程打下較好的程序設計基礎。

四、實習內容及方法:

實訓一 C語言的編程環境:

1、Turbo C運行環境。

了解TC的基本環境,熟悉常用菜單項和快捷鍵。

2、C程序的編輯、編譯、連接和運行過程。掌握C程序的運行步驟,初步了解C程序的特點。

3、VC6.0環境的熟悉,能按照軟件并在軟件中能夠調試簡單的C語言程序。實訓二 C語言數據類型、運算符及表達式:

案例3:字母轉換問題。本案例在執行時,將提示輸入一個字母,如果輸入的是小寫字母,程序將輸入的小寫字母轉換為大寫字母并輸出,否則按原樣輸出。步驟:

1、定義變量,和變量類型;

2、尋找大小寫字母的 ASC||碼值得關系;

3、輸入輸出變量。代碼:

結果:

實訓三 C程序的三種基本結構的應用

案例1:輸入某年某月某日,判斷這一天是這一年的第幾天? 解題步驟:

1、定義變量年year月month、日day、和第幾個月的天數總和sum;

2、定義month變量作為switch語句的測試條件;

3、從鍵盤上輸入年、月、日的值;

4、輸出這一年的第幾天sum。程序分析:

輸入某年某月某日,判斷這一天是這一年的第幾天?那么需要考慮三個變量,年,月,日。

首先,年主要要考慮的因素是否是閏年的問題。月要考慮的是那一個月的問題。因為不同月的天數不一樣。日嘛,就不用說了。

還有就是,月份是一月或者二月,那么就不需要考慮是否閏年的問題,因為不需要計算二月總共多少天。

上述程序,首先是在默認閏年的情況下計算某月前面所有月的天數和,然后加上當月的零頭天數,最后才是判斷當月是否大于二月,如果大于二月,那么必須考慮閏年的問題,再接著判斷是否閏年,如果非閏年總天數減一,是閏年不變,因為在開始計算的過程中時默認閏年的。代碼:

main(){ int day,month,year,sum,leap;clrscr();printf(“nplease input year,month,dayn”);scanf(“%d%d%d”,&year,&month,&day);switch(month){ case1:sum=0;break;case2:sum=31;break;case3:sum=59;break;case4:sum=90;break;case5:sum=120;break;case6:sum=151;break;case7:sum=181;break;case8:sum=212;break;case9:sum=243;break;case10:sum=273;break;case11:sum=304;break;case12:sum=334;break;default:printf(“data error”);break;} sum=sum+day;if(year%400==0||(year%4==0&&year%100!=0))leap=1;else leap=0;if(leap==1&&month>2)sum++;printf(“it is the %dth day.”,sum);getch();}_ 案例4:求200-300之間所有素數,每5個換行。程序分析:先將1挖掉(為什么?因為1不是素數)用2去除它后面的各個數,把能被2整除的數挖掉,用3去除它后面各數,把3的倍數挖掉,用循環體分別將4、5?各數作為除數去除這些數以后的各數。直到除數后面的數已全部挖掉為止

代碼:

main(){ int i,j,n=0;clrscr();for(i=200;i<=300;i++){ for(j=2;j<=i;j++)if(i%j==0)break;if(j>=i){ printf(“%4d”,i);n++;} if(n%5==0)printf(“n”);} getch();}_

案例8:打印輸出九九乘法表。解題步驟:

1、定義行變量、列變量。

2、循環輸出行乘列的值。

3、每行最后輸出一個換行符。程序分析:

兩個循環嵌套時,第一個循環語句為外循環,第二個循環語句為內循環,外循環執行一次,內循環從頭到尾執行一遍(可能執行多次循環體),因此本題的執行次數為:1+2+3+4+5+6+7+8+9=45次。

代碼:

結果:

實訓四 數組的定義和使用:

案例

3、打印楊輝三角,輸出前10行數據。解題步驟:(1)定義變量;

(2)確定數組的行與列;(3)FOR循環給數組賦值。(4)輸出這個數組。程序分析:

楊輝三角是(a+b)的n次冪的展開式系數,如:(a+b)系統數是1 1(a+b)2展開后的系數是 1 2 1(a+b)3展開后的系數是 1 3 3 1 從而得到楊輝三解的系數規律(指數為n):

1、共有n+1組系數,且第K組(從0)開始有K+1個數。

2、每組最后一位與第一位均為1

3、若用二維數組存放系數,每行存放一組,則從第二行開始除最后一個數與第一個數外,每個數都是其所在行的前一行同一列與前一列之各。代碼:

#include “stdio.h” main(){ int i,j,a[10][10];for(i=0;i<10;i++)for(j=0;j<10;j++)a[i][j]=0;for(i=0;i<10;i++){ a[i][0]=1;a[i][i]=1;} 6 for(i=0;i<10;i++){ for(j=0;j<10;j++)printf(“%d ”,a[i][j]);printf(“n”);} 結果:

實訓五 函數的應用:

案例3:用函數和遞歸實現求n!程序分析:

(1)首先在有限遞歸中,必須有一個測試避免遞歸調用的條件,即當滿足該條件時,不再遞歸。而在遞歸函數中,應該是先測試,后進行遞歸調用。在本例中,if語句就是這種測試條件,當n等于0時,則不再遞歸,即退出該遞歸函數。

(2)在遞歸函數中,至少要有一個遞歸調用的語句,并且該語句的參數應該逐漸逼近遞歸結束的條件。其中,該語句參數n-1是逐次減1,當n為0時,則不再調用遞歸函數。

(3)完成該遞歸函數。

代碼:

結果:

實訓六 指針的應用

案例1:分析并對比如下2個程序,寫出運行結果,并上機驗證。

1.1 main(){int *p1,*p2,*p,a,b;a=5;b=9;p1=&a;p2=&b;if(a

a=5 , b=9 Max=9 , min=5

五、結論(小4宋體,約1500字)

1、收獲:

(1)通過C語言實訓,讓我加深了對C語言的了解,而不只是單單的在課本中學到的那些理論,平時乏味的課程,通過自己動手親自編寫,變的生動有趣,而在自己動手的過程中,出現的問題很多,當一個程序寫完以后,經常會有很多錯誤。不過,通過這幾天的實訓和小組討論,逐漸讓自己積攢了一些經驗,有些錯誤可以很快就看出來。

(2)這次實訓讓我對C語言有了更深的認識,平時在課堂上學到的東西可以自己動手編寫,將其轉化成一些實用的技能。如果是一個程序寫完一處錯誤也沒有,會有種成就感,于是興趣就來了,興趣來了,自然學的東西也就多了,能把理論變成實際的技能,讓我對C語言有了較多的興趣和更深層的認識。

(3)C語言是一個有序的學習,學了最基本的替換,然后擴展到循環,嵌 8 套,條理很清楚,不是一個零散的知識,而是一門較有邏輯思維能力培養的學科。

2、不足:

(1)通過實訓我也知道了自己的不足,存在的很多問題。比如自己寫的寫的小程序出了問題,不會解決了就叫同組的幫忙,雖然說一定意義上增加了同學之間的感情,但是會養成一種依賴的心理,碰到問題了個想到的是求助而不是自己獨立解決,所以以后要多多鍛煉自己的信心和增加自己的能力,爭取做到沒有別人幫助的時候也可以完成一些簡單的程序編寫與錯誤排除。

(2)還有自己的基礎知識不扎實,遇到的問題,沒有很好的邏輯思維,親自編寫一個陌生的程序的時候會有種無法下手的感覺,找不到突破口。通過實訓,逐漸理清了順序,對于簡單的程序和一些相對比較繁瑣的嵌套,循環,不在是看著一頭霧水。其實只要理清了思路,把基礎知識掌握了,然后有條不紊的分析,一步一步理解,感覺C語言還是很有意思的課程。

(3)自己親自動手編寫程序讓我增加了對C語言程序開發環境的了解,在上課的時候老師就講,學習C語言最重要的是學習C語言的邏輯思維,不管以后從事什么行業,學習C語言都對自己的職業很有幫助,如果是從事編程工程工作的話,就更有幫助了,即使以后的編程工作可能不用C語言,但是擁有扎實的C語言基礎是對工作很有用的。當初在初步接觸C語言的時候,看著一堆“奇形怪狀”的符號,覺得甚是無聊,通過這次實訓,擺脫了那種似懂非懂的狀態!

六、致謝

感謝學校安排這次實訓和老師的耐心講解,讓我學到了很多知識,在實訓過程中,同學之間的相互探討,老師的循循善誘,最終讓我們達到了舉一反三的效果,在學知識的同時,也增加了同學老師之間的感情。希望以后還會有更多類似的實訓課程,在有限的大學時間內學到更多的實用技能,為以后的工作打下一個良好的基礎。

第四篇:C語言實習報告

C 語 言 課 程 實習報 告

所 在 院 系 :經濟管理學院 班 級 學 號 :083081 學 序 號 : 20081003628 姓 名 :胡雅雯 程序 已存檔 : 指 導 老 師 :__趙 曼____ 評 分 :____________

二零一零年一月十五日

題目:一擔挑游戲

簡單計算機模擬棋盤對奕,其中棋盤左上角坐標為(1,1),右下角坐標為(3,3),游戲規則如下:(1)計算機移動時,使用相應函數掃描棋盤矩陣,尋找未占單元,發現空單元后,置為”O”,未發現時,報告平局后退出。

(2)輪到對奕者時,使用相應函數要求對奕者回答想把“X”放在哪里。(3)誰先三點連成一線則報告誰勝出。

(4)計算機與對奕者每下一步棋都會使相應位置變為“O”與“X”,便于在屏幕上顯示矩陣。

提示:棋盤位置用二維數組代表,初始位置每一位都置為““空,其分割線可用——或||來分割。

分析: 應有計算機和用戶各自選擇位置的函數,能通過鍵盤選擇位置。

詳細設計: 1 主函數

棋盤的初始化由主函數賦予初值,計算機和用戶的每一步都由函數來確定,并由主函數調用。判斷贏家時由主函數調用核對函數,并顯示最終棋盤格局。

int main(void){ char done;

printf(“This is the game of Tic Tac Toe.”);

printf(“you will be playing against the computer.n”);

done=' ';

init_matrix();do { disp_matrix();

get_player_move();

done=check();/*see if winner*/

if(done!=' ')/*winner!*/

break;

get_computer_move();

done=check();/*see if winner*/ } while(done==' ');

if(done=='X')

printf(“You won!n”);

else printf(“I won!!n”);

disp_matrix();/*show final positions*/

getchar();

return 0;} 2 公共函數

(1)計算機

void get_computer_move(void)/*使計算機走一步*/ { int i,j;

for(i=1;i<4;i++){ for(j=1;j<4;j++)

if(matrix[i][j]==' ')

break;

if(matrix[i][j]==' ')break;} if(i*j==16){ printf(“drawn”);

exit(0);} else

matrix[i][j]='0';}(2)

玩家

void get_player_move(void)/*玩家走一步*/ { int x,y;printf(“Enter X,Y coordinates for your move:”);scanf(“%d%*c%d”,&x,&y);//x--;y--;if(matrix[x][y]!=' '){ printf(“Invalid move, try again.n”);/*所選位置已被計算機占據,則重新選擇*/ get_player_move();} else matrix[x][y]='X';/*被選中的位置置為“X“*/ }(3)disp_matrix(void)void disp_matrix(void){ int t;for(t=1;t<4;t++){ printf(“%c |%c |%c ”,matrix[t][1],matrix[t][2],matrix[t][3]);if(t!=3)printf(“n--|--|--n”);} printf(“n”);}(4)init_matrix(void)

void init_matrix(void)/* initialize the matrix.*/ { int i,j;

for(i=1;i<4;i++)

for(j=1;j<4;j++)

matrix[i][j]=' ';}

(5)核對函數

char check(void)/*是否出現贏家*/ { int i;for(i=1;i<4;i++)/*check rows*/

if(matrix[i][1]==matrix[i][2]&&matrix[i][1]==matrix[i][3])

return matrix[i][1];/*橫行*/

for(i=1;i<4;i++)/*check columns*/

if(matrix[1][i]==matrix[1][i]&&matrix[1][i]==matrix[3][i])

return matrix[1][i];/*豎行*/

for(i=1;i<4;i++)/*check diagonals*/

if(matrix[1][1]==matrix[2][2]&&matrix[1][1]==matrix[3][3])

return matrix[1][1];/*斜行*/

for(i=1;i<4;i++)

if(matrix[1][3]==matrix[2][2]&&matrix[2][2]==matrix[3][1])

return matrix[1][3];/*斜行*/

return ' ';/*返回值*/

}

運行結果

主菜單函數

人機各走一步后

選擇被占位置

計算機贏家

用戶贏家

顯示最終格局

總結:

通過該實例的學習,我初步掌握了開發一個小型實用系統的基本法,學會了調試較長程序和利用流程圖表示算法,進一步掌握和提高了C語言進行程序設計的能力.附錄

5、/*一擔挑游戲 */ #include “stdio.h” #include “stdlib.h” char matrix[3][3];/*the tic tac toe matrix*/ char check(void);void init_matrix(void);void get_player_move(void);void get_computer_move(void);void disp_matrix(void);int main(void){ char done;printf(“This is the game of Tic Tac Toe.”);printf(“you will be playing against the computer.n”);done=' ';init_matrix();do { disp_matrix();get_player_move();done=check();/*see if winner*/ if(done!=' ')/*winner!*/ break;get_computer_move();done=check();/*see if winner*/ } while(done==' ');if(done=='X')printf(“You won!n”);else printf(“I won!!n”);disp_matrix();/*show final positions*/ getchar();return 0;} /* initialize the matrix.*/ void init_matrix(void){ int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)matrix[i][j]=' ';} /*get a player's move.*/ void get_player_move(void){ int x,y;printf(“Enter X,Y coordinates for your move:”);scanf(“%d%*c%d”,&x,&y);x--;y--;if(matrix[x][y]!=' '){ printf(“Invalid move, try again.n”);get_player_move();} else matrix[x][y]='X';} /*get a move from the computer*/ void get_computer_move(void){ int i,j;for(i=0;i<3;i++){ for(j=0;j<3;j++)if(matrix[i][j]==' ')break;if(matrix[i][j]==' ')break;} if(i*j==9){ printf(“drawn”);exit(0);} else matrix[i][j]='0';} /*display the matrix on the screen*/ void disp_matrix(void){ int t;for(t=0;t<3;t++){ printf(“%c |%c |%c ”,matrix[t][0],matrix[t][1],matrix[t][2]);if(t!=2)printf(“n--|--|--n”);} printf(“n”);} /*see if there is a winner.*/ char check(void){ int i;for(i=0;i<3;i++)/*check rows*/ if(matrix[i][0]==matrix[i][1]&&matrix[i][0]==matrix[i][2])return matrix[i][0];for(i=0;i<3;i++)/*check columns*/ if(matrix[0][i]==matrix[1][i]&&matrix[0][i]==matrix[2][i])return matrix[0][i];for(i=0;i<3;i++)/*check diagonals*/ if(matrix[0][0]==matrix[1][1]&&matrix[0][0]==matrix[2][2])return matrix[0][0];for(i=0;i<3;i++)if(matrix[0][2]==matrix[1][1]&&matrix[1][1]==matrix[2][0])return matrix[0][2];return ' ';}

課程設計心得

通過這次課程設計才真正實踐編程明白編程是一件很細致的事情需要不斷的深入的仔細研究,尤其是發現程序運行不了的時候,需要找錯誤是一件很麻煩的事,但是運行出來的時候的喜悅將這一切又全部忘記了,在此次實踐當中正是老師和同學的不斷幫助才使我不斷提高。作為新時代的大學生,我們就是要在不斷實踐不斷研究中不斷地提高自己的能力,如今的社會日新月異,知識信息高速發展,而作為這個時代的標志,計算機更是一個飛速更新的東西,也可能c語言幾年后就會被淘汰,所以這就要求我們不僅要掌握現有的知識,還要不斷和時代的進步發展相結合,不僅要掌握現有的知識更重要的是學會迅速上手每個出現的新事物,從整體的視角把握新時代的脈搏.知識只是把書本和表象攝入底片的照相機,能力才是洞穿事物的本質和內核的透視儀,所以善于抓住一切機會積極實踐,努力提高自己的能力,這才是最重要的。

第五篇:c語言實習報告

目 錄

一、前言?????????????????????????2

二、引言?????????????????????????2 2.1系統開發工具???????????????????? 2 2.2實習目的??????????????????? 3 2.3實習基本內容與要求?????????????????3 2.4實習時間安排???????????????????? 3 2.5實習地點?????????????????????? 3 2.6實習內容??????????????????????????? 3

三、學生成績管理系統分析?????????????????3.1系統概況??????????????????????4 3.2需求分析??????????????????????4 3.3總體功能要求????????????????????5 3.3.1總體功能模塊?????????????????? 5 3.3.2各函數的功能和實現???????????????? 6 3.3.3各部分流程圖??????????????????????? 6 3.3.4性能要求????????????????????????? 8

四、詳細設計???????????????????????8 4.1關鍵部分的代碼、說明及運行結果圖???????????????8

1、全局定義部分?????????????????????8

2、主程序部分??????????????????????8

3、輸入信息部分?????????????????????10

4、輸出信息部分?????????????????????12

5、排序部分??????????????????13

6、插入信息部分??????????????????14

7、刪除部分??????????????????15 4.2總程序????????????????????????16

五、實習心得體會?????????????????????24

六、附錄:參考文獻????????????????????25

一、前言

隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發揮著越來越重要的作用。作為計算機應用的一部分,使用計算機對學生成績信息進行管理,具有手工管理所無法比擬的優點。例如,檢索迅速,查找方便,可靠性高,存儲量大,保密性好,壽命長,成本低等。這些優點能極大地提高學生檔案管理的效率,也是企業的科學化、正規化管理,與世界接軌的重要條件。因此,開發學生成績管理系統很有必要。

學生成績管理系統是為了適應現代化學校的管理,加快推進數字化校園的建設、充分利用校園網,利用網絡、多媒體等計算機應用技術和手段,提高辦公效率、改善質量的高效管理學校系統。

學生成績管理系統是系科綜合管理系統的重要組成部分,為學校學生層面的管理提供了一個有用的數字化學生成績管理系統的工具,在學校學生管理中起著舉足輕重的作用。

為了培養自己正確的程序設計思想,使平時學習的理論聯系實際,培養自己嚴肅認真,實事求是的科學態度和勇于探索的創新精神,培養自己綜合運用所學知識與實踐經驗,分析和解決相應領域的工程技術問題或進行軟件項目開發的能力。學院依照課程教學大綱和課程設計大綱提出了本次課程設計的題目及要求。

要求掌握C程序的基本結構和C語言基本的數據結構,熟悉C程序的編輯、編譯、調試和運行過程,了解程序設計的一般方法、結構化程序設計的思想,熟悉算法的描述工具—N—S流程圖的使用及常用算法,能夠熟練地閱讀用C語言編寫的程序,能夠運用結構化程序設計編寫C程序。

二、引言

2.1系統開發工具簡介

WIN-TC是一個TC2 WINDOWS平臺開發工具。該軟件使用TC2為內核,提供WINDOWS平臺的開發界面,因此也就支持WINDOWS平臺下的功能,例如剪切、復制、粘貼和查找替換等。而且在功能上也有它的獨特特色例如語法加亮、C內嵌匯編、自定義擴展庫的支持等。并提供一組相關輔助工具 令你在編程過程中更加游刃有余,如虎添翼。本軟件用于編寫C語言程序。2.2實習目的

進一步加深、鞏固所學專業課程(《C語言程序設計》)的基本理論知識,理論聯系實際,進一步培養自己綜合分析問題和解決問題的能力。掌握運用C語言獨立地編寫、調試應用程序和進行其它相關設計的技能。

使學生在掌握C語言的基本語法的基礎上,能夠更好的理解和運用其解決實際問題。在實踐實習操作中讓學生對結構化程序設計有更進一步深刻的認識與了解,提高學生的實踐操作能力。2.3、實習基本內容與要求: 用鏈表實現簡單的學籍管理

1、總體功能要求

(1)鏈表的建立:每個節點包括:學號、姓名、性別、語文、數學、英語、總分;

(2)節點的插入:按學號的順序插入;(3)刪除鏈表中的節點:按學號或者姓名;(4)鏈表的輸出:按學號排序、按總分排序。

2、性能的要求:

(1)各個功能分別用函數實現;(2)節點信息讓用戶通過鍵盤輸入;(3)總分通過計算獲得;(4)有簡單的操作界面;

(5)盡可能考慮程序的容錯性、可操作性。

3、寫實習報告以及心得體會

2.4實習時間安排

2011年7月12日 在服務器上下載應用程序、實習報告模板,練習書本第11章的例題

2011年7月13日 在自己的機器上程序設計 2011年7月14日 程序設計

2011年7月15日 撰寫實習報告及心得體會 2011年7月16日 交實習報告 2.5 實習地點:c1 2樓機房 2.6實習內容

對學生信息(包括姓名、學號、語文、數學、英語、平均分、總分)進行管理,包括學生成績的信息輸入、輸出、查詢、刪除、排序、退出、保存.將學生的成績信息進行記錄,信息內容包含:(1)學生的學號(2)學生的姓名(3)學生的成績。假設,現收集到了一個班學生的所有成績信息,要求用C語言編寫一個簡單的成績管理系統,可進行錄入、查詢、修改、排序和瀏覽等功能。學習相關開發工具和應用軟件,熟悉系統建設過程。

三、學生成績管理系統分析

3.1系統概況

本次實習是通過建立一個學生學籍管理系統來更好的認識和掌握C語言中鏈表這一重要的知識內容.本系統實現的功能如下:

1.創建學生學籍信息,每個學生學籍信息包括:學號、姓名、語文、數學、英語、平均分、總分;

2.插入信息:按照學號由小到大的循序插入信息;

3.查找信息:通過選擇按照學號或者姓名來查找到該學生的信息; 4.刪除信息:通過選擇按照學號或者按照姓名刪除某個學生學籍信息; 5.輸出信息:通過選擇按學號(由小到大)或者總分(由小到大)或者平均分(由小到大)來輸出信息;

6.保存信息:對學生學籍系統中的信息以記事本的學生進行保存。

本系統的亮點是在運用模塊來組建該學生學籍管理系統,也就是說各個功能以模塊的實現,通過主函數來調用模塊,實現管理功能,這樣程序結構清晰,容易檢查到錯誤所在模塊,減少了調試的壓力。其次,是運用結構體來組織數據,數據結構規范,通過指針的操作很容易實現簡單的查找、刪除、輸出等操作。最后,容錯性較好,比如輸入成績輸入時按照我們百分制輸入,必須輸入1-100之間的數字,如果輸入的不是1-100中的數據,在系統將顯示信息錯誤信息,要求重新輸入。

軟件配備:TurboC2.0,Windows 2000/20003/xp等; 硬件配備:內存:512MB及以上;

外存:60GB及以上; CPU: 奔4及以上; 3.2需求分析

1、用C語言實現系統;

2、對學生信息(包括學號、姓名、語文、數學、英語、平均分)進行管理,包括學生成績的信息輸入、輸出、查詢、刪除、排序、統計、退出.3、學生信息包括:其內容較多,為了簡化討論,要求設計的管理系統能夠完成以下功能:

(1)、每一條記錄包括一個學生的學號、姓名、3門課成績

(2)、成績信息錄入功能:(成績信息用文件保存,可以一次完成若干條記錄的輸入。)(3)、成績信息顯示瀏覽功能:完成全部學生記錄的顯示。(4)、查詢功能:完成按姓名查找學生記錄,并顯示。(5)、成績信息的刪除:按學號進行刪除某學生的成績.(6)、排序功能:按學生平均成績進行排序。

(7)、應提供一個界面來調用各個功能,調用界面和各個功能的操作界面應盡可能清晰美觀!3.3總體功能要求

3.3.1總體功能模塊 學生成績管理信息系統的主界面,包括六個內容:信息輸入,信息輸出,信息刪除,信息的排序,信息的查找和信息的保存。

信息輸入包括創建信息和信息添加:其中創建的學生信息包括學生的學號,姓名,性別以及語文,數學,英語三門課程的成績。信息添加的內容也是創建的所有學籍信息。

信息刪除是按照學生的學號進行刪除。

信息的排序也可以分為三種方法進行:一是按照學號進行排序,二是根據學生語文、數學、英語三門課程的總分進行排序,三是根據學生語文、數學、英語三門課程的平均分進行排序。

信息的查找時按照學生的學號進行查找。

信息的保存是通過程序與文件的鏈接進行的,可以直接將學生成績以記事本的形式保存到指定文件夾中。

總 體 功 能 模 塊 圖

3.3.2各函數的功能和實現

1、輸入初始的學生信息:輸入信息包括學生的姓名、學號以及學生的成績等相關信息;可用函數void input(STUDENT *data, int *len)來實現此操作。

2、成績輸出模塊:輸出學生的信息以及成績void output(STUDENT *data, int len):通過學生的姓名來查看學生的相關成績,同時也可以分別通過caverage()、maverage()、eaverage()和comaverage()來輸出成績的平均分數、最高和最低分數。

3、成績查詢模塊:可用void find(STUDENT *data, int len)來實現。找到就輸出此學生全部信息。

4、刪除模塊:用函數void delete_item(STUDENT *data, int *len)來實現

5、排序模塊:用函數void sort(STUDENT *data, int len)來實現

6、統計功能能:用函數void stat(STUDENT *data, int len)來實現

7、退出系統:可用一個函數exit()來實現,首先將信息保存到文件中,釋放動態創建的內存空間,再退出此程序。

3.3.3各部分流程圖 1.學生信息輸入流程圖 2.學生信息輸出流程圖

3.刪除的流程圖

4.插入信息的流程圖 5.對信息的排序流程圖

3.3.4性能要求

1、功能分別用函數實現;

2、信息讓用戶通過鍵盤輸入;

3、通過計算獲得;

4、簡單的操作界面;

5、可能考慮程序的容錯

四、詳細設計

4.1關鍵部分的代碼、說明及運行結果圖

1、全局定義部分

#include #include #include #include #define NULL 0 /*令NULL為0,表示空地址*/ #define LEN sizeof(struct student)/*令LEN代表struct student類型數據的長度,sizeof是“求字節數運算符”*/ struct student /*定義結構體*/ { long num;/*定義學生學號*/ char name[20];/*定義姓名*/ char sex[10];/*定義性別*/ int chinese;/*語文分數,假設為整數*/ int math;/*數學分數*/ int english;/*英語分數*/ int sum;/*三門總分*/ struct student *next;};int n;/*n為全局變量,定義為節點個數*/ /*創建鏈表,帶回一個指向鏈表頭的指針*/ struct student *creat(vonum){ struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student*)malloc(LEN);/*開辟一個新單元*/ printf(“nInput student's number:(press 0 to exit)”);

2、主程序部分

main()/*主函數*/

{struct student *head,*stu;long del_num;int N;a: printf(“The student information management system n”);printf(“n(LIST)n”);printf(“ 1.Create a new namelistn”);printf(“ 2.Print the namelistn”);printf(“ 3.Delete a record from the namelistn”);printf(“ 4.insert a recordn”);printf(“ 5.sort the programmen”);printf(“ 0.exit the programmen”);printf(“please enter the number:”);scanf(“%d”,&N);switch(N){case 0:exit(0);goto end;case 1: printf(“input records:n”);head=creat();print(head);break;case 2: print(head);break;case 3: printf(“ninput the delete number :”);scanf(“%1d”,&del_num);while(del_num!=0){head=del(head,del_num);print(head);printf(“ninput the deleted number:”);scanf(“%1d”,&del_num);}break;case 4: printf(“ninput the insert record:”);stu=(struct student *)malloc(LEN);printf(“nplease input number :”);scanf(“%ld”,&stu->num);printf(“please input name”);scanf(“%s”,&stu->name);printf(“please choose sex(f or m):”);scanf(“%s”,&stu->sex);printf(“please input chinese score:”);scanf(“%d”,&stu->chinese);printf(“please input maths score:”);scanf(“%d”,&stu->maths);9 printf(“please input english score:”);scanf(“%d”,&stu->english);while(stu->num!=0){head=insert(head,stu);print(head);printf(“ninput theinsert record:”);stu=(struct student*)malloc(LEN);printf(“nplease input number:”);scanf(“%ld”,&stu->num);printf(“please input name:”);scanf(“%s”,&stu->name);printf(“please choose sex(f or m):”);scanf(“%s”,&stu->sex);printf(“please input chinese score:”);scanf(“%d”,&stu->chinese);printf(“please input maths score:”);scanf(“%d”,&stu->maths);printf(“please input english score:”);scanf(“%d”,&stu->english);break;case 5: head=sort(head);print(head);break;

}goto a;end:;} }

3、輸入信息部分 /*輸入數據*/ scanf(“%ld”,&p1->num);if(p1->num!=0){ a: printf(“Input student's name: ”);scanf(“%s”,&p1->name);b: printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);c: printf(“Input chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0)/*驗證成績是否在0——100之間*/ {printf(“Please enter a number between 0 to 100!n”);10 goto c;} d: printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100!n”);goto d;} e: printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100!n”);goto e;} } head=NULL;while(p1->num!=0){ n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&p1->num);if(p1->num!=0){printf(“Input student's name: ”);scanf(“%s”,&p1->name);printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);printf(“Input Chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0){printf(“Please enter a number between 0 to 100n”);/*績是否在0——100之間*/ goto c;} printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100n”);/*是否在0——100之間*/ 11

驗證成驗證成績 goto d;} printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100n”);goto e;} } } p2->next=NULL;return(head);} 輸入界面如下:

4、輸出信息部分

/*輸出鏈表*/ void print(struct student *head){ struct student *p;printf(“n=============Student information=============n”);printf(“nthe %d recrods are:n”,n);printf(“| NO.| Name | Sex |Chi |math|Eng | sum|n”);printf(“|----------|--------|-----|----|----|----|------|n”);p=head;if(p!=NULL)do { p->sum=p->chinese+p->math+p->english;/*求總分賦給totalscorescore*/ /*輸出各項值*/ 12 printf(“|%10ld|%8s|%5s|%4d|%4d|%4d|%6d|n”, p->num, p->name,p->sex,p->chinese,p->math, p->english,p->sum);p=p->next;/*將p原來指向的節點中next的值賦給p,使p指向第下一個節點*/ p->sum=NULL;/*將總分totalscorescore賦空地址*/ }while(p!=NULL);else printf(“nNo recordsn”);printf(“===============END====================n”);}

5、排序部分

struct student *sort(struct student *head)/*{int i=0;struct student *p,*q,*t,*h1;h1=head->next;head->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;p=head;q=head;while(t->total>p->total&&p!=NULL){q=p;p=p->next;} if(p==q){t->next=p;head=t;} else {t->next=p;q->next=t;} } p=head;while(p!=NULL){i++;p->order=i;p=p->next;} printf(“sort sucess!n”);return(head);}

如按總分排序,界面如下:

排序函數*/

按學號排序,界面如下:

6、插入信息部分

/*插入結點函數*/ struct student *insert(struct student *head,struct student *stud){struct student *p0,*p1,*p2;p1=head;p0=stud;if(head==NULL){head=p0;p0->next=NULL;} else {while((p0->num>p1->num)&&(p1->next!=NULL)){p2=p1;p1=p1->next;} if(p0->num<=p1->num){if(head==p1)head=0;else p2->next=p0;14 p0->next=p1;} else {p1->next=p0;p0->next=NULL;} } n=n+1;p1->order=n;return(head);}

7、刪除部分 /*刪除節點*/ struct student *del(struct student *head,long num)/*參數為起始地址head和學號number*/ { struct student *p1,*p2;if(head==NULL){printf(“nlist null!n”);} p1=head;while(num!=p1->num&&p1->next!= NULL)/**p1指向的不是所要找的節點,并且后面還有節點*/ { p2=p1;p1=p1->next;/**p1后移一個節點*/ } if(num==p1->num){ if(p1==head)head=p1->next;/*若p1指向的是頭節點,把第二個節點地址賦予head*/ else p2->next=p1->next;/*否則將下一節點地址賦給前一節點地址*/ printf(“delete:%ldn”,num);n=n-1;} else printf(“%ld not been found!n”,num);/*找不到該節點*/ return(head);} 界面如下:刪除后

4.2、總程序

#include #include #include #include #define NULL 0 /*令NULL為0,表示空地址*/ #define LEN sizeof(struct student)/*令LEN代表struct student類型數據的長度,sizeof是“求字節數運算符”*/ struct student /*定義結構體*/ { long num;/*定義學生學號*/ char name[20];/*定義姓名*/ char sex[10];/*定義性別*/ int chinese;/*語文分數,假設為整數*/ int math;/*數學分數*/ int english;/*英語分數*/ int sum;/*三門總分*/ struct student *next;};

int n;/*n為全局變量,定義為節點個數*/ /*創建鏈表,帶回一個指向鏈表頭的指針*/ struct student *creat(vonum){ struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student*)malloc(LEN);/*開辟一個新單元*/ 16 printf(“nInput student's number:(press 0 to exit)”);/*輸入數據*/ scanf(“%ld”,&p1->num);if(p1->num!=0){ a: printf(“Input student's name: ”);scanf(“%s”,&p1->name);b: printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);c: printf(“Input chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0)/*驗證成績是否在0——100之間*/ {printf(“Please enter a number between 0 to 100!n”);goto c;} d: printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100!n”);goto d;} e: printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100!n”);goto e;} } head=NULL;while(p1->num!=0){ n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&p1->num);if(p1->num!=0){printf(“Input student's name: ”);17 scanf(“%s”,&p1->name);printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);printf(“Input Chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0){printf(“Please enter a number between 0 to 100n”);/*驗證成績是否在0——100之間*/ goto c;} printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100n”);/*是否在0——100之間*/ goto d;} printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100n”);goto e;} } } p2->next=NULL;return(head);}

/*輸出鏈表*/ void print(struct student *head){ struct student *p;printf(“n=============Student information=============n”);printf(“nthe %d recrods are:n”,n);printf(“| NO.| Name | Sex |Chi |math|Eng | sum|n”);printf(“|----------|--------|-----|----|----|----|------|n”);p=head;if(p!=NULL)do { p->sum=p->chinese+p->math+p->english;/*求總分賦給totalscorescore*/ /*輸出各項值*/ 18

驗證成績 printf(“|%10ld|%8s|%5s|%4d|%4d|%4d|%6d|n”, p->num, p->name,p->sex,p->chinese,p->math, p->english,p->sum);p=p->next;/*將p原來指向的節點中next的值賦給p,使p指向第下一個節點*/ p->sum=NULL;/*將總分totalscorescore賦空地址*/ }while(p!=NULL);else printf(“nNo recordsn”);printf(“===============END====================n”);}

/*刪除節點*/ struct student *del(struct student *head,long num)/*參數為起始地址head和學號number*/ { struct student *p1,*p2;if(head==NULL){printf(“nlist null!n”);} p1=head;while(num!=p1->num&&p1->next!= NULL)/**p1指向的不是所要找的節點,并且后面還有節點*/ { p2=p1;p1=p1->next;/**p1后移一個節點*/ } if(num==p1->num){ if(p1==head)head=p1->next;/*若p1指向的是頭節點,把第二個節點地址賦予head*/ else p2->next=p1->next;/*否則將下一節點地址賦給前一節點地址*/ printf(“delete:%ldn”,num);n=n-1;} else printf(“%ld not been found!n”,num);/*找不到該節點*/ return(head);}

/*插入節點*/ struct student *insert(struct student *head,struct student *stud)/*stud是一個指針變量,從實參傳來待插入節點的地址給stud*/ { struct student *p0,*p1,*p2;p1=head;/*使p1指向第一個節點*/ p0=stud;/*p0指向要插入的節點*/ if(head==NULL)/*原來的鏈表是空表*/ {head=p0;p0->next=NULL;/*使p0指向的節點作為頭節點*/ 19 } else { while((p0->num>p1->num)&&(p1->next!=NULL)){ p2=p1;/*使p2指向剛才p1指向的節點*/ p1=p1->next;/*p1后移一個節點*/ } if(p0->num

num){ if(head==p1)head=p0;/* else p2->next=p0;/* p0->next=p1;} else {p1->next=p0;p0->next=NULL;} /* } n=n+1;/*節點數加1*/ return(head);}

/*exchange the element of chain*/ void swap(struct student* q1,struct student* q2){long temp_num;char temp_name;char temp_sex[10];int temp_chinese;int temp_math;int temp_english;int temp_sum;char s1[20];

temp_num=q1->num;q1->num=q2->num;q2->num=temp_num;

strcpy(s1,q1->name);strcpy(q1->name,q2->name);strcpy(q2->name,s1);

temp_sex[10]=q1->sex[10];q1->sex[10]=q2->sex[10];q2->sex[10]=temp_sex[10];

插到原來第一個節點之前*/ 插到p2指向的節點之后*/ 插到最后的節點之后*/ temp_chinese=q1->chinese;q1->chinese=q2->chinese;q2->chinese=temp_chinese;

temp_english=q1->english;q1->english=q2->english;q2->english=temp_english;

temp_math=q1->math;q1->math=q2->math;q2->math=temp_math;

temp_sum=q1->sum;q1->sum=q2->sum;q2->sum=temp_sum;}

/*sort by num*/ struct student * sort_num(struct student* head){struct student *p0,*p1,*p2;p0=head;do{ p1=p0;p2=p1;do{ if(p1->num>p2->num)p1=p2;p2=p2->next;}while(p2!=NULL);if(p1!=p0)swap(p0,p1);p0=p0->next;}while(p0!=NULL);return(head);}

/*sort by totalscore form high to low*/ struct student * sort_sum(struct student* head){struct student *p0,*p1,*p2;p0=head;do{ p1=p0;p2=p1;do{ if(p1->sum

sum)p1=p2;21 p2=p2->next;}while(p2!=NULL);if(p1!=p0)swap(p0,p1);p0=p0->next;}while(p0!=NULL);return(head);}

/*主程序*/ main(){struct student *head,*stu;char aa;long del_num;M: printf(“n************welcome System************nn”);

to

the

School

Management printf(“***************************************************************n”);printf(“n************

made by GIS1011 chenliuqing 1020209124 ************n”);printf(“* 1.Input students' records 2.Print students' records *n* 3.Delete records 4.Insert records *n* 5.Sort by number 6.Sort by totalscore *n* 7.System Information 8.Exit *n ”);

printf(“********************END****************************************n”);printf(“********* ***************n”);aa=getch();aa=tolower(aa);switch(aa){ case'1': printf(“nInput students' records”);head=creat();/*返回頭指針*/ print(head);/*輸出全部節點*/ break;/*調用輸出鏈表函數*/ case'2':print(head);/*輸出全部節點*/ break;/*調用刪除節點函數*/ case'3': printf(“nInput the deleted number(press 0 to exit): ”);scanf(“%ld”,&del_num);while(del_num!=0){head=del(head,del_num);/*返回頭指針*/ print(head);/*輸出全部節點*/

please

choose

the

number

before

command 22 printf(“nInput the deleted number(press 0 to exit): ”);scanf(“%ld”,&del_num);} break;/*調用插入節點函數*/ case'4': printf(“nInput the inserted record”);stu=(struct student*)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&stu->num);if(stu->num!=0){ printf(“Input student's name:”);scanf(“%s”,stu->name);printf(“Input student's sex(f or m):”);scanf(“%s”,stu->sex);printf(“Input chinese score: ”);scanf(“%d”,&stu->chinese);printf(“Input math score: ”);scanf(“%d”,&stu->math);printf(“Input english score: ”);scanf(“%d”,&stu->english);} while(stu->num!=0){ head=insert(head,stu);print(head);/*輸出全部節點*/ printf(“Input the inserted record”);stu=(struct student *)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&stu->num);printf(“Input student's name: ”);scanf(“%s”,stu->name);printf(“Input student's sex(f or m): ”);scanf(“%s”,stu->sex);printf(“Input Chinese score:”);scanf(“%d”,&stu->chinese);printf(“Input math score:”);scanf(“%d”,&stu->math);printf(“Input english score:”);scanf(“%d”,&stu->english);} break;/*調用按學號(從小到大)排序函數*/ case '5': head=sort_num(head);print(head);/*輸出全部節點*/ 23 break;/*調用按總分(從高到低)排序函數*/ case '6': head=sort_sum(head);print(head);/*輸出全部節點*/ break;case'7':printf(“n~~~~~~~~~~~~System Information~~~~~~~~~~~~n”);printf(“School Management SystemnMade Time:2010-7-24nVersion number:1.0nn”);printf(“~~~~~~~~~~~~~~~~~~ /*顯示系統信息*/ break;case'8':exit();/*退出程序*/ /*調用創建鏈表函數*/

} goto M;/*返回、顯示主菜單*/ }

END

By

xugaohongnFinish

~~~~~~~~~~~~~~~~~~nnn”);

五、實習心得體會

由于本課題中的許多知識點都沒有學過都要靠自己到課外的資料中去查找。在用的時候難免出現這樣那樣的錯誤。如開始設計出來的菜單不是預想的那樣,而是總個窗中出現混亂。解決的這個問題的辦法是調整。一個系統的菜單和提示信息非常重要。如果沒有這些用戶根本不知道怎么用你設計的這個系統。在設計的調試過程中也無法順利的完成調試工作。有了一個清晰簡單的菜單和一些提示信息這后,調試過程完成的非常順利。通過本次C語言程序設計的實習,我學得了很多知識,雖然在之前老師沒有詳細講鏈表的內容,但是我通過自己看書,同學一起討論,會用鏈表處理簡單的實際問題了,并對鏈表的建立、結點的插入、刪除節點以及鏈表的輸出等一系列鏈表知識有了較為深刻的認識。而且自己的實際操作能力也有了提高。

回顧起此次課程設計,我感慨頗多,的確,從拿到題目到完成整個編程,從理論到實踐,在整整兩個禮拜的日子里,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我們懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能 24 真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體??通過這次課程設計之后,一定把以前所學過的知識熟悉了,本次課程設計結束了,我們通過這次實踐學到了許多知識。學到了設計一個簡單的系統。要注意哪些方面。也使我們知道自己哪些方面做得還不夠。這不僅是程序設計,更是鍛煉我們處理問題的能力,同時也使我們了解到團隊合作的可貴.編寫程序是件細心活,稍不留神就會出錯,這就必須要求我們對待事情要認真!在編寫程序的過程中,錯誤不斷出現,不同的類型(如少寫了一個符號,寫錯了字母,用錯了函數等等)層出不窮,這考驗我們待事細心,耐心,能不能堅持到底,不能半途而廢。但我們總結出了一點點的經驗如下:

1、要對系統的功能和要求做出詳細的分析,并合理分解任務。

2、把分解出來的子任務,做給一個相對獨立的模塊。

3、在設計一個模塊之前,要簡單構想一下總界面的顯視情況。

4、針對構想出來的界面進行程序的編寫。

六、附錄:

參考文獻

教材和主要參考書目:(1)教材:《C程序設計》,譚浩強編著,清華大學出版社(2)主要參考書目: ①《C程序設計教程》,譚浩強編著,清華大學出版社; ②《C語言程序設計——習題與實驗指導》,譚浩強編著,清華大學出版社。

下載C語言實習報告(優秀范文五篇)word格式文檔
下載C語言實習報告(優秀范文五篇).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    C語言實習報告5篇

    C 語 言 實習報 告 系別:自動化工程系 班級:電力1201班 姓名:張浩 學號:2012110137 一、實習目的 1、目的是培養我們具有初步的C語言程序設計、編程、調試和排除C語言程序語法......

    C語言程序設計實習報告

    實習報告 題 目: C語言程序設計 所屬系、部 : 電氣工程學院 班 級: 電子商務131 姓 名:賀道君 學號: 20***5 指 導 教 師: 費 玲 玲2014年6月 一、 實習目的 加深......

    C語言課程設計實習報告

    C語言課程設計實習報告 題目一、兩個大數相乘問題 題目描述:本問題中,要求輸入兩個相對較大的正整數,能夠通過程序計算出其結果。 設計思路:用數組存儲一個大數,數組的每個單元存......

    c語言上機實習報告

    蘇州科技大學上機實習報告 程序設計語言(C語言) 實驗一: Visual C++實驗環境 一、實驗任務 實驗一 二、實驗目的 1. 了解C程序結構,熟悉VC++ 6.0開發環境。 2. 熟悉在VC++ 6.......

    C語言實習報告123

    C語言課程設計報告 第1章 目的任務 1.1實訓目的 (1) 鞏固C語言所學基本課程; (2) 提高C語言編程的綜合應用能力; (3) 學會C語言程序的編譯、調試方法。 1.2實訓任務 (1) 掌握C語言中的......

    C語言實習報告-下

    C語言實習報告-下 修改 定義一個整型變量n,通過輸入n的值,利用scanf對數據進行輸入、printf對修改后的數據進行輸出,使用指針實現對具體項目的輸出。 查詢 定義一個整型變量n,利......

    C語言上機實習報告

    一、實驗目的 1.能夠描述VC++6.0開發平臺的使用過程,學會運行一個C程序的基本步驟,包括編輯、編譯、鏈接和運行。 2.能夠使用算術表達式和賦值表達式書寫正確的語句。 3.能夠使用......

    C語言課程實習報告

    新疆農業職業技術學院 《 VB程序與設計 教學實習報告 部門:信息技術學院 專業: 計算機應用 班級:10高職應用班 姓名: 李蒙 指導教師: 徐玉蓮》 《VB程序與設計》教學實習報告 10......

主站蜘蛛池模板: 熟妇人妻中文字幕| 国产无套白浆一区二区| 午夜福利无码一区二区| 性xxxx搡xxxxx搡欧美| 国产精品毛片无码| 九九综合va免费看| 成人国产精品一区二区免费看| 中文乱码人妻系列一区二区| 美女网站免费观看视频| 亚洲欧美日韩在线资源观看| 在线亚洲97se亚洲综合在线| 高潮呻吟国产在线播放| 国产免费无码av在线观看| 无码国产一区二区三区四区| 欧美成人午夜精品久久久| 欧美男男大粗吊1069| 在线涩涩免费观看国产精品| www插插插无码免费视频网站| 一区二区视频| 92精品国产自产在线观看481页| 热99re久久精品这里都是精品免费| 亚洲精品午睡沙发系列| 久久香蕉国产线看观看手机| 国产精品免费久久久久影院仙踪林| 中文字幕精品久久久久人妻红杏1| 天堂av男人在线播放| 久久久久高潮综合影院| 亚洲国产av无码精品无广告| 亚洲综合国产在不卡在线| 国产精品无码一区二区三区不卡| 国产av精国产传媒| 久久亚洲精品无码观看不卡| 国产探花在线精品一区二区| 日本又色又爽又黄的a片吻戏| 国产成人免费ā片在线观看| 无码少妇一区二区三区芒果| 无码高潮少妇毛多水多水| 国产网曝门亚洲综合在线| 亚洲久热无码中文字幕人妖| 51福利国产在线观看午夜天堂| 少妇高潮太爽了在线视频|