C語言程序設(shè)計試驗指導(dǎo)書_第1頁
C語言程序設(shè)計試驗指導(dǎo)書_第2頁
C語言程序設(shè)計試驗指導(dǎo)書_第3頁
C語言程序設(shè)計試驗指導(dǎo)書_第4頁
C語言程序設(shè)計試驗指導(dǎo)書_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、實用標(biāo)準(zhǔn)文案?C語言程序設(shè)計?實驗指導(dǎo)書課程編號:課程名稱:C語言程序設(shè)計實驗學(xué)時:44一、本實驗課的性質(zhì)、任務(wù)與目的本實驗課目的是使學(xué)生掌握 C語言編程的常用方法,熟悉該語言中的語法、 詞法規(guī)那么,為以后進行軟件開發(fā)和學(xué)習(xí)后繼專業(yè)課程打下根底.通過學(xué)習(xí)能夠運用C語言中的各個知識點編寫能完成一定功能的程序. 練習(xí)學(xué)生進行復(fù)雜程序設(shè) 計的技能和培養(yǎng)良好程序設(shè)計的習(xí)慣, 其重要程度決不亞于知識的傳授. 把高級 語言的學(xué)習(xí)與程序設(shè)計、上機實踐緊密地結(jié)合起來,以提升學(xué)生能靈活運用新的 知識分析問題和解決問題的水平.二、本實驗課所依據(jù)的課程根本理論本實驗課基于C語言的語法和詞法規(guī)那么、數(shù)據(jù)的表示及算法的

2、處理,而 語法及算法正是高級語言程序設(shè)計的主要研究對象.?C語言程序設(shè)計?的主要任務(wù)是:C語言是一種應(yīng)用廣泛結(jié)構(gòu)化程序設(shè)計語言,本課程介紹C語言的基本概念、根本語法和編程方法,重點描述 C語言的結(jié)構(gòu)化的特征,并通過本課 程的學(xué)習(xí),使學(xué)生掌握一定的結(jié)構(gòu)化程序設(shè)計的知識,以及用 C語言編寫程序 的水平.三、實驗類型與要求在做每個實驗之前,讓學(xué)生對本次實驗相關(guān)的內(nèi)容進行預(yù)習(xí)、算法設(shè)計、 流程圖的設(shè)計、編寫程序,做好實驗的準(zhǔn)備工作;寫出預(yù)習(xí)報告,畫出流程圖, 要求獨立完成.說明:1、實驗類型:設(shè)計性;2、實驗要求:必做.四、每組人數(shù)與實驗學(xué)時數(shù)每組1人,實驗學(xué)時數(shù)44學(xué)時.五、考核方式與評分方法實驗總

3、成績=出勤情況*10%+實驗報告*20%+平時*30%+實驗表現(xiàn)*40% 六、本實驗課配套教材或?qū)嶒炛笇?dǎo)書譚浩強.C程序設(shè)計.北京:清華大學(xué)出版社,2006年3月第3版譚浩強.C程序設(shè)計題解與上機指導(dǎo).北京:清華大學(xué)出版社,2006年3月第3版譚浩強.C程序設(shè)計試題匯編.北京:清華大學(xué)出版社,2006年3月第2版夏寬理.C語言程序設(shè)計.北京:中國鐵道出版社,2006年2月第1版夏寬理.C語言程序設(shè)計上機指導(dǎo)與習(xí)題解答.北京:中國鐵道出版社,2006年2月第1版王士元.C高級實用程序設(shè)計.北京:清華大學(xué)出版社,1996年1月第1版文檔大全實用標(biāo)準(zhǔn)文案七、實驗報告要求在機器上交作業(yè),每次實驗成績分

4、為優(yōu)、良、及格、不及格,未參加的為0分.要求認(rèn)真書寫實驗報告.實驗報告編寫要求:1 .實驗題目2 .實驗要求3 .程序流程圖4 .調(diào)試過程(實驗過程出現(xiàn)的問題、解決的方法)5 .程序代碼及運行結(jié)果.八、實驗內(nèi)容實驗一 :C語言運行環(huán)境的熟悉與簡單的C程序【目的與要求】1、了解TC環(huán)境下C語言的運行環(huán)境,熟悉編譯系統(tǒng)的操作環(huán)境.2、了解在該系統(tǒng)上如何編輯、編譯、連接和運行一個C程序.3、通過運行簡單的 C程序,初步了解 C源程序的特點.4、掌握和理解 C程序中最根本的 C語句.【實驗內(nèi)容】1、題目:由鍵盤輸入兩個整數(shù),計算并輸出兩個數(shù)之和.2、程序如下:#include“stdio.h &quo

5、t;void main()int a,b,sum;printf( "Please input two integer numbers:n ");scanf( "d%d ,&a,&b);sum=a+b;printf("%d+%d=% d,a,b,sum);3、具體操作:(1)輸入程序,然后進行編譯連接.假設(shè)在編譯中有詞法或語法錯誤,那么根據(jù)提示進行修改,再進行調(diào)試,直到?jīng)]有語法錯誤.(2)運行程序,依以下不同的方式輸入數(shù)據(jù),查看程序執(zhí)行結(jié)果. 12_ 34/12/34 / 12<Tab>34 /【實驗分析與討論】1、總結(jié)C程序的

6、根本結(jié)構(gòu)和書寫規(guī)那么.文檔大全實用標(biāo)準(zhǔn)文案2、分析調(diào)試過程中常見的錯誤提示和解決策略.實驗二:C語言程序的單步調(diào)試實驗三:選擇結(jié)構(gòu)的程序設(shè)計【目的與要求】1、了解三種根本數(shù)據(jù)類型的定義.2、掌握各種不同運算符及其對應(yīng)的表達式的使用.3、熟練掌握if語句和switch語句的使用【實驗內(nèi)容】一、判斷方程ax2+bx+c=0有幾個解,假設(shè)有,那么輸出其解.1 、算法分析:對于方程ax2+bx+c=0的解,存在以下情況:a=0,不是一元二次方程; b2-4ac=0,有兩個相等的實根;b2-4ac>0,有兩個不等白實根;b2-4ac<0,有兩個共軻復(fù)根.(1)定義變量:a,b,c,x1,x2

7、,d(2)輸入 a,b,c(3)if(a=0)不是一元二次方程else d= b2-4ac根據(jù)d的取值,輸出方程根的情況:if(b2-4ac=0) x1=x2=-b/(2*a)else if(b2-4ac>0) x1=(-b+sqrt(d)/(2*a) x2=(-b-sqrt(d)/(2*a)else x1=(-b+sqrt(-d)i)/(2*a) x2=(-b-sqrt(-d)i)/(2*a)2、程序代碼:#include“stdio.h "#include"math.h "void main() float a,b,c,x1,x2,d;printf( &

8、quot;請輸入ax2+bx+c=0方程三系數(shù)值:); scanf(" f%f%f' ,&a,&b,&c);if (abs(a)<=1e-6)a=0printf(“該方程非一元二次方程.n ");else d=sqr(b)-4*a*c; if (abs(d)<=1e-6) / sqr(b)-4*a*c =0printf(“該方程的兩個相等實根為:x1,x2=%4.2f ,-b/(2*a);else if(abs(d)>1e-6)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);文檔大全實用標(biāo)

9、準(zhǔn)文案printf(“該方程的兩個不等實根為:x1=%4.2f,x2=%4.2f ,x1,x2);else / sqr(b)-4*a*c<0printf(“該方程的兩個復(fù)數(shù)根為:x1=%4.2f+%4.2fi,x2=%4.2f-%4.2fi ,-b/(2*a),sqrt(-d)/(2*a), -b/(2*a),sqrt(-d)/(2*a);、簡單的菜單程序設(shè)計.假設(shè)要求設(shè)計一菜單如下:主菜單1 漢字2 拼音3 英文1、算法分析:(1) 根據(jù)要求使用輸出語句將上述菜單輸出,提示按要求選擇.(2) 運用if語句或switch語句,編寫分支結(jié)構(gòu).2、程序代碼:#include void mai

10、n() int i;printf(" nnnprintf("(printf(“1printf(“2printf("printf("請選擇:scanf( " %d ,&i); switch(i)case 1:printf(case 2:printf(case 3:printf( stdio.h=主 菜 單中 國) 漢字n"); 拼音n );3-英文 n););中 國 n " ) ; break;Chinan " );break; Zhong guon " );break;【課后練習(xí)】1、判斷一年份是

11、不是閏年.2、從鍵盤上輸入1-7之間的數(shù)字,輸出表示一個星期中對應(yīng)某一天的英文單詞.【實驗分析與討論】1、總結(jié)分支選擇結(jié)構(gòu)的設(shè)計方法與技巧.2、掌握簡單菜單的設(shè)計.實驗四:循環(huán)結(jié)構(gòu)的程序設(shè)計文檔大全實用標(biāo)準(zhǔn)文案【目的與要求】1、掌握三種循環(huán)語句在編程中的使用.2、理解break語句和continue 語句在循環(huán)結(jié)構(gòu)中的不同作用.3、了解循環(huán)的嵌套,學(xué)會窮舉算法與迭代算法.【實驗內(nèi)容】一、輸入兩個正整數(shù),求出它們的最大公約數(shù)與最小公倍數(shù).1、算法分析:輾轉(zhuǎn)相除法對于兩個數(shù)m和n,將大數(shù)放在m中,小數(shù)放在n中,用n去除m假設(shè)余 數(shù)為0,那么n為最大公約數(shù),否那么將 n作為m余數(shù)作為n,再用n去除m

12、直到余數(shù)為 0,那么n為最大公約數(shù).2、程序代碼:#include“ stdio.h "#include" math.h "void main()int m,n,t,max,min;printf(“請輸入兩個正整數(shù):);scanf( "%d%d ,&m,&n); min=m*n;if (m<n) t=n;n=m;m=t;while(n!=0)t=m%n;m=n;n=t;printf("最大公約數(shù)為:dn" ,m);printf("最小公倍數(shù)為:dn ,min/m);二、將一張100元錢,換成10元,20

13、元,50元零錢,問有多少種不同的換法(假設(shè)三種零 錢每種都可不出現(xiàn)).1、算法分析運用窮舉算法實現(xiàn):考慮到三種零錢各種可以不出現(xiàn),那么各自的張數(shù)范圍如下:10元0張到10張20元0張到5張50元0張到2張并且要考慮到共數(shù)只有一張100元票子.2、程序代碼:#include "stdio.h"void main()int Tencount,Twecount,Fifcount,i=0;for(Tencount=0;Tencount<=10;Tencount+)for(Twecount=0;Twecount<=5;Twecount+)文檔大全實用標(biāo)準(zhǔn)文案for(Fif

14、count=0;Fifcount<=2;Fifcount+)if (Tencount*10+Twecount*20+Fifcount*50=100)printf("第陰中換法為:10元加長20元%d張50元加長行,+i,Tencount,Twecount,Fifcount);【課后練習(xí)】*1、求1 100之間,能被5整除的數(shù)之和.2、判斷任一個數(shù)是否是質(zhì)數(shù).3、輸出一有規(guī)那么的圖形,如右圖.*【實驗分析與討論】1、分析總結(jié)for語句,while語句,do-while 語句的用法.2、巧用break語句和continue 語句.實驗五:數(shù)組及其應(yīng)用【目的與要求】1、掌握一維數(shù)組與

15、二維數(shù)組的使用.2、掌握字符數(shù)組與字符串的區(qū)別與使用.3、熟練掌握與數(shù)組有關(guān)的算法(選擇排序與冒泡排序、查找與插入).【實驗內(nèi)容】一、輸入一個整數(shù),將其插入一含有9個數(shù)的有序序列中,保證插入后其仍然有序,.1、算法分析:將待插入的數(shù)與序列中的每個數(shù)進行比擬,找到其插入的具體位置將從第i個數(shù)組元素開始,一直到原數(shù)組中的最后一個元素,整體往后 移,空出一空間來存儲待插入的整數(shù).2、程序代碼:#include "stdio.h"void main()int a10=2,5,7,11,14,19,21,33,67,i,k,m;printf(“原數(shù)組為:);for(i=0;i<

16、9;i+) printf("%4d',ai);printf("n請輸入待插入的整數(shù):);scanf("%d',&m);for(i=0;i<9;i+)if (m<=ai) break;/查找待插入的位置for(k=9;k>=i;k-)文檔大全實用標(biāo)準(zhǔn)文案ak=ak-1; / 移位,準(zhǔn)備插入新的整數(shù)ai=m; printf(“新數(shù)組為:);for(i=0;i<10;i+) printf("%4d',ai);)二、編程實現(xiàn):將字符串 str2連接到字符串str1后,構(gòu)成新的字符串 str1 .1、算法分析

17、:本程序即實現(xiàn)字符串處理函數(shù)strcat ()的功能.兩字符串str1和str2進行連接,要注意的是字符串的結(jié)束標(biāo)志.2、程序代碼:#include "stdio.h"#include "string.h"void main()char str140,str220,i,j,len1,len2;printf("請輸入字符串 str1:"); gets(str1);len1=strlen(str1);printf("請輸入字符串 str2:"); gets(str2);len2=strlen(str2);for(i=l

18、en1,j=0;j<len2;i+,j+)str1i=str2j;str1i='0'printf("新的字符串 str1 為:");puts(str1);)【課后練習(xí)】1、判斷一方陣是不是對稱矩陣.2、實現(xiàn)兩個字符串拷貝的功能.3、運行折半查找法,在一個有序序列中查找某一特定的數(shù).【實驗分析與討論】1、分析兩種根本排序算法的核心與兩者的不同之處.2、在實現(xiàn)字符串處理函數(shù)時的一些注意事宜及其實現(xiàn)方法.3、討論二維數(shù)組解決矩陣與行列式.實驗六: 函數(shù)及其應(yīng)用【目的與要求】1、掌握C中函數(shù)的定義、調(diào)用及設(shè)計.2、掌握函數(shù)嵌套調(diào)用、遞歸調(diào)用的設(shè)計.3、掌握變量

19、、函數(shù)的作用域及存儲類.【實驗內(nèi)容】文檔大全實用標(biāo)準(zhǔn)文案、設(shè)計一個子函數(shù)對 n個整數(shù)進行排序,由主函數(shù)從鍵盤接收假設(shè)干個數(shù),調(diào)用子函數(shù)進行排序,并在主函數(shù)中進行輸出顯示.1、算法分析:子函數(shù)的設(shè)計以兩個參數(shù)來實現(xiàn),一個是接收主函數(shù)傳來的數(shù)組首地址,另一個是持排序的整數(shù)個數(shù),如主函數(shù)的實現(xiàn)fun(int a,int n)定義一整型數(shù)組,從鍵盤上接收假設(shè)干個整數(shù),調(diào)用子函數(shù)fun ,再將最后的結(jié)果輸出.2、程序代碼:#include "stdio.h"void fun(int a,int n)/選擇排序算法int i,j,t;for(i=0;i<n-1;i+)for(j=

20、i+1;j<n;j+)if (ai>aj) t=ai;ai=aj;aj=t;void main() int a10,i;for(i=0;i<10;i+)scanf("%d,&ai);printf("輸入的數(shù)值序列為:");for(i=0;i<10;i+) printf("%4d",ai);printf("n"); fun(a,10);printf("輸入的數(shù)值序列為:");for(i=0;i<10;i+) printf("%4d",ai);二、輸入

21、任意兩數(shù) m,n的值,輸出以下表達式的值.m!S=(m -n)! n!1、算法分析 編寫一函數(shù)fac(n), 返回n!的值.編寫主函數(shù),從鍵盤輸入m,n的值,調(diào)用上述fac()函數(shù),計算表達式的值,并將其輸出.2、程序代碼#include “stdio.h "long fac(int n)if (n=1) return 1;else return n*fac(n-1);void main()int m,n,t; float s;printf( "please input 2 integer numbers:");文檔大全實用標(biāo)準(zhǔn)文案scanf( "%d%

22、d ,&m,&n);if(m<n) t=m;m=n;n=t;printf("s=%f' ,fac(m)/(fac(m -n)fac(n);【課后練習(xí)】1、假設(shè)正整數(shù)A恰好出現(xiàn)在其平方數(shù)的右側(cè),那么稱A為一個同構(gòu)數(shù).如:5, 6, 76.求100以內(nèi)的所有同構(gòu)數(shù).要求:(1)編寫一子函數(shù)int fun (int n),判斷給定正整數(shù) n是不是同構(gòu)數(shù),假設(shè)是, 返回1,否那么,返回0.(2)編寫主函數(shù),調(diào)用函數(shù)fun(),尋找并輸出100以內(nèi)的所有同構(gòu)數(shù).(3)在輸出同構(gòu)數(shù)的同時,要輸出其平方的值.2、運用遞歸,求任一個字符串的長度.【實驗分析與討論】1、被

23、調(diào)函數(shù)的實現(xiàn)及調(diào)用過程.2、簡單遞歸問題的實現(xiàn).實驗七:指針及其應(yīng)用【目的與要求】1、了解指針的定義與應(yīng)用.2、掌握使用指針變量的程序設(shè)計.3、了解使用函數(shù)指針的程序設(shè)計.4、了解使用指針數(shù)組的程序設(shè)計.【實現(xiàn)內(nèi)容】一、設(shè)計一程序,將兩個變量的值進行交換.1、算法分析:(1)編寫一個函數(shù)swap(int *p,int *q),交換兩個參數(shù)指針?biāo)傅臄?shù)據(jù).(2)編寫主函數(shù),調(diào)用函數(shù)swap,將兩個變量的值進行交換.2、程序代碼:#include “stdio.h "void swap(int *p,int *q);void main()int a,b;printf(“請輸入兩個整數(shù):&

24、quot;);scanf( "%d%d ,&a,&b);printf("兩個數(shù)交換前順序為:a=%d,b=%d ,a,b);swap(&a,&b);printf(“兩個數(shù)交換后順序為:a=%d,b=%d ,a,b);void swap(int *p,int *q)文檔大全實用標(biāo)準(zhǔn)文案int t;t=*p;*p=*q;*q=t;二、編程實現(xiàn):運用指針將字符串str2連接到字符串strl后,構(gòu)成新的字符串strl .1、算法分析:本程序即實現(xiàn)字符串處理函數(shù)strcat ()的功能.兩字符串 strl和str2進行連接,要注意的是字符串的結(jié)束標(biāo)志,

25、并運用指向字符串的指針來實現(xiàn).2、程序代碼:#include "stdio.h"#include "string.h"void main()char str120 ,str210,*p=str1,*q=str2 ,j,len1,len2;printf("請輸入字符串 str1:"); gets(str1);len1=strlen(str1); p=p+len1-1;printf("請輸入字符串 str2:"); gets(str2);len2=strlen(str2);for( j=0;j<len2; j+)

26、*(+p)=*(q+);str1len1+len2=''0'printf("新的字符串 str1 為:");puts(str1);【課后練習(xí)】1、運用指向數(shù)組的指針,求一數(shù)組中所有元素之和.2、【實驗分析與討論】實驗八:結(jié)構(gòu)體及其應(yīng)用【目的與要求】1、了解結(jié)構(gòu)體類型的定義.2、掌握結(jié)構(gòu)體類型變量的使用.【實驗內(nèi)容】有10個學(xué)生,每個學(xué)生包括學(xué)號、姓名、三門課的成績,從鍵盤輸入10個學(xué)生數(shù)據(jù),要求輸出三門課中每一門課的平均成績,以及最高分學(xué)生的數(shù)據(jù).1、算法分析:定義一個結(jié)構(gòu)體類型,其中含有學(xué)號、姓名、三門課的成績、總分?jǐn)?shù)據(jù);先后根據(jù)要求解決上述問題.

27、2、程序代碼:#include "stdio.h"typedef struct stu文檔大全實用標(biāo)準(zhǔn)文案int number;char name4;float len1,len2,len3;float score;student;void main()student stu10;int i,flag;float ave3,sum3=0,0,0,max=0;printf(" 請輸入10位同學(xué)的所有信息:");for(i=0;i<10;i+)scanf("%d%s%f%f%f",&stui.number, stui.nam

28、e,&stui.len1,&stui.len2,&stui.len3);stui.score= stui.len1+stui.len2+stui.len3;if(stui.score>=max) max=stui.score; flag=i;sum0+=stui.len1; sum1+=stui.len2; sum2+=stui.len3;for(i=0;i<3;i+)avei=sumi/3;printf("三門課的平均成績分別為");for(i=0;i<3;i+)printf("%6.2f",avei);pri

29、ntf("n最高分是:%d %s %6.2f %6.2f %6.2f",stuflag.number,,stuflag.len1,stuflag.len2, stuflag.len3);【實驗分析與討論】13個人圍成一圈,從第 1個人開始順序報號1、2、3.凡報到“ 3者退出圈子,找出最 后留在圈子中的人原來的序號.實驗九:鏈表的處理【目的與要求】1、了解鍵表的相關(guān)概念.2、掌握單向鍵表的創(chuàng)立、編歷、插入、刪除等簡單處理.【內(nèi)容】創(chuàng)立一個鏈表.#include "stdio.h"#include "stdlib.h&qu

30、ot;typedef struct listint data;struct list *next;list;文檔大全實用標(biāo)準(zhǔn)文案void main()list *head,*ptr;int num,i;ptr=(list *)malloc(sizeof(list); head=ptr;printf("Please input 5 numbers:");for(i=0;i<5;i+)scanf("%d",&num);ptr->data=num;ptr->next=(list *)malloc(sizeof(list);if(i=4) ptr->next=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論