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

C語言實踐報告(范文)

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

第一篇:C語言實踐報告(范文)

二級學院:信息與工程學院

系別:計算機科學與技術系

專業:信息管理與信息系統

課程名稱:高級語言程序設計

班級:姓名:

實驗名稱:

電話訂餐信息處理 實驗目的:

題目要求:

一個小飯館的生意非常紅火,要想用餐必須提前一天打電話預訂,假設我們是飯館負責接受

電話預訂的服務員,我們需要做些什么呢?首先,需要準備一張大小適當的白紙,等待顧客的電話。李紅最先打進了電話,她預約第2天中午12點用餐,用餐人數5人,服務員在紙上做了如下記錄:“李紅 12點 5人”;接著,劉娜、汪涵、孫杰和趙君分別來了電話,服務員根據他們的要求做了記錄,此時紙上記錄的內容是: 李紅 12點 5人

劉娜 11點 2人

汪涵 11點20分 3人

孫杰 10點30分 5人

趙君 13點20分 6人

孫杰隨后又來電話,將用餐時間推后一個小時,那么記錄的內容也應該做相應的修改。劉娜來用餐以后,可以將其信息從紙上劃去

編寫程序處理電話訂餐的情況

實驗步驟:

首先建立結構體類型,然后函數聲明,編寫主函數,定義函數,調用函數。完成后,對程序進行調試,確定所編寫的程序是否能夠運行。

實驗內容:

#include #include #define max 30 struct guest { intnum;char name[40];char time[20];int sum;}guestlink[max];void insert(int *p);void inquire(int);void change(int);void dele(int *p);void show(int);void main(){ inti;int count=0;do {0 printf(1.......插入n);printf(2.......查詢n);printf(3.......修改n);printf(4.......刪除n);printf(5.......顯示n);printf(6.......退出n);scanf(%d,&i);switch(i){ case 1: insert(&count);break;case 2: inquire(count);break;case 3: change(count);break;case 4: dele(&count);break;case 5: show(count);break;case 6:break;default:printf(輸入錯誤!);break;} }while(i!=6);} void insert(int *p){ inti,number;if(*p==max){ printf(用餐已滿n);return;} printf(請輸入編號:);scanf(%d,&number);for(i=0;i<*p;i++)if(guestlink[i].num==number){ printf(已有相同的編號);return;} guestlink[i].num=number;printf(請輸入姓名:);scanf(%s,guestlink[i].name);printf(請輸入人數:);scanf(%d,&guestlink[i].sum);printf(請輸入用餐時間:);scanf(%s,guestlink[i].time);(*p)++;} void inquire(int p){ inti,number,flag=1;printf(請輸入要查詢的編號);scanf(%d,&number);for(i=0;i

=p&&flag==1)printf(所查詢的編號不存在);} void change(int p){ inti,number,flag=1;printf(請輸入要修改的編號);scanf(%d,&number);for(i=0;i

=p&&flag==1)printf(所查詢的編號不存在);} void dele(int *p){ inti,j,number,flag=1;printf(請輸入要刪除的編號);scanf(%d,&number);for(i=0;i<*p&&flag;i++)if(guestlink[i].num==number){for(j=i;j<*p-1;j++)guestlink[j]=guestlink[j+1];flag=0;(*p)--;} if(i>=*p&&flag==1)printf(輸入的編號不存在);} void show(int p){ inti;printf(編號 姓名 用餐時間 人數n);for(i=0;i

中南大學 本科生課程設計(實踐)報告

(c語言)題 目 指導教師 學 院 專業班級 學生學號 學生姓名

全國各省會城市天氣情況統計

計算機基礎教學實驗中心 2007年 9 月 10 日

目 錄 1.1 課程設計內容概述:???????????????????????????????.1 1.1.1實踐背景知識:??????????????????????????????.1 1.1.2實踐內容:?????????????????????????????????1 1.1.3實踐目的及意義:????????????????????????????.?2 1.2設計方案及實現過程:?????????????????????????????..2 1.2.1總體設計思路:??????????????????????????????.2 1.2.2程序設計流程圖(主函數):???????????????????????3 1.2.3操作步驟及設計成果:??????????????????????????3 2.1方法技巧及所遇到的問題:??????????????????????????...5(轉載于:c語言實踐報告)2.1.1實踐方法的歸納總結:??????????????????????????5 2.1.2問題及解決辦法:?????????????????????????????6 2.2實踐的心得與體會:???????????????????????????????6 1.1課程設計內容概述: 1.1.1 實踐背景知識:

計算機技術的發展和廣泛應用,正深刻地改變著現有的社會生產方式和生活方式,成為信息社會的重要支柱。信息化社會對人才的培養提出了更高的要求和標準。掌握和了解計算機技術并具有應用計算機的能力是適應信息化社會的基礎。c語言是近年來在國內外得到迅速推廣應用的一種計算機語言。其功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可移植性好,既具有高級語言的優點,又具有低級語言的許多特點。因此,c語言特別適合于編寫系統軟件。

現在,c語言已不僅為計算機專業工作者所使用,而且為廣大計算機愛好者所青睞,許多人已經用它編寫應用軟件。如今,學習c語言已成為眾多計算機應用人員和青年學生的迫切要求。

1.1.2實踐內容:

上網查詢各省會城市某日最高、最低氣溫和濕度,將數據(城市名稱、最高氣溫、最低氣溫、濕度)以統一格式保存在一個純文本文件a.txt中。編程實現: a.從文件a.txt中讀取數據,計算全國省會當日的最高氣溫、濕度的平均值,統計最高氣溫高于平均值的城市數;

b.按濕度升序排序,將排序后的數據存入文件b.txt中; c.計算各城市溫差,計算自己所在省的省會城市溫差在各省會城市中的排名; d.統計最高氣溫在10℃以下、10℃∽20℃、20℃∽30℃、30℃以上的城市數,并繪制分布餅圖和折線圖。1.要求:

a.利用子程序,分模塊實現; b.所有數據采用文件形式保存; c.數據的組織可采用數組,也可用結構體數組。1.1.3實踐目的及意義:

通過對書本知識的自學和理解,掌握用c語言編寫實用程序和設計自定義用戶界面的基本方法,培養利用程序設計技術進行計算機與專業知識的交叉應用,增強綜合解決實際問題的能力,掌握多模塊結構的程序設計與調試方法以及程序模塊間的數據傳遞方法,建立提出問題、分析問題、解決問題的思維方式,提高自身計算機水平,促進靈活運用所學知識解決問題能力的提高。

1.2設計方案及實現過程: 1.2.1總體設計思路: 1.將上網查詢的數據保存在純文本文檔里,所編寫的程序包括一個主函數和四個子函數,主函數主要是定義由文件中各類數據組成的結構體和供運行者選擇的分支結構。2.第一個自定義函數功能為:調用特定的庫函數從文件中讀取數據,此處應注意已保存文本的格式和函數中定義的數據類型,再采用循環結構將最高溫度和濕度值累加求平均值,最高氣溫高于平均值的城市數目也可通過循環結構計算出來。3.第二個自定義函數功能為:將文件中各個城市的濕度值讀出來,采用選擇排序或者冒泡排序法將所有數值從小到大排列,再調用fprintf函數,把排列好的數據存入指定名稱的文本文檔中。4.第三個自定義函數功能為:利用循環結構把各城市最高溫與最低溫相減,將所得差值定義為一個數組,并顯示在屏幕上,然后從第一個城市開始,和長沙市的溫差比較,將大于長沙市的城市數目累加,即得出本市的具體排名。5.第四個自定義函數功能為:先將各城市的最高氣溫除十以方便計算,再采用switch語句,通過循環結構讀出各溫度段的城市數目并累加,把所得結果用餅狀圖和折線圖顯示在屏幕上。1.2.2程序設計流程圖(主函數): 1.2.3操作步驟及設計成果:

1、定義文件名、文件指針、結構體數組和需要用到的自定義函數,為方便編程過程中的修改,將城市數目定義為宏。#include #include #include #define n 34 struct c{char name[15];int high;int low;int wed;}city[n];file *fp;void f1();void f2();void f3();void f4();

2、編寫主函數,利用輸出函數輸出一些中文提示語句以方便運行時選擇。為使運行時界面清晰,還可以用幾行*******和--------符號隔開。main()篇三:c語言實習報告

設計報告

一,實驗目的: 通過上機實習,熟練掌握循環語句、選擇語句、指針以及結構體的運用技巧。在實習中通過實際操作,編寫程序,發現問題,最后解決問題,提升對c語言實用性的理解,在實踐中鞏固各知識點。c語言是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點,上機實習可以幫助我們更好地理解這種結構式的中級語言以及其各式各樣的數據類型和高效率的運算程序,為我們進一步學習c++打下堅實基礎。

同時,在實習過程中,通過互相發現問題,共同解決問題,不僅鍛煉了我們的合作能力,而

且也讓我們發現了一些自己的個人誤區以及其他人容易犯的錯誤,從而在今后的學習中更加謹慎,達到事半功倍的效果;通過詢問老師,也讓我們養成了不恥下問的好習慣,這將很有利于以后的學習。

閑樂-一個人閑。不如大家一塊兒樂/retype/zoom/9861aabdfd0a79563c1e72ad?pn=2&x=0&y=0&raww=312&rawh=443&o=jpg_6_0_______&type=pic&aimh=443&md5sum=5742db4fcffa47783d15ae929b606fc2&sign=8d2e99c900&zoom=&png=276-8578&jpg=0-25354“ target=”_blank">點此查看 <通過冒泡法對數組進行排序> <測試時由于循環語句循環次數的錯誤導致部分數據沒有排序,修改for語言中的條件即可調試成功> 2,程序:

#include int main(){ int a[11],i,j,t,b,c,temp1,temp2,temp3;//定義一個數組a[11],用以存放學生的成績 printf(從鍵盤輸入10個學生成績:n);for(i=0;i<10;i++)scanf(%d,&a[i]);//輸入10個學生成績

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)

if(a[j]

a[10]=b;else {for(i=0;i<10;i++)

{if(a[i]

{temp1=a[i];a[i]=b;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;} } } printf(11個學生成績數組:n);

for(i=0;i<11;i++)printf(%5d,a[i]);printf(n);for(i=0;i<5;i++)

{

temp3=a[i];a[i]=a[10-i];a[10-i]=temp3;} printf(排好序的成績單進行反序存放為:n);for(i=0;i<11;i++)

printf(%5d,a[i]);printf(n);return 0;} 3,運行結果: //輸入11個學生成績 //排好序的成績單進行反序存放 //輸出反序存放后的學生成績數組 2,根據條件進行學生成績排名 1 sort1 篇四:c語言實踐報告 c語言大型作業實踐報告

目錄

一.題目?????????????????????????????????????????..3 二.設計思路流程圖??????????????????????????????????.3 三.程序運行實時截圖?????????????????????????????????6 四.程序源代碼?????????????????????????????????????.13 五.程序說明??????????????????????????????????????...36 六.程序編寫時遇到的問題及解決辦法???????????????????????37 七.體會??????????????????????????????????????????38 一.題目:選修課程管理系統

要求:假定有n門選修課,每門課有課程編號、名稱、課程性質、總學時、授課學時、實驗或上機學時、學分、開課學期等信息。學生可按要求(如總學分不能少于20學分)選課。? 課程信息維護,如錄入、修改、刪除等,課程信息用文件保存。? 課程信息瀏覽—輸出。? 學生選課功能。? 查詢功能包括:按學分、課程性質、學生等查詢。? 統計功能。統計各門課程的選修人數。

? 本系統要有通用性、界面美觀、操作方便。要考慮系統安全。

具體算法流程設計思路(流程圖): 篇五:c語言實訓報告

《c語言程序設計》實訓報告

課題名稱: 通訊錄管理系統

專 業: 計算機信息管理

班 級: 09信管(1)班

學 號:

姓 名:

指導教師:

2010 年 7 月 1 日

目 錄

課程設計目的??? 1 2 課程設計題目??? 1 3 課程設計報告內容? 1 4 結論??? 10 5 結束語?? 10 6 參考書目? 10 7 程序運行? 10 8 附錄:(源程序清單)12

一、課程設計題目 《通訊錄管理系統》

二、實訓目的(1)掌握結構化程序設計的基本方法,基本掌握面向對象程序設計的基本思路和方法。(2)掌握c的基本概念和基礎知識。

(3)通過訓練能夠讀懂較為復雜的c語言源程序并具備基本c語言程序設計的能力。(4)熟練掌握各種常用類的定義,繼承,文件的應用,為更好的理解面向對象打下更好的基礎。

(5)通過實訓,培養自己編寫、調試、分析大型應用程序的能力。

(6)掌握面向對象的基本原理,提高學生綜合程序設計的能力。

(7)培養自己獨立解決問題,查找資料的能力。同學之間相互幫助,相互交流,相互合作的團隊精神。

(8)培養自己良好的學習興趣,獨立的編程風格。

(9)通過實訓檢查自己學習上的不足,達到熟練掌握c語言的基本知識和技能。

三、課程設計報告內容 3.1功能要求

該系統運行在dos環境下,人機界面為命令行文本界面。完成的任務是對若干人的通信錄信息進行管理,且數據保存到文件中。

實現的主要功能是:

? 添加:增加一個或幾個人的通信錄信息。? 刪除:刪除已輸入的通信錄信息。? 查詢:根據輸入的姓名查找通信錄信息。? 修改:根據輸入的姓名修改通信錄信息。? 顯示:輸出所有通信錄信息。3.2 設計環境

所使用的語言采用標準c,開發工具選用在windows環境下的c-free、win-tc或者visual c++ 6.0。

3.3 數據結構

本系統是對通信錄的信息進行管理,通信錄記錄的信息采用c的結構體數據類型描述,定義如下:

struct ren /*定義個人資料結構體類型*/ { char name[10];/*姓名*/ int age;/*年齡*/ char tel[12];/*電話號碼*/ char city[20];/*城市 */ char units[30];/*所在單位*/ char note[20];/*備注*/ };3.4實現方法及主要算法分析(1)主界面的設計:主界面采用文本菜單的形式,各功能調用通過菜單進行選擇。采用循環處理,以便執行完某項處理后,仍可選擇其他項處理。在循環內先顯示提示信息,然后讀取用戶輸入,使用switch語句對用戶的輸入進行判斷,分別調用相應的模塊,當某模塊結束后再次回到文本菜單,直到用戶選擇結束程序菜單,才退出循環,從而退出系統。(2)外部文件的類型:文件采用的二進制的文件,對文件的讀寫采用順序文件的方式,并使用fread和fwrite等函數對文件進行操作。

(3)清屏函數:一般由上一級菜單屏幕進入下一級菜單屏幕或由下一級菜單屏幕返回上一級菜單屏幕都需要清除屏幕原來顯示的內容。同時在調用程序的過程中,記錄需要清屏的位置,然后修改代碼,加入clrscr()函數清屏。

(4)提示信息:一般的輸入與輸出需有相應的提示信息,以增加用戶的交互性,增加輸出的可讀性,以幫助用戶使用程序。

(5)設置顏色:textbackground()、textcolor()函數設置背景和前景顏色(6)光標定位:gotoxy(列,行);光標定位 3.5模塊設計

根據功能要求,本系統為五大主要模塊,具體模塊如表所示。

第二篇:c語言實踐報告(范文模版)

實 驗 報 告

二級學院:信息與工程學院 系別:計算機科學與技術系 專業:信息管理與信息系統 課程名稱:高級語言程序設計

班級:姓名:

實驗名稱:

電話訂餐信息處理

實驗目的:

題目要求:

一個小飯館的生意非常紅火,要想用餐必須提前一天打電話預訂,假設我們是飯館負責接受電話預訂的服務員,我們需要做些什么呢?首先,需要準備一張大小適當的白紙,等待顧客的電話。李紅最先打進了電話,她預約第2天中午12點用餐,用餐人數5人,服務員在紙上做了如下記錄:“李紅 12點 5人”;接著,劉娜、汪涵、孫杰和趙君分別來了電話,服務員根據他們的要求做了記錄,此時紙上記錄的內容是: 李紅 12點 5人 劉娜 11點 2人 汪涵 11點20分 3人 孫杰 10點30分 5人 趙君 13點20分 6人

孫杰隨后又來電話,將用餐時間推后一個小時,那么記錄的內容也應該做相應的修改。劉娜來用餐以后,可以將其信息從紙上劃去 編寫程序處理電話訂餐的情況

實驗步驟:

首先建立結構體類型,然后函數聲明,編寫主函數,定義函數,調用函數。完成后,對程序進行調試,確定所編寫的程序是否能夠運行。

實驗內容:

#include #include #define max 30 struct guest { intnum;char name[40];char time[20];int sum;}guestlink[max];

void insert(int *p);void inquire(int);void change(int);void dele(int *p);void show(int);

void main(){ inti;int count=0;do {0 printf(“1.......插入n”);printf(“2.......查詢n”);printf(“3.......修改n”);printf(“4.......刪除n”);printf(“5.......顯示n”);printf(“6.......退出n”);scanf(“%d”,&i);switch(i){ case 1: insert(&count);break;case 2: inquire(count);break;case 3: change(count);break;case 4: dele(&count);break;case 5: show(count);break;case 6:break;default:printf(“輸入錯誤!”);break;} }while(i!=6);} void insert(int *p){ inti,number;if(*p==max){ printf(“用餐已滿n”);return;} printf(“請輸入編號:”);scanf(“%d”,&number);for(i=0;i<*p;i++)

if(guestlink[i].num==number)

{ printf(“已有相同的編號”);return;}

guestlink[i].num=number;

printf(“請輸入姓名:”);scanf(“%s”,guestlink[i].name);

printf(“請輸入人數:”);scanf(“%d”,&guestlink[i].sum);printf(“請輸入用餐時間:”);scanf(“%s”,guestlink[i].time);(*p)++;} void inquire(int p){ inti,number,flag=1;printf(“請輸入要查詢的編號”);scanf(“%d”,&number);for(i=0;i

if(guestlink[i].num==number){ printf(“姓名:%s”,guestlink[i].name);printf(“用餐時間:%s”,guestlink[i].time);printf(“人數:%dn”,guestlink[i].sum);flag=0;}

if(i>=p&&flag==1)printf(“所查詢的編號不存在”);

}

void change(int p){ inti,number,flag=1;printf(“請輸入要修改的編號”);scanf(“%d”,&number);for(i=0;i

scanf(“%s”,guestlink[i].name);

printf(“請輸入用餐時間:”);scanf(“%s”,guestlink[i].time);printf(“請輸入人數:”);

scanf(“%d”,&guestlink[i].sum);flag=0;} if(i>=p&&flag==1)printf(“所查詢的編號不存在”);}

void dele(int *p){ inti,j,number,flag=1;printf(“請輸入要刪除的編號”);scanf(“%d”,&number);for(i=0;i<*p&&flag;i++)if(guestlink[i].num==number){for(j=i;j<*p-1;j++)

guestlink[j]=guestlink[j+1];flag=0;

(*p)--;

} if(i>=*p&&flag==1)printf(“輸入的編號不存在”);}

void show(int p){ inti;printf(“編號 姓名 用餐時間 人數n ”);for(i=0;i

實驗結果:

實驗體會:

通過這次實踐讓我覺得用C語言在生活中的應用占有很大的比重,這次編程,讓我體會到了學習C語言的樂趣,以及運用c語言給人們帶來的方便。作為一名初學者,我了解到了計算機語言的神秘性和邏輯性,將算法與數據結構的充分結合,體現了程序的內涵,也同時展現了C語言的深度。也是因為這次實踐的過程,加深了我對c語言的興趣,也意識到學習c語言是需要耐心和細心的。只有透徹的學習,才能有熟練的運用。

第三篇:c語言實踐報告心得范文

c 語言實踐報告心得模板

?

在科技高度發展的今天,計算機在人們之中的作用越來越突出。而 c 語言作為一種計算機的語言,我們學習它,有助于我們更好的了解計算機,與計算機進行交流,下面由我為大家整理了關于 c 語言實踐報告心得,供大家參考。

#c 語言實踐報告心得 1# ?

在科技高度發展的今天,計算機在人們之中的作用越來越突出。而 c 語言作為一種計算機的語言,我們學習它,有助于我們更好的了解計算機,與計算機進行交流,因此,c 語言的學習對我們尤其重要。

在這個星期里,我們專業的學生在專業老師的帶領下進行了 c語言程序實踐學習。在這之前,我們已經對 c 語言這門課程學習了一個學期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對里面的好多東西還是很陌生,更多的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難嘛。

由于時間的關系,我們的這次實踐課程老師并沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理。簡單界面程序。高級界面程序。程序的添加修改。用程序做一元線性回歸處理以及用 c 語言程序來畫粒度分布圖等這幾

樣比較重要的時間操作。

上機實驗是學習程序設計語言必不可少的實踐環節,特別是 c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對于程序設計語言的學習目的,可以概括為學習語法規定、掌握程序設計方法、提高程序開發能力,這些都必須通過充分的實際上機操作才能完成。

學習c 程序設計語言除了課堂講授以外,必須保證有不少于課堂講授學時的上機時間。因為學時所限,課程不能安排過多的統一上機實驗,所以希望學生有效地利用課程上機實驗的機會,盡快掌握用c 語言開發程序的能力,為今后的繼續學習打下一個良好的基礎。為此,我們結合課堂講授的內容和進度,安排了 12 次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面:

1.加深對課堂講授內容的理解 ?

課堂上要講授許多關于 c 語言的語法規則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用 c 語言這個工具解決實際問題,又必須掌握它。通過多次上機練習,對于語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握 c 語言的語法規定。對于一些內容自己認為在課堂上聽懂了,但

上機實踐中會發現原來理解的偏差,這是由于大部分學生是初次接觸程序設計,缺乏程序設計的實踐所致。

學習c 語言不能停留在學習它的語法規則,而是利用學到的知識編寫 c 語言程序,解決實際問題。即把 c 語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握 c 語言、自己編寫的程序是否能夠正確地解題。

通過上機實驗來驗證自己編制的程序是否正確,恐怕是大多數同學在完成老師作業時的心態。但是在程序設計領域里這是一定要克服的傳統的、錯誤的想法。因為在這種思想支配下,可能你會想辦法去”掩蓋”程序中的錯誤,而不是盡可能多地發現程序中存在的問題。自己編好程序上機調試運行時,可能有很多你想不到的情況發生,通過解決這些問題,可以逐步提高自己對 c 語言的理解和程序開發能力。

2.熟悉程序開發環境、學習計算機系統的操作方法 ?

一個 c 語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環境下才能進行。所謂”環境”就是所用的計算機系統硬件、軟件條件,只有學會使用這些環境,才能進行程序開發工作。通過上機實驗,熟練地掌握 c 語言開發環境,為以后真正編寫計算機程序解決實際問題打下基礎。同時,在今后遇到其它開發環境時就會觸類旁

通,很快掌握新系統的使用。

3.學習上機調試程序 ?

完成程序的編寫,決不意味著萬事大吉。你認為萬無一失的程序,實際上機運行時可能不斷出現麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結果顯然是錯誤的。開發環境所提供的編譯系統無法發現這種程序邏輯錯誤,只能靠自己的上機經驗分析判斷錯誤所在。程序的調試是一個技巧性很強的工作,對于初學者來說,盡快掌握程序調試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調試高手一眼就看出錯誤所在。

通過這次為數不多的幾天計算機實踐學習,我們了解了一些關于 c 語言的知識,理解鞏固了我們 c 語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時它讓我知道,只要你努力,任何東西都不會太難。

#c 語言實踐報告心得 2# ?

在初學 c 語言的一個學期后,我們進行了 c 語言實訓階段,嘗試自己編寫一個比較復雜的程序系統。在為期兩周的時間中,我們同組的同學共同的感受是:c 語言實訓和平時上課所接觸的程序是有很大不同的,所經受的考驗和克服的困難是平時所無法比擬的。好在同

組的搭檔們精誠合作,分工明確,有問題共同解決,攻克了 c 語言實訓的復雜程序。在這里,我作為其中的參與者,自然感觸良多。

剛開始接觸到 c 的時候,我已經學過一些有關 VB 的內容,這個在算法和思維上稍微有點幫助。回想本學期的學習,首先,最基本的,是 c 的數據格式,讓我們知道整數,浮點數以及字符常量在 c 中的運用。然后,在學會了數據轉化,以及熟練的可以對各種數據處理之后,我開始進行有關數據結構,像數組,結構體等的學習,因為有的東西從現有的知識來看都是非常簡單的,還沒有聯系到指針等等一些復雜的概念。可是,僅僅學會這些是遠遠不夠的,c 語言中,還有很多更加經典、重要、實用的知識。

說說函數。雖說很多程序語言都有函數這一內容,但我覺得 c語言的函數是最有魅力的了。學習函數的方法是比較簡單的,只有兩個字牢記,即:牢記函數的功能,牢記函數的用途以及如何輸入輸出。函數從本質上講是一段通用程序,用它可以幫助我們節約很多編程的時間,學習c 語言的高人都說,一個聰明的編程者在編寫程序前往往總是先找自己所編寫的程序中有多少是可以用函數來代替的。比如,大家可以作一個比較字符串的實驗,用 c 語言中的 strcmp 函數只要一句話,而自己編寫的話,30 句都很難實現,可想而知函數的實用和快捷。在我們 c 語言實訓的代碼中,函數更是得到了充分的應用,可以說,實訓題目的復雜代碼,就是用無數個函數的調用和嵌套積累出來的。

要注意的是,有的同學剛剛開始的時候,都是被一些大的程序激勵的,所以當開始的時候看到繁瑣的數據轉化和簡單的算法,都覺得很無聊,都想自己做幾個自己滿意的程序來看看,雖然這種想法很好,但是,我們說,沒有基礎,純粹是搬照一些現成設計方法,是不足取的。要知道,程序設計講究的是個人的思維的,假如剛開始就被一些現成的思想_住,以后就會覺得很無趣。

我們知道,指針其實是 c 語言的靈魂,許多的數據結構在我們學到這里之前都可以說是精通了。所以我們的任務就是,讓數據結構在指針中運行。當然,剛剛開始接觸到這些新的東西,是一件非常痛苦的事情,所以我們一定要用非常形象的思維去看待指針,不能太固化。所以,新的東西,比如結構體在指針中的表現方法,數組及_數組在結構體中的運用,都一點一點的加了進來,同時豐滿了我們對原來 c 的數據機構,數據表示的理解。當我們完成了這三步的學習,我們已經可以自豪的說,我們的基礎都扎實了,可以進一步的學習有關算法,設計概念等等深層次的東西了。

但是,指針,結構體,這些太抽象的東西,在學習c 語言的時候我們就有點似懂非懂,可是在眼下的 c 語言實訓中,像這么重要的c 語言知識,一定要達到能熟練掌握,實際運用的程度。在實訓的大程序中,結構體在指針中的表現方法,數組及在結構體中的運用等具體的技術環節,都得到了體現,不會指針,我們的工作是沒法展開的。所以,在實訓期間,大家在鞏固基本知識的基礎上,逐塊攻克實訓課題,克服了困難,自信心得到了提高。

最后,談談我們組的程序軟件。商店商品管理系統,是一個比較利于應用,解決實際問題,方便實際管理的程序。設計代碼比較復雜,結構比較嚴謹。在程序編寫的 1 周左右的時間里,組員們遇到了上述的困難,包括程序設計構思,甚至是指針等某些知識點的欠缺,導致的工作中出現的困難。但是,當大家一起團結協作,解決了這些困難之后,發現自己也可以編寫復雜的、應用性的程序了,更發現自己對 c 語言這門學科的興趣也提高了。

當然,我們編寫的商店商品管理系統,還存在很多疏漏和不合理之處。比如,程序復雜冗長,如果時間充裕,我們將在不改變程序運行結果的基礎上,簡化程序,使每一句更加精辟,總體上更加簡化。另外,在程序的外觀上,我們由于時間問題,沒有做更多的修飾,運行起來顯得比較死板、枯燥乏味。如果增添一些色彩和其他效果,我們的程序也許會更加完美。

#c 語言實踐報告心得 3#

?

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

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

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

比如自己寫的寫的小程序出了問題,不會解決了就叫老師幫忙,雖然說一定意義上增加了師生之間的感情,但是會養成一種依賴的心理,碰到問題了第一個想到的是求助而不是自己獨立解決,所以以后要多多鍛煉自己的信心和增加自己的能力,爭取做到老師不在身邊的時候也可以完成一些簡單的程序編寫與錯誤排除。

?

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

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

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

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

#c 語言實踐報告心得 4#

?

經過 4 個禮拜的實訓,讓我受益匪淺,給我收獲最大的是我覺得很多工作需要我去摸索和探討,要不怕吃苦,勇于激流勇進,有的工作雖然單挑又重復,但這是磨練意志最有效的方法,我告誡自己要認真完成,對每項實訓任務都要他看成是對自己的一次考核,做到每一件事的過程中遇到困難,一定要爭取不拋棄,不放棄,堅持“戰斗”,只要希望還在,勝利一定屬于我們。

我們這次實訓的內容是“學生成績管理系統”,首先要感謝陪伴我們 4 個禮拜對我們精心指導的老師,幫助我們在實訓過程中解決了很多我們解決不了的問題,讓我們能繼續的完成接下來的內容和讓我們的實訓成果有了圓滿的成功。在學習的過程中并不是一帆風順的,在這之中,因為要操作的東西很多,有時錯一步,后面的結果就無法顯示,而自己的計算機又太差,根本檢查不出來是哪里出了錯!這時候,老師都會耐心的過來幫助我,我很感謝老師也很感謝學校能安排這么優秀的老師來教我們!還有就是團隊的力量,對于一個大的軟件系統,不是一個人就能完成的,他需要小組成員之間的團結協作,盡管一開始我們小組之間團員的意見不是很統一,但大家各抒己見,吧自己的想法提出來,然后集思廣益,把大家認為最好的意見說出來,最后終于完成了“學生成績管理系統”的實訓。

在這次實訓過程中,老師還在期間讓我們小組各自展示我們的實訓成果,由其他小組提出意見,取長補短,對于別的小組做的比我們好的地方,我們要虛心學習,不好的地方我們會一起想解決問題的辦法。這對于我們未來走向社會具有一定的鍛煉性質。

作為學生,我們更多的是課本的知識的理解,理論的優勢是我們的特色,但是怎樣將理論結合實際卻是擺在我們面前的難題。有些知識雖然我們學過,但是要把它運用到系統中的過程中還出現了很多問題,比如對于控件 ListView 和 DataGridView 的使用,在基于多表查詢的時候,使用 DataGridView 這個控件就難以實現在數據庫里的多張表的更新,后來我們還是選擇了 ListView 這個控件。從這里讓我知道了,只是的學習是沒有止境的,我們只有在不斷的學習中了解更多,并且能夠把所學的知識舉一反三,這樣我們才能更好的吧實訓項目做得更好。我覺得學習了這個,對我參加工作后制表、創建查詢、數據分析和材料演示都有很大的作用,這樣,我們能更清楚的了解信息并進行分析。

當然實習中還有著更多的感觸,包括學習,生活各個方面。就學習而言,專業實訓它更偏重于應用,更加細致,要求也更加嚴格。在實際中實現自己的理想,必需不斷的增加自己的能力,做事情更加專注。就生活而言,專業學習展示給我們看各個不同的小組的實訓結果,讓我們知道了要善于學習他人的優點。

?

上面的認識都是正面的,也是自己受益的主要部分,但就個人而言,本次的專業實訓更多的是讓自己認識到自己的不足。通過此次的實訓,更多的是對大二一學期的回顧和反省。總的來說,我們這一次實習是比較成功的,大家都能學習到了很多在校園、在課堂上、課本上學不到的東西,也了解很多和懂得了做人的道理,特別是體會到生活中的艱辛和找工作的不容易。

做軟件這個東西不能著急,越是著急對我們的學習就越是不利。把心態擺平穩,從簡單做起,不能急于求成。在學習過程中會有很多時候心情很郁悶,是在學不下去了,不過堅持一下就好了,重在堅持嘛,沒有什么不可能過去的。還有就是平時要注意多積累這樣在以后用知識的時候就不愁沒有資源了。

四個星期的實訓課很快結束了,我發現我對計算機有了新的認識,以前只知道玩游戲、娛樂和簡單的應用。通過這次的實訓,我了解到,要真真正正的掌握計算機程序還不是一件簡單容易的事兒,但真正掌握后,它帶個我們的將是無窮的便捷與科技,我喜歡高端便捷的生活。我希望我能做計算機這個萬能機器人的主人而不是奴隸,我會努力加油的!感謝學校,感謝老師給我的幫助,讓我的思想、技能又上了一個臺階!感謝!加油!?

#c 語言實踐報告心得 5#

?

這個星期,我們迎來了 c 語言實訓——一次至為重要的實訓。在這個星期里,同學們都很認真的做著那 20 多道實訓題目,遇到不懂的互相請教,或請問老師。非常感謝老師對我們的幫助,這次實訓使我受益匪淺,收獲了很多。通過 c 語言實訓,讓我加深了對 c 語言的了解,而不只是單單的在課本中學到的那些理論,平時乏味的課程,通過自己動手親自編寫,變的生動有趣,而在自己動手的過程中,出現的問題很多,比理論要難的多,當一個程序寫完以后,經常會有很多錯誤而沒法解決。不過,通過幾天的實訓,逐漸積攢了一些經驗,有些錯誤可以很快就看出來。

這次實訓有很大的收獲,讓我對 c 語言有了更深的認識,平時在課堂上學到的東西可以自己動手編寫,將其轉化成一些實用的技能。如果是一個程序寫完一處錯誤也沒有,會有種成就感,于是興趣就來了,興趣來了,自然學的東西也就多了,能把理論變成實際的技能,讓我對 c 語言有了濃厚的興趣和更深層的認識。c 語言是一個有序的學習,學了最基本的替換,然后擴展到循環,嵌套,條理很清楚,不是一個零散的知識,實際上所有的課程都如此,不過通過實訓我也知道了自己的不足,存在的很多問題。比如自己寫的寫的小程序出了問題,不會解決了就叫老師幫忙,雖然說一定意義上增加了師生之間的感情,但是會養成一種依賴的心理,碰到問題了第一個想到的是求

助而不是自己獨立解決,所以以后要多多鍛煉自己的信心和增加自己的能力,爭取做到老師不在身邊的時候也可以完成一些簡單的程序編寫與錯誤排除。還有自己的基礎知識不扎實,遇到的問題,沒有很好的邏輯思維,親自編寫一個陌生的程序的時候會有種無法下手的感覺,找不到突破口。通過實訓,逐漸理清了順序,對于簡單的程序和一些相對比較繁瑣的嵌套,循環,不在是看著一頭霧水。其實只要理清了思路,把基礎知識掌握了,然后有條不紊的分析,一步一步理解,c 語言還是很有意思的課程。自己親自動手編寫程序讓我增加了對 c語言程序開發環境的了解,在上課的時候老師就講,學習c 語言最重要的是學習c 語言的邏輯思維,不管以后從事什么行業,學習c 語言都對自己的職業很有幫助,如果是從事編程工程工作的話。當初在初步接觸 c 語言的時候,看著一堆“奇形怪狀”的符號,覺得甚是無聊,通過這次實訓,擺脫了那種似懂非懂的狀態!感謝學校安排這次實訓和老師的耐心講解,讓我學到了很多知識,在實訓過程中,同學之間的相互探討,老師的循循善誘,最終讓我們達到了舉一反三的效果,在學知識的同時,也增加了同學老師之間的感情。希望以后還會有更多類似的實訓課程,在有限的大學時間內學到更多的實用技能,為以后的工作打下一個良好的基礎。

這次實訓似乎是對我巨大的考驗,程序在不慌不忙的進行著,按照我自身的進度,提前完成是沒有問題的,但是很多客觀條件讓我不得不在最后的時間里才上交的作業。每當我把程序寫完以后,卻由于每一臺電腦的識別格式不一樣而導致我所寫的文件一次次的被損壞,盡管這樣,我仍然沒有放棄,最后還趕在截止時間到來之前上交了我的作業!?

這一次編寫大作業的程序又讓我感受到學程序可以鍛煉縝密的思維了。因為平時練習的都是小程序,所以句段比較少,一些錯誤都很容易被檢查出來,但是這次實訓卻是上百段的語句,難以檢查,似乎也沒有經驗去怎么檢查,那一剎那感覺到很急,但又不知如何是好,可是又不輕易的向老師詢問,因為好像蠻簡單,相信自己能夠檢查出來,所以我一般都是獨立思考的完成的,只有少部分是在老師和與同學討論下完成的。在編寫程序中,真的是細節決定成敗,因為不管程序的語句是多是少,但是只要有一條語句或語法不正確,就不能使程序得到所需要的結果。沒能夠使自己編寫出來的程序等到想要的結果,意味著這是一個不理想的程序,對于本次編寫來說則是失敗的。

最后,非常感謝學校給我們這次實訓的機會。極高的鍛煉了我們的邏輯思維能力。人非生而知之,雖然我們現在的知識結構還很差,但是我們知道要學的知識,一靠努力學習,二靠潛心實踐。沒有實踐,學習就是無源之水,無本之木。在剩下的時間里,我們會更加努力的學習。

c 語言實踐報告心得

第四篇:C語言課程設計實踐報告

北京理工大學珠海學院 C語言程序設計實踐報告

2014—2015學年第1學期

學 院: 計算機學院 專業班級: 軟件工程5班 學 號: ***6 學生姓名: 陳洪陽 指導教師: 戴俊雅

成 績:

時 間:

2015年 1月5日

實踐1.猜數游戲 題目概述:

編程先由計算機“想”一個1~100 之間的數請人猜,如果人猜對了,在屏幕上輸出人猜了多少次才猜對此數,以此來反映猜數者“猜”的水平,則結束游戲;否則計算機給出提示,告訴人所猜的數是太大還是太小,最多可以猜10 次,如果猜了10 次仍未猜中的話,則停止本次猜數,然后繼續猜下一個數。每次運行程序可以反復猜多個數,直到操作者想停止時才結束。

程序設計概要與分析:

在源程序的開頭中包含stdlib和time庫函數,這樣我們就可以調用srand()和rand()函數,其中調用srand()提供一個種子,它是一個unsigned int類型,取值范圍是0~65535,然后調用rand(),根據提供給srand()的種子值返回一個隨機數,我們用rand()%100就把隨機決定的數值范圍確定在1~100之間,然后定義一個num,記錄這個隨機產生的隨機數,定義input,來儲存用戶輸入的猜數值,用times來記錄猜的次數,用do while循環來執行用戶猜的次數有10次,用if else條件語句來判斷用戶是否猜中,或猜得太大、太小,用一個while循環來做總嵌套,設置n的值一開始不為零,while循環的條件是當n的值不等于0,最后用戶就可以修改n的值來決定是否退出。

程序代碼:

#include #include #include

int main(){

int n=1;while(n!=0){

srand((unsigned)time(NULL));int num,input;int times=0;num=(rand()%100)+1;printf(“在1~100間猜一個數n”);scanf(“%d”,&input);do{

if(input==num){

} else if(input>num){

} else if(input

}

}

} printf(“你猜的數太小了,請再猜一個n”);scanf(“%d”,&input);times++;}while(times<9);if(times>=9)printf(“你已經猜了10次都猜不中,你輸了n”);printf(“繼續下一輪新的猜數請按1,退出請按0n”);scanf(“%d”,&n);return 0;運行結果示例:

選擇繼續下一輪新的猜數,猜了10次都沒猜中

心得體會:

要懂得如何生成一個隨機數,并且要確定它的范圍在1~100之間,同時我們還要用do while循環體把猜數的次數控制在10次,每當我們輸入猜想的數時就要做出判斷,看看是否猜中,或者猜得太大或太小,輸出提示信息。也懂得了通過修改while判斷循環里面的條件,使得循環體里面的程序受我們修改的條件控制,可以繼續循環執行或者不再繼續執行。

實踐2.成績排名次 題目概述:

某班期末考試科目為數學(MT)、英語(EN)和物理(PH),有最多不超過30 人參加考 試,學號可以用輸入的序號代替。考試后要求:(1)計算每個學生的總分和平均分;

(2)按總分成績由高到低排出成績的名次;

(3)打印出名次表,表格內包括學生編號、各科分數、總分和平均分;(4)任意輸入一個學號,能夠查找出該學生在班級中的排名及其考試分數。

程序設計與概要:

定義存儲學生信息的結構體,包括學生編號,姓名,各科成績,總分,平均分還有名次。該結構體命名為student,然后定義結構體數組student s[],首先輸入準備錄入學生信息的人數,用amount來記錄人數,用一個for循環,從0~amount-1,依次輸入每個學生的各種信息,如學號,姓名,數學、英語和物理成績。用grade[]數組來存這三科的成績,如grade[0]存儲數學成績,grade[1]存儲英語成績。輸入之后,再用一個for循環把每個同學的總分求出來,總分再除去3求出該名同學的平均分。按總分成績由高到低排出名次,用兩個for循環嵌套,第一個循環從0~amount,表示從第一個同學開始拿出來比較,第二個循環從1~amount,表示除了之前取出的同學以外的每一個同學,如果前一位同學的總分小于后一個同學的話,就交換兩人的信息,第二個循環比較之后,便會把總分最高的同學的信息儲存在第一個,然后我們設置排名rank的值為1,rank++,進行篩選第二名的,之后對應地把rank的值設給學生的總分排名

打印學生信息,輸出表格的基本框架后,用一個for循環,依次輸出每個學生的信息,最后還有根據學號查詢學生信息,用戶輸入要查詢的學生學號,在for循環里面依次比較,如果找到學號與用戶輸入相同的,便輸出該名學生的信息。

程序代碼:

#include #include #include #define M 30 struct student { unsigned int num;char name[10];int grade[3];int sum;float ave;int rank;};student s[M];int amount;

void input(student s[]);void title();

void list(student s[]);int main(){ input(s);int i=0;for(i=0;i

//要求1 計算總分平均分

s[i].sum=s[i].grade[0]+s[i].grade[1]+s[i].grade[2];

s[i].ave=(float)s[i].sum/3;} //要求2 按總成績排序

int rank=1;student t;for(i=0;i

for(int j=i+1;j

{

if(s[i].sum

{

{t=s[i];

s[i]=s[j];

s[j]=t;

}

}

}

s[i].rank=rank;

rank++;} //要求3 打印名次表

title();list(s);//要求4 查詢

int number;printf(“請輸入你要查詢學生的學號:n”);scanf(“%d”,&number);for(int i=0;i

if(number==s[i].num)

{

printf(“學號t姓名t數學t英語t物理t總分t平均分t排名n”);

printf(“%ut%st%dt%dt%dt%dt%5.2ft%dn”,s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

} } system(“pause”);return 0;}

void input(student s[]){ printf(“輸入班上參加期末考試的人數(不大于30人)”);scanf(“%d”,&amount);printf(“請依次輸入他們的學號,姓名,數學成績,英語成績和物理成績n”);for(int i=0;i

printf(“第%d位同學的學號,姓名,數學成績,英語成績和物理成績n”,i+1);

scanf(“%u%s%d%d%d”,&s[i].num,s[i].name,&s[i].grade[0],&s[i].grade[1],&s[i].grade[2]);} }

void title(){

printf(“ 學生成績表n”);

printf(“-----------------------------n”);

printf(“學號t姓名t數學t英語t物理t總分t平均分t排名n”);

printf(“-----------------------------n”);}

void list(student s[]){ //n表示人數

int i;//rank=1;for(i=0;i

printf(“%ut%st%dt%dt%dt%dt%5.2ft%dn”,s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

printf(“-----------------------------n”);} }

運行結果示例:

確定錄入人數之后,依次輸入每個學生的信息

打印出名次表:

輸入學生的學號,查詢學生信息:

心得體會:

懂得了用結構體將不同的數據類型結合在一起,然后定義結構體數組,使得每個數組中的成員都具有不同的數據類型變量。而且同屬于一個數據類型,也可以定義數組來表示相同的類型但是有多個不同值,比如成績這個變量。也懂得了用for循環語句求總分,用for循環語句將數組從頭到尾輸出。

實踐3.單科成績統計 題目概述:

學生成績統計(一維數組)從鍵盤輸入一個班(全班最多不超過 30人)學生某門課的成績,當輸入成績為負值時,輸入結束,分別實

現下列功能:(1)統計不及格人數并打印不及格學生名單;

(2)統計成績在全班平均分及平均分之上的學生人數,并打印這些學生的名單;(3)以直方圖方式統計各分數段的學生人數及所占的百分比。形式如下: 分段 人數 圖形 <60 3(10%)*** 60‐69 8(…)******** 70‐79 7(…)******* 80‐89 8(…)******** >=90 4(…)****

程序設計與概要:

定義一個結構體stu,里面有學生的姓名和成績,然后定義一個s[]數組存放每個學生的姓名和成績,輸入函數中用一個for循環來依次輸入每個學生的姓名,還有輸入成績,用if條件語句判斷輸入的成績是否為負數,如果是就退出整個輸入函數,同時,我們還用if條件語句來判斷輸入的成績處于哪個分數階段,定義n1、n2、等整形變量來存儲各個分數段的總人數,變量num來存放輸入的學生共有多少人,變量sum是將每個學生的成績都加在一起,最后用sum/num就等于全班該門成績的平均分,我們用一個for循環語句,判斷每個學生的成績是否小于60分,如果是就輸出他的姓名,這樣就可以打印出不及格學生的名單了。同樣的,用一個for循環語句,判斷每個學生的成績是否大于等于平均分,如果是就變量count+1,用來記錄成績大于或等于平均分的學生人數,同時可將成績大于平均分的同學姓名輸出,這樣就打印出了成績在大于等于平均分的學生名單了。最后是輸出分數段,用前面記錄各個分數段人數的n值除以總人數再乘以100%就得出比例,每一個分數段都用一句for循環語句,根據n值的大小輸入對應數目的*。

程序代碼:

#include #include #define M 30 struct stu { char name[20];int score;};stu s[M];int i=0,num=0;int n1=0,n2=0,n3=0,n4=0,n5=0;float sum=0,ave=0;int count=0;void input(stu s[]);void getnotpass(stu s[]);

void getavg(stu s[]);void percent(stu s[]);int main(){ /*stu s[M];int i=0,num=0;int n1=0,n2=0,n3=0,n4=0,n5=0;float sum=0,ave=0;*/ input(s);getnotpass(s);getavg(s);percent(s);return 0;} void input(stu s[]){ for(i=0;i

printf(“請輸入第%d個學生的姓名和成績n”,i+1);

scanf(“%s%d”,&s[i].name,&s[i].score);

if(s[i].score<0)

break;

if(s[i].score>=0&&s[i].score<60)

n1++;

if(s[i].score>=60&&s[i].score<70)

n2++;

if(s[i].score>=70&&s[i].score<80)

n3++;

if(s[i].score>=80&&s[i].score<90)

n4++;

if(s[i].score>90)

n5++;

num++;

sum+=s[i].score;} printf(“學生信息錄入完畢nnn”);} void getnotpass(stu s[]){ printf(“不及格人數為:%dn”,n1);printf(“不及格人員名單如下:n”);for(i=0;i

if(s[i].score>=0&&s[i].score<60)

printf(“%st”,s[i].name);} printf(“n”);ave=sum/num;} void getavg(stu s[]){ for(i=0;i

if(s[i].score>=ave)count++;} printf(“成績在全班平均分及平均分之上的學生人數為:%dn”,count);printf(“成績在全班平均分及平均分之上的學生名單如下:n”);for(i=0;i

if(s[i].score>=ave)

printf(“%st”,s[i].name);} printf(“nnn”);} void percent(stu s[]){ printf(“各分數段的學生人數及所占的百分比如下:n”);printf(“分段t 人數t 圖形n”);printf(“<60t%d(%.0f%%)t ”,n1,(float)n1/(float)num*100);for(i=0;i=90t%d(%.0f%%)t ”,n5,(float)n5/(float)num*100);for(i=0;i

運行結果示例:

依次輸入每個學生的姓名和成績,當輸入成績為負時,便退出整個輸入:

統計不及格人數還有打印不及格學生名單:

統計成績在全班平均分及平均分之上的學生人數,并打印這些學生的名單:

以直方圖方式統計各分數段的學生人數及所占的百分比:

心得體會:

懂得了在for循環體內用if條件判斷語句判斷輸入的值為負值時退出循環體。用變量計數器把符合要求的計數起來,最后可以得出符合要求的值共有多少個,也懂得了用for循環從所有值里進行篩選符合條件的值出來,更懂得了在求百分比時候要強制類型轉換,把int類型的計算結果給轉換為float單精度類型。

實踐4.函數與文件訓練 題目概述:

將實踐練習2 中的第2題利用函數的思想進行修改,并將學生的成績等信息輸出到文件中。要求函數參數中

包含結構體數組或指針。輸出到ASCII 文件的信息包括每個學生的學號、三門成績和名次,每人一行。

程序設計與概要:由于我的實踐2中就已經用了函數,所以我只需要把學生的成績等信息輸出到文件中。用FILE *fp,fp就代表我們要對其操作的文件,用open函數,根據文件的所在位置還有文件名,打開文件,并對應要求進行只寫的操作,如源代碼中fp=fopen(“f: st udent.txt”,“w”),w代表寫入操作,char一個c[]數組,存放對應項的名稱,用fputs函數把數組里面的字符串寫入到文件里面去,用一個for循環,循環調用fprintf函數,把每個學生的學號,各科成績和排名都寫入到文件當中去,最后關閉文件即可。

程序代碼:

#include #include #include #define M 30 struct student { unsigned int num;char name[10];int grade[3];int sum;float ave;int rank;};student s[M];int amount;

void input(student s[]);void title();void list(student s[]);int save();//輸出到文件中 int main(){ input(s);int i=0;for(i=0;i

//要求1 計算總分平均分

s[i].sum=s[i].grade[0]+s[i].grade[1]+s[i].grade[2];

s[i].ave=(float)s[i].sum/3;}

//要求2 按總成績排序

int rank=1;student t;for(i=0;i

for(int j=i+1;j

{

if(s[i].sum

{

{t=s[i];

s[i]=s[j];

s[j]=t;

}

}

}

s[i].rank=rank;

rank++;} save();//要求3 打印名次表

title();list(s);//要求4 查詢

int number;printf(“請輸入你要查詢學生的學號:n”);scanf(“%d”,&number);for(int i=0;i

if(number==s[i].num)

{

printf(“學號t姓名t數學t英語tC語言t總分t平均分t排名n”);

printf(“%ut%st%dt%dt%dt%dt%5.2ft%dn”,s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

} } system(“pause”);return 0;} void input(student s[]){ printf(“輸入班上參加期末考試的人數(不大于30人)”);scanf(“%d”,&amount);printf(“請依次輸入他們的學號,姓名,數學成績,英語成績和物理成績n”);

for(int i=0;i

printf(“第%d位同學的學號,姓名,數學成績,英語成績和物理成績n”,i+1);

scanf(“%u%s%d%d%d”,&s[i].num,s[i].name,&s[i].grade[0],&s[i].grade[1],&s[i].grade[2]);} } int save(){

FILE *fp;fp=fopen(“f:student.txt”,“w”);if(!fp){

printf(“can not open file!n”);

exit(1);} char c[]=“學號t 數學t 物理t 英語t 排名n”;fputs(c,fp);for(int i=0;i

fprintf(fp,“%ut %dt %dt %dt %dn”,s[i].num,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].rank);} fclose(fp);} void title(){

printf(“ 學生成績表n”);

printf(“-----------------------------n”);

printf(“學號t姓名t數學t英語t物理t總分t平均分t排名n”);

printf(“-----------------------------n”);}

void list(student s[]){ int i;for(i=0;i

printf(“%ut%st%dt%dt%dt%dt%5.2ft%dn”,s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

printf(“-----------------------------n”);} }

運行結果示例:

首先輸入準備錄入的學生人數,然后依次輸入每個學生的信息:

打印出按總成績排序后的學生信息表,以及根據學號查詢:

在f盤中找到文件并打開:

心得體會:

懂得了用如何運用文件,把向程序中輸入的數據全部輸出到文件中去。用FILE *fp,fp就代表我們要對其操作的文件,用open函數,根據文件的所在位置還有文件名,打開文件,并對應要求進行只寫的操作,如源代碼中fp=fopen(“f: st udent.txt”,“w”),w代表寫入操作,char一個c[]數組,存放對應項的名稱,用fputs函數把數組里面的字符串寫入到文件里面去,用一個for循環,循環調用fprintf函數,把每個學生的學號,各科成績和排名都寫入到文件當中去,最后關閉文件即可。

實踐5.實踐4(1)(2)題目概述:

每位學生信息包括:學號、姓名、性別、學院、10 門成績。共有不超過100 位同學的信息存放在ASCII 文件StudentInfo.txt 中;不超過10 個學院的信息存放在CodeInfo.txt 中,性別代碼存放在SexInfo.txt 中,均為代碼和其對應的名稱。要求:

1.定義至少包含以上學生信息和學院代碼的結構體類型和指針(或數組)變量。2.函數實現從文件中輸入信息到定義的數據中。

程序設計與概要:

定義一個結構體,名為student,里面的內容有學生的學號,姓名,性別,還有那個學院,以及10門成績,構造結構體數組,student stu[100],用于存儲100名學生的信息。定義讀取文件中內容的函數,FILE *fp代表文件,調用fopen函數,通過文件所在位置以及文件名打開特定的文件,r表示只對文件進行讀取,接著調用fscanf函數,把第一個位置的數據賦給學生的學號,用while循環體,循環的條件是調用feof判斷文件是否讀取結束,如果沒有則返回0,用!feof()來讓沒讀取結束的文件繼續讀取,接著再把同一行后面的數據分別賦給學生的姓名,性別代碼和所屬學院代碼,再用一個for循環,把同一行后面10個數據分別賦給學生的10門成績。一行讀取完畢后,意味著已經讀取完一個學生的所有個人信息,定義一個I值來存儲已經讀取學生的人數,每讀完一人就i+1,再讀取下一行的第一個數據賦給下一個學生作為他的學號。通過while循環把文件中的全部信息讀取出來賦給所有學生,函數最后返回的是讀取學生的人數i。定義結構體名為sxy,用于存儲性別代碼和代碼對應的性別,可以在后面輸出的時候,把對應的性別代碼轉變為用中文表示性別。定義一個結構體名為scode,用于存儲學院代碼和代碼對應的學院名稱,可以在最后輸出的時候,把學院代碼對應的學院名稱輸出。再定義一個輸出函數,通過for循環,從0~i-1,把i個學生的全部信息輸出,所以我們在主函數里面先調用讀取文件中內容的函數之后再調用輸出函數即可。

程序代碼:

#include #include #include int readData(char *filename,struct student *stu);int readDataxy(char *filename,struct sxy *s1);int readDataco(char *filename,struct scode *s2);void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k);struct student { int id;char name[10];int sexno;char sex[4];int deptno;char dept[20];int scores[10];float ave;

};struct sxy { int id;char sex[4];};struct scode { int id;char dept[20];};int main(){ struct student stu[100];struct sxy s1[2];struct scode s2[10];int n,m,k;n=readData(“f:StudentInfo.txt”,stu);m=readDataxy(“f:SexInfo.txt”,s1);k=readDataco(“f:CodeInfo.txt”,s2);if(n==-1||n==0)

return 0;if(m==-1||m==0)

return 0;if(k==-1||k==0)

return 0;printStudent(stu,s1,s2,n,m,k);

system(“pause”);return 0;} int readData(char *filename,struct student *stu){ FILE *fp;int i=0,j;fp=fopen(filename,“r”);if(!fp){

printf(“error1”);

return-1;} fscanf(fp,“%d”,&stu[i].id);while(!feof(fp))//feof返回0 表示文件還沒結束 返回1表示結束

{

fscanf(fp,“%s%d%d”,stu[i].name,&stu[i].sexno,&stu[i].deptno);

for(j=0;j<10;++j)

fscanf(fp,“%d”,&stu[i].scores[j]);

++i;

fscanf(fp,“%d”,&stu[i].id);} return i;} int readDataxy(char *filename,struct sxy *s1){ FILE *fp;int i=0;fp=fopen(filename,“r”);if(!fp){

printf(“error2”);

return-1;} fscanf(fp,“%d”,&s1[i].id);while(!feof(fp)){

fscanf(fp,“%s”,s1[i].sex);

++i;

fscanf(fp,“%d”,&s1[i].id);} return i;} int readDataco(char *filename,struct scode *s2){ FILE *fp;int i=0;fp=fopen(filename,“r”);if(!fp){

printf(“error3”);

return-1;} fscanf(fp,“%d”,&s2[i].id);while(!feof(fp)){

fscanf(fp,“%s”,s2[i].dept);

++i;

fscanf(fp,“%d”,&s2[i].id);}

return i;} void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k){ int i,j;printf(“ 學生信息統計n”);for(i=0;i

for(j=0;j

{

if(stu[i].sexno==s1[j].id)

{

strcpy(stu[i].sex,s1[j].sex);

}

} } for(i=0;i

for(j=0;j

{

if(stu[i].deptno==s2[j].id)

{

strcpy(stu[i].dept,s2[j].dept);

}

} } for(i=0;i

printf(“%d%8s%4s%12s”,stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(j=0;j<10;++j)

printf(“%4d”,stu[i].scores[j]);

printf(“n”);} }

運行結果示例:

心得體會:

懂得了從文件中輸入信息到定義的數據中。就是要先構造與文件信息中相對應的結構體數組,然后用打開文件,需要知道文件的具體位置還有文件名,”r”就是表示只采取讀取操作,用while循環,循環條件的判斷標準就是用feof來判斷文件是否讀取到文件尾部,用fscanf把每個數據賦給對應的變量。其中最難解決的就是一開始學生文件里面的信息,學生性別用代號表示,學生所在學院也用代碼顯示,這樣一來我們把文件中的信息賦給定義好的結構體

數組之后,用for循環把結構體數組一個一個輸出后,顯示的是性別代碼和學院代碼,我們要把代碼都改為相對應的值,所以我們同樣定義性別的結構體數組,學院的結構體數據,之后用for循環把性別數組里面的代號和學生數組中的性別代碼想比較,用strcpy函數,相同的就把代碼對應的性別賦給學生數組里面定義好的性別字符數組。同理的,學院代碼相對同的就把代碼對應的學院名稱賦給學生數組里面定義好的學院字符數組。

實踐6.實踐4(3)(4)(5)題目概述:

每位學生信息包括:學號、姓名、性別、學院、10 門成績。共有不超過100 位同學的信息存放在ASCII 文件StudentInfo.txt 中;不超過10 個學院的信息存放在CodeInfo.txt 中,性別代碼存放在SexInfo.txt 中,均為代碼和其對應的名稱。要求:

3.函數實現排序(1):學生平均成績的降序排序,并輸出所有信息到顯示屏。4.函數實現排序(2):學生姓名的升序排序,并輸出所有信息到顯示器。

5.函數實現查詢(1):根據學號查詢學生信息,并輸出該生信息,并輸出所有信息到顯示器。

程序設計與概要:

同上個實踐一樣構造結構體名為student,用來存儲學生的信息,如學生姓名,性別代號,學號,學院代號和成績等。構造結構體名為sxy用來存儲性別代號和性別名稱,構造結構體名為scode用來存儲學院代號和學院名稱。用三個不同的函數來實現讀取三個不同文件中的內容,把文件里面的內容放到以上構造的三個結構體里面去,定義輸出函數,用for循環把每個學生的性別代號同sxy結構體數組中的代號對應,把代號對應的性別名稱賦給每個學生的性別sex屬性值中,把每個學生的學院代號同scode結構體數組中的代號對應,把代號對應的學院名稱賦給每個學生的學院sdept屬性值中,最后再用一個for循環把從第一個學生到最后一個學生的全部信息輸出。實現要求3中的根據學生平均成績的降序排序,要求在從文件中讀取成績之后要計算出總分然后再除以10門成績得出平均分,然后定義一個函數,用雙重for循環,把第一個學生同其他學生比較平均分,如果比下一個同學的平均分低就交換兩個的位置,否則就繼續與下一個同學比較,直到第一層的for循環結束退出為止。再用for循環把排序后的學生信息從第一位到最后一位輸出即可。實現要求4中的根據學生姓名的升序排序,要求也是用雙重for循環,用函數strcmp比較兩個學生的姓名,把第一個學生的姓名同下一個同學比較,如何比下一個同學大,就交兩個學生的位置,否則就繼續與下一個同學比較,直到第二層的for循環結束,意味一個同學的位置確定,繼續第一層for循環的下一個同學,直到第一個層的for循環結束,就意味所有同學比較完畢,再用for循環語句把從第一個位置的同學到最后一個位置的同學,把他們的信息輸出。實現要求5的查詢要求,需要我們從鍵盤上輸入要查詢的學生的學號,然后用for循環從我們的學生結構體數組中遍歷一遍,如果有找到學號同輸入的學號相同的學生,便把他的所有信息輸出,否則則輸出不存在該名學生。

程序代碼:

#include #include #include int readData(char *filename,struct student *stu);int readDataxy(char *filename,struct sxy *s1);int readDataco(char *filename,struct scode *s2);void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k);void search(struct student *stu,int n);void sortbyname(struct student *stu,int n);void sortbyave(struct student *stu,int n);struct student

{ int id;char name[10];int sexno;char sex[4];int deptno;char dept[20];int scores[10];double ave;};struct sxy { int id;char sex[4];};struct scode { int id;char dept[20];};int main(){ struct student stu[100];struct sxy s1[2];struct scode s2[10];int n,m,k,b;while(1){

system(“cls”);

printf(“1.顯示學生信息n”);

printf(“2.姓名升序排序n”);

printf(“3.平均成績降序n”);

printf(“4.學號查詢學生信息n”);

printf(“0.退出n”);

printf(“n輸入需要查詢的序號:”);

scanf_s(“%d”,&b);

switch(b)

{

case 1:

n=readData(“f:StudentInfo.txt”,stu);

m=readDataxy(“f:SexInfo.txt”,s1);

k=readDataco(“f:CodeInfo.txt”,s2);

if(n==-1||n==0)

return 0;

if(m==-1||m==0)

return 0;

if(k==-1||k==0)

return 0;

printStudent(stu,s1,s2,n,m,k);

break;

case 2:

sortbyname(stu,n);

break;

case 3:

printf(“按平均成績降序排序如下:”);

sortbyave(stu,n);

printStudent(stu,s1,s2,n,m,k);

break;

case 4:

search(stu,n);

break;

case 0:

return 0;

} system(“pause”);} system(“pause”);return 0;} int readData(char *filename,struct student *stu){ FILE *fp;int i=0,j;double sum;fp=fopen(filename,“r”);if(!fp){

printf(“error”);

return-1;} fscanf(fp,“%d”,&stu[i].id);while(!feof(fp))//feof返回0 表示文件還沒結束 返回1表示結束

{

fscanf(fp,“%s%d%d”,stu[i].name,&stu[i].sexno,&stu[i].deptno);

for(j=0;j<10;++j)

{

fscanf(fp,“%d”,&stu[i].scores[j]);

sum=stu[i].scores[j];

}

stu[i].ave=sum/10;

++i;

fscanf(fp,“%d”,&stu[i].id);} return i;} int readDataxy(char *filename,struct sxy *s1){ FILE *fp;int i=0;fp=fopen(filename,“r”);if(!fp){

printf(“error2”);

return-1;} fscanf(fp,“%d”,&s1[i].id);while(!feof(fp)){

fscanf(fp,“%s”,s1[i].sex);

++i;

fscanf(fp,“%d”,&s1[i].id);} return i;} int readDataco(char *filename,struct scode *s2){ FILE *fp;int i=0;fp=fopen(filename,“r”);if(!fp){

printf(“error3”);

return-1;} fscanf(fp,“%d”,&s2[i].id);while(!feof(fp)){

fscanf(fp,“%s”,s2[i].dept);

++i;

fscanf(fp,“%d”,&s2[i].id);} return i;

} void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k){ int i,j;printf(“ 學生信息統計n”);for(i=0;i

for(j=0;j

{

if(stu[i].sexno==s1[j].id)

{

strcpy(stu[i].sex,s1[j].sex);

}

} } for(i=0;i

for(j=0;j

{

if(stu[i].deptno==s2[j].id)

{

strcpy(stu[i].dept,s2[j].dept);

}

} } for(i=0;i

printf(“%d%8s%4s%12s”,stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(j=0;j<10;++j)

printf(“%4d”,stu[i].scores[j]);

printf(“n”);} } void search(struct student *stu,int n){ int m,col=0;printf(“請輸入你要查詢學生的學號:n”);scanf(“%d”,&m);for(int i=0;i

if(stu[i].id==m)

{

col=1;

printf(“%d%8s%4s%12s”,stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(int j=0;j<10;++j)

{

printf(“%4d”,stu[i].scores[j]);

}

} } if(col==0)printf(“不存在該名學生信息n”);} void sortbyname(struct student *stu,int n){ student temp;for(int i=0;i

for(int j=0;j

{

if(strcmp(stu[i].name,stu[j].name)>0)

{

temp=stu[i];

stu[i]=stu[j];

stu[j]=temp;

}

} } printf(“按姓名的升序排序如下!n”);for(int i=0;i

printf(“%8d%8s%4s%12s”,stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(int j=0;j<10;++j)

{

printf(“%4d”,stu[i].scores[j]);

}

printf(“n”);} } void sortbyave(struct student *stu,int n){ int i,j,flag;student s;for(j=0;j

flag=0;

for(i=0;i

{

if(stu[i].ave

{

s=stu[i];

stu[i]=stu[i+1];

stu[i+1]=s;

flag=1;

}

}

if(flag==0)break;} }

運行結果示例: 開始的菜單界面:

輸入1便會顯示文件中所有學生的信息:

輸入2便會實現學生姓名升序排序,且把排序后的學生所有信息輸出:

輸入3便會實現學生平均成績降序排序,且把排序后的學生所有信息輸出:

輸入4便會實現根據學號查詢學生信息:

心得體會:

懂得了運用雙重for循環比較全體成員,如題目中所要求的姓名升序排序還有平均成績降序,比較平均成績可以用值的大小進行比較,但是比較姓名的大小就要用strcmp函數進行比較,如果有需要交換位置的,就定義一個同類型的中間值,作為交換的協助者,幫助完成兩個值的交換,完成整個過程之后,把交換完成后的全體成員從頭到尾用for循環輸出即可。

參考文獻:

[1] 張克軍:《程序設計基礎》,科學出版社。

第五篇:c語言實踐報告總結2篇

c語言實踐報告總結2篇

一、實習時間:20xx年x月x日—20xx年x月x日

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

三、實習目的:

1、熟悉我們自己所用的計算機的C語言開發環境,并且能夠熟練掌握,達到錯誤能找到原因并且加以改正。

2、加深對課本理論知識的理解,進一步掌握書中重點、難點實例,鍛煉自己的編寫程序能力和實際應用能力。

3、上機調試程序的過程中,發現錯誤,解決錯誤,保證程序的正確運行,運行結果與給定結果完全相同。

4、學會用書中基本知識解決實際中的一些問題,將書本所學的內容與實際操作相結合,掌握把實際問題轉變為C語言描述的算法的方法,明確思路。將自身的不足與缺陷改掉,養成良好編輯風格

5、培養我們的主觀能動性、溝通、表達能力和團隊合作意識,為我們以后的發展打下基礎。

四、實習內容及方法:

在本次實習中,我們采用了由淺及深、由易到難的實習方法,而且也是按照書本的教學進程內容進行的,同時采取了實際應用與理論相結合的方法,在機房里面實習,一邊理解,思考做題的思路與解法,另一邊就可以馬上進行上機實際操作。這對于我們加深對C語言的理解、操作以及動手能力都有了很大的幫助與提高。

實訓的內容主要分為了七個版塊:

第一版塊:

1、Turbo C運行環境。

了解TC的基本環境,熟悉常用菜單項和快捷鍵:在這一小節中,需要熟練的掌握并應用Turbo C的運行環境,和基本配置。Turbo C是在計算機上廣泛使用的一個C語言開發環境,它具有方便、直觀、易用的界面和豐富的函數庫。它把程序的編輯、編譯、連接和運行等操作去不都集中在一個界面上進行,使用非常方便。并且Turbo C不需要特別安裝,只需要將其拷貝到硬盤上就可以使用了。為了方便管理用戶的程序文件和維Turbo 的運行環境,客戶應在機子

上建立自己的工作目錄,一邊用來存放自己所需要開發的源程序文件。下面就是建立怎樣自己文件夾,在空白區域內輸入自己所建立的文件夾路徑即可。

2、C程序的編輯、編譯、連接和運行過程。

掌握C程序的運行步驟,初步了解C程序的特點。在Turbo C的運行中,快捷鍵使用非常方便,只需Ctrl+菜單欄中菜單名的首字母即可。

上面是一個程序編譯與鏈接的截屏。第一個Compile to OBJ將源程序編譯為OBJ文件,Make EXE file 編譯連接一次進行,Link EXE file將OBJ文件連接為EXE文件。

3、環境的熟悉,自己按照軟件并在軟件中能夠調試簡單的C語言程序。

第二版塊:

1、C語言數據類型:整型、實型、字符型。

C語言的函數類型非常豐富,除了這幾類以外,還有實型、數組、指針、結構體等,在這一小節中,主要了解關于數據類型的定義、用法以及他們的存儲類型,一邊與以后靈活運用。

C語言中還有常量與變量之分,常量是在程序執行過程中其值不變的量。二且在C語言中常量不需要類型說明就可以直接使用,常量的類型是由常量的本身隱含決定的。

2、運算符及表達式。

在C語言中,預算符非常豐富運算靈活,常用的有以下幾個:

(1)算術運算符:+、-、*、/、%(取余)及++(自增)、--(自減)。

(在這里需要注意的是:“/”運算符,在C語言中兩邊都是整數的話,運算結果只取整數部分;“%”他的兩邊都必須是整數才可以運行;“**、--”運用這個運算符時要注意“先用后加(減)、先加(減)后用”的問題)

(2)賦值運算符:=及復合賦值運算符(+=、-=、*=、/=、%=等)。

(在這里需要注意的是“=、==”的區別,要明確用法及所用的地方,“=”它的作用是賦值,“==”它的作用是判斷相等)

(3)逗號運算符:,(對于逗號表達式索要注意的是要明確它所用的地方以及在使用時所要注意的細節)。

了解三種運算符的優先級,掌握三種運算符及相應表達式的應用(詳見附錄)。

第三版塊:在這一節里,我們實習了C語言的三大結構:

1、順序結構:

2、選擇結構:if??else,switch語句。

在這里許啊喲我們學習的很多,因為只要是程序,就脫離不了這個三大結構的范疇。在這個學習里我編寫了

(1)、輸入某年某月某日,判斷這一天是這一年的第幾天?。

(2)、給一個不多于5位的正整數,要求:

一、求它是幾位數,二、逆序打印出各位數字。

(3)、某市不同車牌的出租車3公里的起步價和計費分別為:夏利7元,3公里以外,元/公里;富康8元,3公里以外,元/公里;桑塔納9元,3公里以外,元/公里。編程:從鍵盤輸入乘車的車型及行車公里數,輸出應付工資。

源程序減附錄;

經過這幾個程序的練習,讓我聊股的掌握了選擇語句的用法以及精髓,同是這個用法和技巧已經深深的可在了我的腦海里,還有同過這些個程序的編寫,讓我對以前有的絲絲而非的地放完全通透理解,獲益匪淺。

循環結構:while、do-while、for

在循環這一節里,我們主要做了以下程序:

(1)、求200-300之間所有素數,每5個換行。

(2)、猜數字游戲。規則為:輸入一個0-10之間的數字,有5次猜測機會。如果輸入0-4之間的數字,提示“太小了”;如果輸入5-7之間的數字,提示“接近了”;如果輸入9-15之間的數字,提示“太大了”;如果輸入8,提示“correct!”;如果次數超過5次,提示“沒有機會了,退出!”。

(3)、打印輸出如下圖形:(“◇”菱形)

(4)、有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?

提示:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去掉不滿足條件的排列。

(5)、打印輸出九九乘法表。

我以前就對循環這一節里的內容就理解的比較好,現在做這些題很順利的就做下去了,但在做的同是也會出現以寫小的問題,但這個讓我也更深一步的理解了循環語句的用法、思路以及其中的精華。

總的對這一節來說,使自己更神一步的理解了選擇、過程中需要注意的一些細節問題。

第四版塊:

1、一、二維數組的定義、引用及初始化。初始化:

一維數組:初始化賦值的一般形式為: static 式]={值,值??值};其中static表示是靜態存儲類型,態存儲數組和外部存儲數組才可作初始化賦值二維數組:

a.可以只對部分元素賦初值,未賦初值的元素自動取b.如對全部元素賦初值,則第一維的長度可以不給出。

2、一、二維數組的應用。

在一維數組的應用中,要與循環嵌套使用,用,但是在這里,嵌套還要是循環的嵌套,因為只有這樣使用才可以使程序更加簡潔、簡便。就像第五題:有一個班4個學生,(1)求每一門課程的平均分;(2)求每一個學生的平均分;

思路:定義一個二維數組,用二重循環輸入這個數組,然后進行相加,在求平均直,最后在用二重循環進行輸出。

循環的用法以及在使用類型說明符 數組名={“C Language”}char st;st={“C Language”};而只能對字符數組的各元素逐個賦值。

3、指針數組及指向指針的指針

指針數組的說明與使用一個數組的元素值為指針則是指針數組。是一組有序的指針的集合。指針數組的所有元素都必須是具有相同存儲類型和指向相同數據類型的指針變量。

指針數組說明的一般形式為: 類型說明符在指針這一小節,主要是用指針實現:輸入數對換,把最大的數與最后一個數對換。寫3個函數:輸入個數。

在這里進行函數的調用,一個輸入函數,一個操作函數,一個輸出函數。

i賦予它。

而字符’作為串的

而對字符可以寫為: char *ps;不能寫為:

指針數組*數組名

10個整數,將其中最小的數與第一個

10個數;進行處理;輸出10

用于存放字符串的首地址。在這里用數組實現了輸入。

在這里用指針實現了將最小的數與第一個數對換,把最大的數與最后一個數對換。

在最后進行輸出。第七版塊:

實訓七屬于一個綜合類型的題目,他要求的比較高,必須在自己王權理解通透了課本知識以后才有可能理解這道題,并且進行修改完善。主要這道題本身是在VC環境下運行的,將其移植到Turbo C環境下運行,這其中牽扯到一些語法不同,在Turbo C中不可以運行,要進行慢慢調試。經過不懈的努力、修改,終于將其成功的在Turbo C環境下可以正常運行了。(詳見附錄)

五、結論 收獲

我的收獲:在本次實習中,我學到了很多實際有用的東西,而且基本上都是在課本上學不到的,并且也在實習中梳理了自己對C語言這門課程所學的所有內容,讓自己對C這門課程有了更進一步的認識,有了一個良好的基礎,為自己的以后打下了堅實基礎。從開頭到現在,所有的內容實習完了,上機實驗是學習程序設計語言必不可少的實踐環節,在 C語言靈活、簡潔中,更需要通過編程的實踐來真正掌握它。

歷時4天的《C語言程序設計》已經結束了,在這幾天編程的過程中感觸頗多,實訓編程的同時暴露出了許多我自身存在的問題,同時也對自身有了很大的提高。

首先,對我以前做題做事非常馬虎的毛病有了很大的改進,通過在這幾天編程的過程中的鍛煉,我現在做題比以前仔細多了,會小心翼翼地去看每一個地方,會仔細地檢查程序的每一個字母、標點,以及每個可能出錯的地方,更會特別仔細,生怕自己一不小心搞錯了,而導致整個程序都無法運行。

其次,在編程的過程當中彌補了我許多知識上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及時補上了欠缺,為自己以后的人生道路打下了良好基礎,同時也讓我對每一件事都有了一個好的心態去對待它,更讓自己在編寫程序的過程中每時每刻都處于充足的狀態。

再次,通過幾天綜合實訓編程使我的知識形成了一個完整的框架結構,而不再是零散的知識個體,使我在使用時更加的方便,更加靈活,以前有好多題目要寫十行八行的,還有些地方弄得不是太懂,現在只需要五六行就可以搞定,而且還對于思路特別清晰、明確。

第四,在實習結束后,我對做完的習題檢查比再是一切的走馬觀花,而是仔細核對、認真檢查,和以前相比明顯改善了好多,以前自己對于檢查程序總是沒有耐心,不好好檢查,有問題總是找老師,相對于實習之后來說,有了很大的改善,自己不但可以坐下來耐心檢查,還能夠自己將程序調試成功,這對于現在的我來說是一個明顯的進步。

第五,通過實習改變了我做題時心煩氣燥的習慣,現在做題可以平和靜氣的完成。

第六,通過實習我的自制能力更強了,基本完全可以控制自己,避免外界的干擾,安心地完成自己的工作。

第七,在學習過程中,由于天氣炎熱,心里煩躁,同時也是每天都盯著頻幕看,腦袋都看大了,但是我卻一直堅持了下來,這對于我來說,也是一個非常好的習慣。這同時也是我的一個收獲。

第八,實訓過程中,充分發揮團隊協作精神,共同進步,幫助同學順利完成實訓課程,有困難一起解決,同時也使我在他們身上學到了很多東西。

總之,通過實習使我自身的知識體系得到鞏固、提高以及使團隊工作的能力得到鍛煉。

不足

我的不足:

首先,我的第一個,同時也是一個最大的缺點,自己對于理論知識掌握的還不是很通透,理解的不夠徹底,對于一些問題似似而非,給自己編寫程序的過程中帶來了很大的麻煩。

其次,我不能夠精心的去完成每一個程序,對于每個程序而言,都是馬馬虎虎,只要運行結果是對的,那就可以了。雖然我自己也知道這樣是不好的,但是自己就是不愿意去改,在經過實習之后雖然有所改善,但在我看來,改進的不是很大。

第三,自己做題時還有些馬虎,一些小的細節在編寫程序過程中不注意,只有在編譯連接是才可以發現、對其進行修改,對于一些小程序還不能實現一次就可以完成編譯連接。

第四,做題時自己不能心平氣和的去做。

第五,自己的子宅里不夠強,不能持之以恒的坐在自己的座位上編寫程序,歇一會就要起來轉轉。

六、致謝

在此,我僅代表我自己,對老師您致以崇高的敬意和深深的感謝,沒有您,就沒有我那么多的收獲,您不辭辛苦,在這炎熱天氣里,放棄您的休息時間來為我們輔導,在輔導過程中,您更是盡心盡力,從來沒有少過一節課,更沒有過遲到早退,對我們是全程陪同,在我們實習中隨時出現問題,隨時解決。只要發現問題,您從來沒有說是不管過,從來沒有煩躁過,對我們提出的問題,也是耐心解決,一邊不懂,接著再講一邊,臉龐流下的汗水,您卻從來沒有在意過。對我們泥更是不計報酬的為我們服務,讓我們有一個好的學習環境,不用為自己遇到問題而煩惱,在這里我想對您說一聲:老師,您辛苦了!請接受您的學子的深深謝意與感激。

在這里,也對學校表示由衷的謝意,感謝學校為我們提供了良好的實習環境,讓我們在這炎熱的天氣里,能夠舒爽的坐在教室里實習,而不用操心任何問題,在這里,對我們學校表示謝意。

1、只有頻繁用到或對運算速度要求很高的變量才放到data區內,如for循環中的計數值。

2、其他不頻繁調用到和對運算速度要求不高的變量都放到xdata區。

3、常量放到code區,如字庫、修正系數。

4、邏輯標志變量可以定義到bdata中。

在51系列芯片中有16個字節位尋址區bdata,其中可以定義8*16=128個邏輯變量。這樣可以大大降低內存占用空間。定義方法是: bdata bit LedState;但位類型不能用在數組和結構體中。

5、data區內最好放局部變量。

因為局部變量的空間是可以覆蓋的(某個函數的局部變量空間在退出該函數是就釋放,由別的函數的局部變量覆蓋),可以提高內存利用率。當然靜態局部變量除外,其內存使用方式與全局變量相同;

6、確保程序中沒有未調用的函數。

在Keil C里遇到未調用函數,編譯器就將其認為可能是中斷函數。函數里用的局部變量的空間是不釋放,也就是同全局變量一樣處理。這一點Keil做得很愚蠢,但也沒辦法。

7、如果想節省data空間就必須用large模式。

將未定義內存位置的變量全放到xdata區。當然最好對所有變量都要指定內存類型。

8、使用指針時,要指定指針指向的內存類型。

在C51中未定義指向內存類型的通用指針占用3個字節;而指定指向data區的指針只占1個字節;指定指向xdata區的指針占2個字節。如指針p是指向data區,則應定義為: char data *p。還可指定指針本身的存放內存類型,如:char data * xdata p。其含義是指針p指向data區變量,而其本身存放在xdata區。

以前沒搞過C51,大學時代跟單片機老師的時候也是搗鼓下匯編,現在重新搞單片機,因為手頭資料不多,找到一些C51的程序,發現里面有這些關鍵字,不甚明了,沒辦法只好找了下,發現如下描述:

從數據存儲類型來說,8051系列有片內、片外程序存儲器,片內、片外數據存儲器,片內程序存儲器還分直接尋址區和間接尋址類型,分別對應code、data、xdata、idata以及根據51系列特點而設定的pdata類型,使用不同的存儲器,將使程序執行效率不同,在編寫C51程序時,最好指定變量的存儲類型,這樣將有利于提高程序執行效率(此問題將在后面專門講述)。與ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各種不同的模式對應不同的實際硬件系統,也將有不同的編譯結果。

9、在51系列中data,idata,xdata,pdata的區別

data:固定指前面0x00-0x7f的128個RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小。

idata:固定指前面0x00-0xff的256個RAM,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似C中的指針方式訪問的。匯編中的語句為:mox ACC,@Rx.(不重要的補充:c中idata做指針式的訪問效果很好)

xdata:外部擴展RAM,一般指外部0x0000-0xffff空間,用DPTR訪問。

pdata:外部擴展RAM的低256個字節,地址出現在A0-A7的上時讀寫,用movx ACC,@Rx讀寫。這個比較特殊,而且C51好象有對此BUG,建議少用。但也有他的優點,具體用法屬于中級問題,這里不提。

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

文檔為doc格式


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

相關范文推薦

    小班語言教學實踐

    小班語言教學實踐 發展幼兒語言表達能力是幼兒園教育的核心問題,因為語言是思維的工具,是思維的表現方式,人類的思維成果正是靠語言的幫助得以鞏固、發展和傳遞的。幼兒期是學......

    英語語言實踐總結

    英語語言實踐(3)總結 姓名:李月超 班級:英09A-1 學號:11904020102 第一次聽說并且參加了這種形式的暑期實踐活動,感覺新鮮,充滿了好奇。按部就班的一點點的融入了這次活動。實踐活......

    C語言實踐心得體會

    C語言實踐心得體會 在科技高度發展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們學習它,有助于我們更好的了解計算機,與計算機進行交流,因此,c語言......

    C語言實踐心得體會

    C語言實踐心得體會范文在科技高度發展的今天,計算機在人們當中的作用越來越突出。而c語言作為一種計算機的語言,我們學習它,有助于我們更好的了解計算機,與計算機進行交換,因此,c......

    英語專業語言實踐總結

    語言實踐總結 學院: 班級: 學號: 姓名: 緊張的考試已經結束,我們迎來了最后一個學期的語言實習,口譯實踐。本次實踐的目的是考核我校大四英語專業學生是否具有運用口譯基本技能的......

    留學生語言實踐活動范文

    我校留學生與高新區第一中學開展漢語言課外實踐活動 5月8日,我校留學生繼走進社區、海大聯誼,再次將漢語言課外實踐活動引入高新區第一中學。在高新區第一中學領導、老師和同......

    C語言編程實踐題目

    題目1 超市按實價收取客戶購買的全部商品總額,而社區小店不收取總額中的小數部分,即不收取角和分。例如,在超市購買的全部商品總額為234.90元,那么超市將收取234.90元,但是,如果在......

    英語專業語言實踐作業封面(匯編)

    無錫太湖學院英語專業語言實踐作業文法系系英語專業題目:班級學號學生姓名 指導教師二〇一二年六月......

主站蜘蛛池模板: 久久香蕉国产线看观看手机| 亚洲 欧洲 日韩 综合在线| 天天天天做夜夜夜做| a欧美亚洲日韩在线观看| 内射囯产旡码丰满少妇| 亚洲中文无码av永久app| 国产精品成人无码免费| 国产一区二区波多野结衣| 天堂中文官网在线| 狠狠色狠狠色综合伊人| 久久精品aⅴ无码中文字字幕| 在线a亚洲老鸭窝天堂av高清| 亚洲欧洲日产国码综合在线| 国产婷婷色综合av性色av| 又粗又猛又大爽又黄老大爷5| 18无码粉嫩小泬无套在线观看| 8天堂资源在线| 亚洲欧洲国产成人综合在线观看| 亚洲欧美成人另类激情| 国产成人亚洲综合无码精品| 日本免费人成视频播放| 久久综合乱子伦精品免费| 中文字幕在线无码一区二区三区| 69久久精品无码一区二区| 欧美一进一出抽搐大尺度视频| 少妇人妻综合久久中文字幕| aⅴ亚洲 日韩 色 图网站 播放| 无码国产玉足脚交极品网站| 鲁鲁狠狠狠7777一区二区| 国产亚洲精品精品精品| 成人爽a毛片免费视频| 免费人成在线观看播放a| 久久人人妻人人做人人爽| 男女啪啪免费观看网站| 午夜国人精品av免费看| 内射少妇36p九色| 亚洲最大无码中文字幕网站| 被黑人猛烈30分钟视频| 亚洲中文字幕av不卡无码| 国产成人av一区二区三区| 国产一区二区三区四区五区加勒比|