《-C語言程序設計》實驗指導書_第1頁
《-C語言程序設計》實驗指導書_第2頁
《-C語言程序設計》實驗指導書_第3頁
《-C語言程序設計》實驗指導書_第4頁
《-C語言程序設計》實驗指導書_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

K1+478?K1+478?Kl+5888段左側(cè)片石混凝土擋土墻第1部分#頁腳內(nèi)容《C語言程序設計》實驗指導書課程編號: 課程名稱:C語言程序設計? 實驗學時:44一、本實驗課的性質(zhì)、任務與tl的本實驗課目的是使學生掌握C語言編程的常用方法,熟悉該語言中的語法、詞法規(guī)則,為以后進行軟件開發(fā)和學習后繼專業(yè)課程打下基礎。通過學習能夠運用c語言中的各個知識點編寫能完成一定功能的程序。訓練學生進行復雜程序設計的技能和培養(yǎng)良好程序設計的習慣,其重要程度決不亞于知識的傳授。把高級語言的學習與程序設計.上機實踐緊密地結(jié)合起來,以提高學生能靈活運用新的知識分析問題和解決問題的能力。二、 本實驗課所依據(jù)的課程基本理論本實驗課基于C語言的語法和詞法規(guī)則、數(shù)據(jù)的表示及算法的處理,而語法及算法正是高級語言程序設計的主要研究對象?!禖語言程序設計》的主要任務是:C語言是一種應用廣泛結(jié)構(gòu)化程序設計語言,本課程介紹c語言的基本概念.基本語法和編程方法,重點描述C語言的結(jié)構(gòu)化的特征,并通過本課程的學習,使學生掌握一定的結(jié)構(gòu)化程序設計的知識,以及用C語言編寫程序的能力。三、 實驗類型與要求在做每個實驗之前,讓學生對本次實驗相關(guān)的內(nèi)容進行預習、算法設計、流程圖的設計、編寫程序,做好實驗的準備工作;寫出預習報告,畫出流程圖,要求獨立完成。說明:1>實驗類型:設計性;2、實驗要求:必做。四、 每組人數(shù)與實驗學時數(shù)每組1人,實驗學時數(shù)44學時。五、 考核方式與評分辦法實驗總成績二出勤情況"0%+實驗報告*20%+平時*30%+實驗表現(xiàn)*40%六、 本實驗課配套教材或?qū)嶒炛笇T浩強.C程序設計.北京:清華大學出版社,2006年3月第3版譚浩強.C程序設計題解與上機指導.北京:清華大學出版社,2006年3月第3版譚浩強.C程序設計試題匯編.北京:清華大學出版社,2006年3月第2版夏寬理.C語言程序設計.北京:中國鐵道出版社,2006年2月第1版夏寬理.C語言程序設計上機指導與習題解答.北京:中國鐵道出版社,2006年2月第1版王士元?C高級實用程序設計.北京:清華大學出版社,1996年1月第1版七、實驗報告要求在機器上交作業(yè),每次實驗成績分為優(yōu)、良、及格、不及格,未參加的為0分。要求認真書寫實驗報告。實驗報告編寫要求:實驗題目實驗要求程序流程圖調(diào)試過程(實驗過程出現(xiàn)的問題、解決的方法)程序代碼及運行結(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"voidmain(){inta,b,sum;printff^Pleaseinputtwointegernumbers:*");scanf(//%d%d/;&a/&b);sum=a+b;printf(//%d+%d=%d/\a/b/sum);}3、具體操作:輸入程序,然后進行編譯連接。若在編譯中有詞法或語法錯誤,則根據(jù)提示進行修改,再進行調(diào)試,直到?jīng)]有語法錯誤。運行程序,依下列不同的方式輸入數(shù)據(jù),査看程序執(zhí)行結(jié)果。12.34 /12/34 /12<Tab>34/【實驗分析與討論】總結(jié)C程序的基本結(jié)構(gòu)和書寫規(guī)則。2、分析調(diào)試過程中常見的錯誤提示和解決策略。實驗二:C語言程序的單步調(diào)試實驗三:選擇結(jié)構(gòu)的程序設計【目的與要求】1、 了解三種基本數(shù)據(jù)類型的定義。2、 掌握各種不同運算符及其對應的表達式的使用。3、 熟練掌握if語句和switch語句的使用【實驗內(nèi)容】一、判斷方程ax2+bx+c=0有幾個解,若有,則輸出其解。1、算法分析:對于方程ax2+bx+c=0的解,存在以下情況:①a=0,不是一元二次方程;②b2-4ac=0,有兩個相等的實根;③bMaOO,^兩個不等的實根;④bMac<0,<兩個共軌復根。⑴定義變量:a,b,c,xl,x2,d輸入a,b,cif(a==0)不是一元二次方程 elsed=b2-4ac根據(jù)d的取值,輸出方程根的情況:if(b2-4ac==0) xl=x2=-b/(2*a)elseif(b2-4ac>0) xl=(-b+sqrt(d))/(2*a) x2=(-b-sqrt(d))/(2*a)elsexl=(-b+sqrt(-d)i)/(2*a) x2=(-b-sqrt(-d)i)/(2*a)2、程序代碼:#include"stdio.h"#include"math.h"voidmain(){floataQcpc:L,x2,d;prints請輸入ax4bx+c=0方程三系數(shù)值:");scanf(z/%f%f%f;&巧&b,&c);if(abs(a)<=le-6) 〃a==0printf(-該方程非一元二次方程?\『):else{d=sqr(b)-4*a*c;if(abs(d)<=le-6) //sqr(b)-4*a*c==0printf(“該方程的兩個相等實根為:xl/x2=%4.2f;-b/(2*a));elseif(abs(d)>le-6){xl=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf(“該方程的兩個不等實根為:x空%4?2f,x2=%4?2f”川應);}else//sqr(b)-4*a*c<0printfC該方程的兩個復數(shù)根為:xl=%4.2f+%4.2fi/x2=%4.2f-%4.2fiw#?b/(2F,sqrt(?d)/(2"),?b/(2F,sqrt(?d)/(2"));}}二、簡單的菜單程序設計。假設要求設計一菜單如下:主菜單1 漢字—拼音—英文1、 算法分析:(1)根據(jù)要求使用輸出語句將上述菜單輸出,提示按要求選擇。(2)運用if語句或switch語句,編寫分支結(jié)構(gòu)。2、 程序代碼:#include"stdio.h"voidmain(){inti;printf(//\n\n\n========主菜單========\n");printf(“ 仲國門printf(“ 1??―漢字\「);printf(- 2一??拼音\「);printf(- 3……英文\「);printf(“請選擇:”);scanf(“%d",&i);switch(i){casel:printf("中國\n");break;case2:printf(“ China\n");break;case3:printf(/z Zhongguo\n");break;【課后練習】判斷一年份是不是閏年。2、從鍵盤上輸入1?7之間的數(shù)字,輸出表示一個星期中對應某一天的英文單詞?!緦嶒灧治雠c討論】1、 總結(jié)分支選擇結(jié)構(gòu)的設計方法與技巧。2、 掌握簡單菜單的設計。實驗四:循環(huán)結(jié)構(gòu)的程序設計【目的與要求】1、掌握三種循環(huán)語句在編程中的使用。2、理解break語句和continue語句在循環(huán)結(jié)構(gòu)中的不同作用。3、了解循環(huán)的嵌套,學會窮舉算法與迭代算法?!緦嶒瀮?nèi)容】一、 輸入兩個正整數(shù),求出它們的最大公約數(shù)與最小公倍數(shù)。1、 算法分析:[輾轉(zhuǎn)相除法]對于兩個數(shù)m和n,將大數(shù)放在m中,小數(shù)放在n中,用n去除m,若余數(shù)為0,則n為最大公約數(shù),否則將n作為m,余數(shù)作為n,再用n去除m,直到余數(shù)為0,則n為最大公約數(shù)。2、 程序代碼:#include"stdio.h"#include"math.h"voidmain(){intm^^max^in;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ù)為:%d\nM/m);printf("最小公倍數(shù)為:%d\n,\min/m);}二、 將一張100元錢,換成10元,20元,50元零錢,問有多少種不同的換法(假設三種零錢每種都可不出現(xiàn))。1、 算法分析運用窮舉算法實現(xiàn):考慮到三種零錢各種可以不出現(xiàn),則各自的張數(shù)范圍如下:10元 0張到10張20元 0張到5張507U 0張到2張并且要考虎到共數(shù)只有一張100元票子。2、 程序代碼:#include"stdio.h"voidmain(){intTencount,Twecount,Fifcount,i=0;for(Tencount=0;Tencount<=10;Tencount++)for(Twecount=0;Twecount<=5;Twecount++)for(Fifcount=0;Fifcount<=2;Fifcount++)if(Tencount*10+Twecount*20+Fifcount*50==100)printf(”第%d種換法為:10元%d張20元%d張50元%d張\n”,H^+^Tencoun^Twecoun^Fifcount);}TOC\o"1-5"\h\z【課后練習】 *1、 求1一100之間,能被5整除的數(shù)之和。 ***2、 判斷任一個數(shù)是否是質(zhì)數(shù)。 *****3、 輸出一有規(guī)則的圖形,如右圖。 ***?【實驗分析與討論】1、分析總結(jié)for語句,while語句,do-while語句的用法。2、巧用break語句和continue語句。實驗五: 數(shù)組及其應用【目的與要求】1、 掌握一維數(shù)組與二維數(shù)組的使用。2、 掌握字符數(shù)組與字符串的區(qū)別與使用。3、熟練掌握與數(shù)組有關(guān)的算法(選擇排序與冒泡排序、査找與插入)?!緦嶒瀮?nèi)容】一、輸入一個整數(shù),將其插入一含有9個數(shù)的有序序列中,確保插入后其仍然有序,。1、算法分析:①將待插入的數(shù)與序列中的每個數(shù)進行比較,找到其插入的具體位置i;②將從第i個數(shù)組元素開始,一直到原數(shù)組中的最后一個元素,整體往后移,空出一空間來存儲待插入的整數(shù)。2、程序代碼:#include"stdio.h"voidmain(){inta[10]={2/5J/ll/14/19/21/33/67}Ak/m;printf(“原數(shù)組為:”);for(i=0;i<9;i++) printf("%4d〃,a[i]);printf(An請輸入待插入的整數(shù):”);scanf("%d〃,&m);for(i=0;i<9;i++)if(m<=a[i])break;//査找待插入的位置for(k=9;k>=i;k-)a[k]=a[k.l]; 〃移位,準備插入新的整數(shù)a[i]=m; printf(“新數(shù)組為:”);for(i=0;i<10;i++) printf("%4d",a[i]);}二、編程實現(xiàn):將字符串str2連接到字符串strl后,構(gòu)成新的字符串strl。1、算法分析:本程序即實現(xiàn)字符串處理函數(shù)strcat()的功能。兩字符串strl和str2進行連接,要注意的是字符串的結(jié)束標志。2、程序代碼:#include''stdio.h"#include"string.h"voidmain(){charstrl[40],str2[20],iJ,lenl,len2;printf(”請輸入字符串strl:“); gets(strl);lenl=strlen(strl);printf("請輸入字符串str2:"); gets(str2);Ien2=strlen(str2);for(i=lenlj=0;j<len2;i++J++)strl[i]=str2[j];strl[i]='\0';printfC噺的字符串strl為:”);puts(strl);}【課后練習】1、 判斷一方陣是不是對稱矩陣。2、 實現(xiàn)兩個字符串拷貝的功能。3、 運行折半查找法,在一個有序序列中査找某一特定的數(shù)?!緦嶒灧治雠c討論】1、 分析兩種基本排序算法的核心與兩者的不同之處。2、 在實現(xiàn)字符串處理函數(shù)時的一些注意事宜及其實現(xiàn)方法。3、 討論二維數(shù)組解決矩陣與行列式。實驗六: 函數(shù)及其應用【目的與要求】1、 掌握C中函數(shù)的定義、調(diào)用及設計。2、 掌握函數(shù)嵌套調(diào)用、遞歸調(diào)用的設計。3、 掌握變量、函數(shù)的作用域及存儲類。【實驗內(nèi)容】一、設計一個子函數(shù)對n個整數(shù)進行排序,由主函數(shù)從鍵盤接收若干個數(shù),調(diào)用子函數(shù)進行排序,并在主函數(shù)中進行輸出顯示。1、 算法分析:子函數(shù)的設計 以兩個參數(shù)來實現(xiàn),一個是接收主函數(shù)傳來的數(shù)組首地址,另一個是持排序的整數(shù)個數(shù),如fun(inta[],intn);主函數(shù)的實現(xiàn) 定義一整型數(shù)組,從鍵盤上接收若干個整數(shù),調(diào)用子函數(shù)f",再將最后的結(jié)果輸出。2、 程序代碼:#include''stdio.h"voidfun(inta[],intn) //選擇排序算法{intfor(i=0;i<n-l;i++)for(j=i+l;j<n;j++)if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j]=t;}}voidmain(){inta[10],i;for(i=0;i<10;i++)scanf("%cT:&a[i]);printf(”輸入的數(shù)值序列為:”);for(i=0;i<10;i++)printf(”%4cT,a[i]);printf(,,\n,'); fun(a,10);printf(”輸入的數(shù)值序列為:“);for(i=0;i<10;i++) printf("%4d,,/a[i]);}二、輸入任意兩數(shù)m,n的值,輸出下列表達式的值。S=1、 算法分析①編寫一函數(shù)fac(n),返回n!的值。② 編寫主函數(shù),從鍵盤輸入m,n的值,調(diào)用上述陽c()函數(shù),計算表達式的值,并將其輸出。2、 程序代碼#include"stdio.h"longfac(intn){if(n==l)return1;elsereturnn*fac(n-l);}voidmain(){int floats;printff^pleaseinput2integernumbers/');scanf(//%d%d,\&m/&n);if(m<n){t=m;m=n;n=t;}printf(/<s=%f\fac(m)/(fac(m-n)fac(n)));}【課后練習】1、若正整數(shù)A恰好出現(xiàn)在其平方數(shù)的右側(cè),則稱A為一個同構(gòu)數(shù)。如:5,6,76。求100以內(nèi)的所有同構(gòu)數(shù)。要求:(1)編寫一子函數(shù)intfun(intn),判斷給定正整數(shù)n是不是同構(gòu)數(shù),若是,返回1,否則,返回0。(2)編寫主函數(shù),調(diào)用函數(shù)fun(),尋找并輸出100以內(nèi)的所有同構(gòu)數(shù)。在輸出同構(gòu)數(shù)的同時,要輸出其平方的值。2、運用遞歸,求任一個字符串的長度?!緦嶒灧治雠c討論】1、 被調(diào)函數(shù)的實現(xiàn)及調(diào)用過程。2、 簡單遞歸問題的實現(xiàn)。實驗七:指針及其應用【目的與要求】1、 了解指針的定義與應用。2、 掌握使用指針變量的程序設計。3、 了解使用函數(shù)指針的程序設計。4、 了解使用指針數(shù)組的程序設計。【實現(xiàn)內(nèi)容】一、設計一程序,將兩個變量的值進行交換。1、算法分析:(1)編寫一個函數(shù)swap(int*P/int*q),交換兩個參數(shù)指針所指的數(shù)據(jù)。(2)編寫主函數(shù),調(diào)用函數(shù)swap,將兩個變量的值進行交換。2、程序代碼:#include"stdio.h"voidswap(int*pjnt*q);voidmain(){inta,b;printf(“請輸入兩個整數(shù):”);scanf(//%d%d/;&a/&b);printf(“兩個數(shù)交換前順序為:a=%d,b=%d”,a,b);swap(&a,&b);printf("兩個數(shù)交換后順序為:a=%d/b=%dw風b);voidswap(int*pjnt*q){intt;t=*p;*p=*q;*q=t;}二、編程實現(xiàn):運用指針將字符串str2連接到字符串strl后,構(gòu)成新的字符串strl。1、算法分析:本程序即實現(xiàn)字符串處理函數(shù)strcat()的功能。兩字符串strl和str2進行連接,要注意的是字符串的結(jié)束標志,并運用指向字符串的指針來實現(xiàn)。2、程序代碼:#include"stdio.h"#include"string.h”voidmain(){charstrl[20]/str2[10]/*p=strl/*q=str2JJenlJenZ;printf(”請輸入字符串strl:"); gets(strl);lenl=strlen(strl);p=p+lenl-l;printf("請輸入字符串str2:"); gets(str2);Ien2=strlen(str2);for(j=0;j<len2;j++)*(++p)=*(q++);strl[lenl+len2]=,\0,;printf「新的字符串strl為:”);puts(strl);【課后練習】1、 運用指向數(shù)組的指針,求一數(shù)組中所有元素之和。2、【實驗分析與討論】實驗八:結(jié)構(gòu)體及其應用【目的與要求】1、 了解結(jié)構(gòu)體類型的定義。2、 掌握結(jié)構(gòu)體類型變量的使用?!緦嶒瀮?nèi)容】有10個學生,每個學生包括學號、姓名、三門課的成績,從鍵盤輸入10個學生數(shù)據(jù),要求輸出三門課中每一門課的平均成績,以及最高分學生的數(shù)據(jù)。1、 算法分析:定義一個結(jié)構(gòu)體類型,其中含有學號、姓名、三門課的成績、總分數(shù)據(jù);先后根據(jù)要求解決上述問題。2、 程序代碼:#include"stdio.h"typedefstructstu{intnumber;charname[4];floatIenl,len2,len3;floatscore;}student;voidmain(){studentstu[10];inti/lag;floatave[3bsum[3]={0O0},max=0;printf("請輸入10位同學的所有信息:”);for(i=0;i<10;i++){scanf(,,%d%s%f%f%f,/&stu[i].number,stu[i].name,&stu[i]?lenl>p&stu[i].len2,&stu[i].len3);stu[i].score=stu[i].lenl+stu[i].len2+stu[i].len3;if(stu[i].score>=max){max=stu[i].score;flag=i;}sum[0]+=stu[i].lenl;sum[l]+=stu[i].len2;sum[2]+=stu[i].len3;}for(i=0;i<3;i++)ave[i]=s呃[i]/3;printf(”三門課的平均成績分別為“);for(i=0;i<3;i++)printf(”%6?2化ave[i]);printf(H\n最高分是:%d%s%6.2f%6.2f%6?2化stufflag].numbe^^ufflag].lenl,stu[flag].len2,stu[flag].len3);}【實驗分析與討論】13個人圍成一圈,從第1個人開始順序報號1、2、3。凡報到“3”者退出圈子,找出最后留在圈子中的人原來的序號。實驗九:鏈表的處理【目的與要求】1、了解鍵表的相關(guān)概念。2、掌握單向鍵表的創(chuàng)建、編歷、插入、刪除等簡單處理。【內(nèi)容】創(chuàng)建一個鏈表。#include"stdio.h"#include"stdlib.h"typedefstructlist{intdata;structlist*next;}list;voidmain(){list*head/ptr;intnumj;ptr=(list*)malloc(sizeof(list));head=ptr;printf(HRleaseinput5numbers:");for(i=0;i<5;i++){scanf("%cT;&num);ptr->data=num;ptr->next=(list*)malloc(sizeof(list));if(i==4)ptr->next=NULL;elseptr=ptr->next;}ptr=head;printf("T

溫馨提示

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

評論

0/150

提交評論