第一篇:C語言實訓教程序言及目錄
C語言實訓教程
肇慶學院計算機學院 高級語言程序設計課程組
2010.9
序言
程序設計是高校重要的計算機基礎課程,它以編程語言為平臺,介紹程序設計的思想和方法。通過該課程的學習,學生不僅要掌握高級程序設計語言的知識,更重要的是在實踐中逐步掌握程序設計的思想和方法,培養問題求解和程序語言的應用能力。
C語言是一種功能強大、編程靈活、特色鮮明的程序設計語言,但要學好運用這門語言進行程序設計,不僅要學習C語言的基本概念、語法規則以及基本編程算法,更重要的是要進行實踐,真正能夠利用所學知識,動手編寫程序,解決實際問題。這就要求必須加強這門課程的實踐環節,通過大量的不同層次的訓練,積累編程經驗,提高程序設計能力。
本書指導思想是:實驗項目分層次,由淺入深、循序漸進,達到讀寫程序的能力同步提高的目的。
該書共有12個實驗,其中2個為綜合性實驗。每個實驗包括實驗目的、相關知識點及示例、實驗任務等,而實驗任務又包括若干個實驗項目,每個實驗項目都有訓練要點以及程序正確運行的參考示例。實驗任務中的實驗項目設置按照“由淺入深、循序漸進”的原則設置了三個層次,第一層次為程序改錯,目的是讀簡單程序,讀懂并糾正程序中的錯誤,這些錯誤,一般都是初學者易犯的常見錯誤,通過改錯訓練,避免以后編寫程序時犯同樣錯誤。第二層次是程序擴展,目的是訓練學生讀程序的能力,以及在理解程序的基礎上,模仿原來的程序對程序進行擴充改寫,使得學生能夠完成部分編程,為獨立完成編寫程序打下基礎。第三層次為程序編寫,訓練學生獨立編程的能力以及解決實際問題的能力。經過“讀懂-模仿-改寫-編寫”的過程,在循序漸進的引導中逐步熟悉理解和掌握程序設計的思想、方法和技巧,并能掌握基本的程序調試方法。
目錄
實驗 1 熟悉C語言編程環境..................錯誤!未定義書簽。
1.1 VC++6.0的使用....................錯誤!未定義書簽。實驗 2 順序結構程序設計................錯誤!未定義書簽。
2.1 基本數據類型和表達式.....................錯誤!未定義書簽。
2.2 輸入和輸出函數...................錯誤!未定義書簽。實驗 3 分支結構程序設計................錯誤!未定義書簽。
3.1 二分支程序設計...................錯誤!未定義書簽。
3.2 多分支程序設計...................錯誤!未定義書簽。實驗 4 循環結構程序設計................錯誤!未定義書簽。
4.1 基本的循環程序設計..................錯誤!未定義書簽。
4.2 嵌套循環........................錯誤!未定義書簽。實驗 5 函數..........................錯誤!未定義書簽。
5.1 函數的定義及調用...............錯誤!未定義書簽。
5.2 函數的嵌套調用和遞歸調用.............錯誤!未定義書簽。
5.3 使用工程組織多個程序文件.............錯誤!未定義書簽。實驗 6 綜合實驗一.....................錯誤!未定義書簽。實驗 7 數組..........................錯誤!未定義書簽。
7.1 一維數組........................錯誤!未定義書簽。
7.2 二維數組........................錯誤!未定義書簽。
7.3 字符數組........................錯誤!未定義書簽。實驗 8 結構體與共用體....................錯誤!未定義書簽。
8.1 結構體.....................錯誤!未定義書簽。
8.2 結構體數組....................錯誤!未定義書簽。
8.3 共用體.....................錯誤!未定義書簽。實驗 9 指針..........................錯誤!未定義書簽。
9.1指針的概念及基本運算...............錯誤!未定義書簽。
9.2指針與數組.....................錯誤!未定義書簽。
9.3單向鏈表.........................錯誤!未定義書簽。實驗 10 位運算....................錯誤!未定義書簽。實驗 11 文件........................錯誤!未定義書簽。實驗 12 綜合實驗二...................錯誤!未定義書簽。
第二篇:C語言實訓教程
課程編號:學 時 數:54學時
課程名稱:C語言程序設計適用專業:計算機應用技術
執 筆 人:編寫日期:2008年7月
單元能力訓練指導
單元一:運算符、表達式、輸入輸出語句
1.能力要求:
1)能夠正確定義、輸入、輸出并使用常用數據類型:整型、實型、字
符型
2)掌握五種基本算術運算符的使用:+、-、*、/、%,知道優先
級與結合性
3)掌握邏輯運算符和關系運算符、條件運算符的使用
4)能夠正確使用printf()和scanf()進行各種數據正確格式的輸入輸
出
5)編寫簡單順序結構程序
2.基礎能力訓練:
1)輸入一個字母,輸出其對應的ASCII碼.2)輸入一個小寫字母,輸出其對應的大寫字母.3)從鍵盤輸入一個四位數,編程計算該四位數的各位和并輸出。
4)教材p.41頁習題,5,6,7,9,10(關于數據類型、運算符、表達
式的練習題,其他類似題目均可)
5)教材p.62頁習題4,5,6,7(關于格式化輸入輸出的練習題,其
他類似題目均可)
3.拓展能力訓練:
1)輸入一個十進制數,輸出其對應的八進制數據。
2)輸入一個圓的半徑,分別求圓的周長,面積和體積。
單元二:選擇結構程序設計
1.能力要求:
1)能夠使用if語句編寫條件選擇程序
2)能夠使用嵌套if語句和switch語句編寫多分支選擇結構程序
2.基礎能力訓練:
1)判斷一個數的正、負,輸出相應信息
2)判斷一個數的奇偶,輸出相應信息
3)在主函數中輸入整型數據n,判斷該數是否能被3整除,如果能被3 整
除,輸出“yes”,否則輸出“no”
4)將數學式子寫成程序語言,如80<=x<=90
5)編程求解分段函數,根據程序寫出分段函數的數學表達式
6)從鍵盤輸入三個數,按照從小到大(或從大到小)的順序輸出
7)判斷一個年份是否閏年
8)對一個百分制的成績給出相應的等級(如90分以上A,80分以上B
等
9)從鍵盤輸入兩個整數,輸出大數(用條件表達式求解)
3.拓展能力訓練:
1)從鍵盤上輸入一個數,判斷其是否為水仙花數。
2)求一元二次方程的根
3)編程實現以下功能,讀入兩個數(d1,d2)和一個運算符(o),計算
d1 o d2的值。
單元三:循環結構程序設計
1.能力要求:
1)掌握for、do-while、while語句結構
2)能夠使用for、do-while、while編寫循環結構程序
3)使用for、do-while、while編寫多重循環語句
2.基礎能力訓練:
1)求1+2+3+…+100的和存入變量sum中,并將sum打印出來。
2)編程計算200――300的偶數和并將和打印輸出
3)計算正整數1-n中的奇數之和及偶數之和
4)從5-100之間找出能被5或7整除的數(或類似求1-100之間不
能被8整除的數
5)判斷一個循環語句能執行多少次(補充類似練習)
6)打印99乘法表(二重循環)
7)求Fibonacci數列的前20個數。該數列的生成方法為: F1 = 1,F2
= 1,Fn=Fn-1+Fn-2(n>=3),即從第3個數開始每個數等于前2個數之和。(每行輸出4個數)
9)求出3~100之間的所有素數,并按每行5個數打印輸出
3.拓展能力訓練:
1)編寫一個只要輸入4位數的年份和該年的元旦是星期幾,就可打印
全年日歷的程序(可作思路開發練習時講解)。
2)試編寫程序,求一個數任意次方的最后三位數,要求x,y從鍵盤上
輸入
3)猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不
癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
4)編寫程序,從鍵盤上輸入6名學生4門課的成績,分別統計出每個
學生的平均成績。
單元四:數組
1.能力要求:
1)掌握一維數組的使用
2)能夠進行二維數組的定義、初始化、輸入、輸出、引用等操作
3)進行字符串、字符數組操作,熟悉常用字符串處理函數
2.基礎能力訓練:
1)有一12個元素的整型數組b,從鍵盤輸入數據,請以每行4個數據
各個數據之間空兩格的形式輸出b數組的12個元素
2)由鍵盤輸入一個字符串,如果字符串中的字符是英文字母,則進行
大小寫轉換,其它字符不變。輸出轉換后的字符串。
3)定義一個整型數組a[10],將數組a[10]中的10個元素按逆序重新
存放。4)用數組方法求Fibonacci數列的前20個數。該數列的生成方法為: F1 = 1,F2 = 1,Fn=Fn-1+Fn-2(n>=3),即從第3個數開始每個數等于前2個數之和。(每行輸出4個數)
4)對從鍵盤輸入的一個字符串中的大英字母及數字進行計數。
5)有一個3行3列的矩陣,請將其在屏幕上輸出。
6)將一個2*3的矩陣轉置為3*2的矩陣
7)在一個三行三列的矩陣中求出數值最大的元素及其行/列下標并打
印輸出。
8)不使用庫函數實現兩個字符串的復制和連接
3.拓展能力訓練
1)從鍵盤輸入10個字符串,按照字典順序將其排序輸出(二維字符數
組)
2)打印楊輝三角形(要求打印出10行)
121
1331
14641
15101051
1……
3)從鍵盤上輸入100個字符,統計其中字母、每個數字和其它字符的個數及其百分比。
4)找出一個二維數據中的鞍點。(鞍點是指位置上的元素在該行上最大,在該列上最小),如果沒有鞍點,請輸出提示信息。
單元五:函數
1.能力要求:
1)能夠通過定義、調用函數處理指定問題:如數組排序,數據交換,字符串大、小寫轉換等
2)能夠嵌套調用函數
3)編制遞歸函數進行求階乘的運算
4)了解變量的作用域及生存期在程序中的影響
2.基礎能力訓練:
1)在主函數中,輸入整數x的值,調用函數,在屏幕上輸出y的值。2)編寫函數求三個數中的最大數
3)編寫函數求組合數C= n!/(k!*(n-k)!)
4)編寫遞歸函數用于計算n!
5)編寫函數求x的n次方的值
6)用函數求兩個整數之差的絕對值
7)用函數求1-100的累計和
8)不使用庫函數strcat(),編程將兩個字符串連接起來。
9)編寫函數將一個字符串中的小寫字母改為大寫字母(數組元素和數
組名作函數參數)
10)有關函數及全局變量等的程序閱讀類型題。
3.拓展能力訓練:
1)定義兩個函數,分別求兩個整數的最大公約數和最小公倍數。
2)編寫函數,使用遞歸的方法,3)求三個數的最小公倍數。用函數實現。
單元六:指針
1.能力要求:
1)指針變量的定義、使用,以及指針變量作函數參數
2)使用指針進行數組操作
3)使用指針進行字符串操作
2.基礎能力訓練:
1)用下標法和指針法引用數組元素
2)使用指針,不使用庫函數strcat(),編程將兩個字符串連接起來。
3)使用指針,不使用庫函數strcpy(),編程將兩個字符串連接起來。
使用指針,不用庫函數strlen(),編程求字符串的長度。
4)使用指針進行冒泡法排序
5)使用指針求一個字符串的長度
3.拓展能力訓練:
1)編寫一個子串截取函數,viod substr(char *source,int start,int length,char *dest);source是源字符串指針,start是截取的開始位置,length是要截取的子串的長度,dest是指目標串指針。
2)編寫一個程序,利用指針打印如下圖形。
***
** **
****
****
3)編寫一個函數,完成對n個字符串的排序。
單元七:結構體與鏈表
1.能力要求:
1)在程序中正確使用結構體變量、結構體數組以及結構體類型的指針
2)了解鏈表處理的方法
2)了解共用型、枚舉型數據類型
2.基礎能力落實:
1)定義一個反映學生學號、姓名和性別的結構體變量,同時初始化;
將信息打印輸出。
2)定義一個結構體數組,用于存放5名學生的學號、姓名及三門課的成績; 從鍵盤輸入5名學生的以上數據,將成績平均值最大的學生的學號、姓名、三門課的成績及平均成績在屏幕上輸出。
3.拓展能力落實:
1)利用共用體測鍵盤的輸入。
2)編寫一個函數,實現鏈表的插入。
3)編寫一個函數,實現鏈表的查詢。
單元八:文件
1.能力要求:
1)根據題意進行文件操作:打開、關閉、讀寫
2)進行文件定位操作,了解位置指針與出錯檢測
3)數組、字符、字符串的讀寫
2.基礎能力落實:
1)定義一個字符數組str[15],從鍵盤輸入一個字符串“polytechnic”,將此字符串,寫入文件string.dat中,分別用fwrite與fputs函數實現
2)定義一個浮點型變量a,從鍵盤輸入數據,將此數寫入二進制文件
data.dat中
3)將一個整型數據、浮點型數據存入文件并讀取
4)將一個結構體數據存入文件并讀取。
3.拓展能力落實:
1)編寫一個函數,實現兩個文本文件的復制。
2)將一個文件中,所有的小寫字母轉化為大寫字母后輸出
第三篇:C語言實訓
湖北輕工職業技術學院 《C語言程序設計》實驗報告
實驗十一:函數
班 級: ___________10計管_________________ 姓 名: ___________胡高______________ 學 號: ___________1003011138________________ 日 期: ____________2011-5-29________________
一、實驗目的和要求
1、理解數組引入的意義及作用;
2、掌握一維數組的基本思想和基本用法;
3、掌握使用一維數組的基本算法:排序與查找。
二、實驗主要儀器和設備 計算機一臺,Turbo C環境。
三、實驗內容
請將該實驗報告重新命名為“實驗11-學號[姓名]”,如“實驗11-66[張三]”
1、P145 填空題2(2)
2、P145 上機操作題 3(5)
四、實驗原始紀錄 實驗1 程序的設計界面。(Alt+PrintScreeninclude SysRq拷貝當前窗口)
程序代碼。(此處寫代碼,不是圖片。
#include
void swap();
extern int a,b;
a=3;b=10;
swap();
printf(“a=%d,b=%dn”,a,b);
}
int a,b;
void swap()
{
int temp;
temp=a;a=b;b=temp;
}
實驗2 程序的設計界面。
程序代碼。
五、實驗結果及分析
實驗1運行結果圖。
實驗2運行結果圖。
六、實驗總結與思考(主要寫一些在實驗過程中,遇到的問題、所犯的錯誤,以及是如何發現糾正的。大約100至200字左右。)
本次試驗的內容是考察數組的引用、基本算法等,但是總體感覺有點問題。有的地方不知道如何下手
第四篇:c語言實訓
目 錄
特別注意,打開視圖菜單-文檔結構圖觀察文檔結構。目錄由WORD菜單中插入-引用-目錄自動生成并更新,不需要手工生成菜單。
本模板僅說明格式,內容由指導老師決定,不用按這份目錄內容編寫實訓報告。
具體目錄見文檔要求。以下部分僅供參考。
目 錄........................................................................................................................1
一、實訓的目的與要求................................................................................................1
二、題目說明................................................................................................................2
三、總體設計................................................................................................................2
3.1.軟件模塊結構圖...........................................................................................2 3.2.程序流程圖...................................................................................................3
四、詳細設計和實施....................................................................................................3
4.1 XXXX模塊.....................................................................................................4.2
4.3
五、遇到的問題和解決方法........................................................................................4
六、實訓總結................................................................................................................4
七、參考文獻................................................................................................................4 附錄(源程序代碼)....................................................................................................5
一、實訓的目的與要求
(正文為宋體,五號字 行間距為21)中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國中華人民共和國
二、題目說明
(正文為宋體,五號字 行間距為21)題目參照任務書中有關描述
三、總體設計
3.1.軟件模塊結構圖(以下圖僅供樣式參考)
圖1-1 軟件模塊結構圖
3.2.程序流程圖(以下圖僅供樣式參考):
四、詳細設計和實施
(正文為宋體,五號字 行間距為21)4.1 模塊1 ………(可以寫一些關鍵程序代碼,另外截一些界面圖并說明實現了什么功能,以證明功能實現了)每一個界面,必須有(1)功能簡介(2)界面截圖一張(3)界面關鍵代碼和描述 每一個界面說明作為獨立的一小節。(在文檔說明中有樣例)
五、遇到的問題和解決方法
(正文為宋體,五號字 行間距為21)1. 2. 3. …………
六、實訓總結
(正文為宋體,五號字 行間距為21)
七、參考文獻
[1] 權明富,齊佳音,舒華英.客戶價值評價指標體系設計[J].南開管理評論,2004,7(3):17-18.[2] 劉小洪,鄒鵬.商業銀行客戶關系價值管理模型研究[J].管理科學,2005,18(3):57-60.附錄(源程序代碼)
第五篇:C語言實訓
第一天的題目: 求兩個整數之和。
#include
求1×3×5×7×9×11 #include
sum = sum*i;
i = i+2;}
printf(“%d”,sum);return 0;} 有50個學生,要求將成績在80分以上的學生的學號和成績輸出。
#include
int i;
int a[50];
for(i=0;i<50;i++)
{
scanf(“%d”,&a[i]);
if(a[i]>80)
printf(“%d”,a[i]);
} }
判定2000—2500年中的每一年是否閏年,并將結果輸出。
#include
int y;
y=2000;
while(y<=2500)
{
if(((y%4 == 0)&&(y%100!= 0))||(y%400 == 0))
printf(“%d 年是閏年n”,y);
else printf(“%d 年不是閏年n”,y);
y=y++;} } 求1?11111?????? 23499100#include
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;} printf(“%fn”,sum);} 給出一個大于或等于3的正整數,判斷它是不是一個素數。
#include
int i,n,mark=0;
scanf(“%d”,&n);
for(i=2;i < n/2+1;i++)
{
if(n%i==0)
{
printf(“%d不是素數”,n);
mark=1;
break;
}
}
if(mark==0)
printf(“%d是素數”,n);} 求5!#include
#include
#include
float a,b,t;scanf(“%f %f”,&a,&b);if(a>b){ t=a;a=b;b=t;} printf(“%5.2f,%5.2fn”,a,b);
} 輸入3個數a,b,c,要求按由小到大的順序輸出。
#include
#include
char zhong,guo;
scanf(“%c”,&zhong);
if(65<=zhong&&zhong<=90)
{
guo=zhong+32;
printf(“%c”,guo);
}
else
printf(“%c”,zhong);}
??1(x?0)?1編一程序,輸入一個x值,要求輸出相應的y值。y??0(x?0)
?1(x?0)?#include
int x,y;
printf(“請輸入x:”);
scanf(“%d”,&x);
if(x<0)
y=-1;
else if(x=0)
y=0;
else
y=1;
printf(“y=%d”,y);} 要求按照考試成績的等級輸出百分制分數段,A等為85分以上,B等為70~84分,C等為60~69分,D等為 60分以下。成績的等級由鍵盤輸入。#include
5寫一程序,判斷某一年是否閏年。#include
int a;
scanf(“%d”,&a);
if(a%4==0&&a%100!=0||a%400==0)
printf(“是閏年”);
else printf(“不是閏年”);} 運輸公司對用戶計算運輸費用。路程(s km)越遠,每噸·千米運費越低。標準如下:
s < 250
沒有折扣
250≤s < 500
2%折扣
500≤s < 1000
5%折扣
1000≤s < 2000
8%折扣
2000≤s < 3000
10%折扣
3000≤s
15%折扣 #include
int c, s;
float p, w, d, f;
scanf(“%f %f %d”, &p, &w, &s);
if(s >= 3000)c =12;
else c = s / 250;
switch(c)
{
case 0 : d = 0;break;
case 1 : d = 2;break;
case 2 :
case 3 : d = 5;break;
case 4 :
case 5 :
case 6 :
case 7 : d = 8;break;
case 8 :
case 9 :
case 10:
case 11: d = 10;break;
case 12: d = 15;break;
}
f = p * w * s *(1-d / 100);
printf(“freight =%15.4fn”,f);} 全班有50個學生,用循環語句統計各學生三門課的平均成績。#include
return 0;} 要求輸出100~200之間的不能被3整除的數。#include
main(){
int
n;
for(n=100;n <=200;n++)
{
if(n%3!=0)
printf(“%d
”,n);}
printf(“n ”);}
第二天的題目:
?1 輸出以下4*5的矩陣。
10 15 20 #include
printf(“%sn”,p[i]);} } 用
?4?1?13?15?17??
公式求 ?
的近似值,直到發現某一項的絕對值小于10-6 為止(該項不累計加)。
#include
s=-s;
t=s/n;
pi=pi+t;} pi=pi*4;printf(“%.6fn”,pi);return 0;}
? 求費波那西(Fibonacci)數列的前40個數。這個數列有如下特點:第1、2兩個數為1、1。從第3個數開始,該數是其前面兩個數之和。即: ?F1?1??F2?1?F?F?Fn?1n?2?n(n?1)(n?2)
(n?3)#include
f3=f1+f2;
printf(“%12dn”,f3);
f1=f2;
f2=f3;} return 0;}
輸入一個大于3的整數n,判定它是否素數(prime,又稱質數)。#include
if(a%b==0)
{
printf(“此數不是素數n”);
return 0;
}
printf(“此數是素數n”);
return 0;} 求100~200間的全部素數。#include
int i,k,sk,flag,m=0;
for(k=100;k<=200;k++)
{
sk=(int)sqrt(k);
flag = 1;
for(i=2;i<=sk;i++)
{
if(k%i==0)
{
flag=0;
break;
}
}
if(flag==1)
{
m++;
printf(“%5d”,k);
}
}
if(m%12==0)
printf(“n”);
printf(“total:%5dn”,m);} 對10個數組元素依次賦值為0,1,2,3,4,5,6,7,8,9,要求按逆序輸出。#include
#include
int i;
int f[40]={1,1};
for(i=0;i<40;i++)
{
f[i]=f[i-2]+f[i-1];
}
for(i=0;i<40;i++)
{
if(i%5==0)
printf(“/n”);
printf(“%12d”,f[i]);
}
return 0;} 有10個地區的面積,要求對它們按由小到大的順序排列(采用起泡法)。#include
scanf(“%d”,&a[i]);for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
} for(i=0;i<10;i++)
printf(“%dt”,a[i]);} 將一個二維數組行和列的元素互換,存到另一個二維數組中。
?14??123??b??25a??456? ??????36??#include
for(j=0;j<3;j++)
{
printf(“%5d,a[i][j]”);
b[j][i]=a[i][j];
}
printf(“n”);} printf(“array b:n”);for(i=0;i<3;i++){
for(j=0;j<2;j++);
printf(“%5d”,b[i][j]);
printf(“n”);} } 有一個3×4的矩陣,要求編程序求出其中值最大的那個元素的值,以及其所在的行號和列號。
#include
int a[3][4],max,i,j;
int x=0,y=0;
printf(“請輸入矩陣的數值!n”);
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf(“%d”,&a[i][j]);
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(max { max=a[i][j]; x=i; y=j; } printf(“矩陣中最大的元素為:%dn”,max); printf(“行號為:%d,列號為:%d”,x,y);} 輸出一個已知的字符串。#include