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

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計實驗指導(dǎo)書課程編號:課程名稱:C語言程序設(shè)計實驗學(xué)時:44、本實驗課的性質(zhì)、任務(wù)與目的熟悉該語言中的語法、 通過學(xué)習(xí)能夠運 訓(xùn)練學(xué)生進行復(fù)雜程序設(shè)本實驗課目的是使學(xué)生掌握C語言編程的常用方法, 詞法規(guī)則,為以后進行軟件開發(fā)和學(xué)習(xí)后繼專業(yè)課程打下基礎(chǔ)。 用C語言中的各個知識點編寫能完成一定功能的程序。計的技能和培養(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é)時。五、考核方式與評分辦法實驗總成績=出勤情況*10%+實驗報告*2

3、0%+平時*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版七、實驗報告要求在機器上交作業(yè),每次實驗成績分為優(yōu)、良、及格、不及格,未參加的為0分。要求認(rèn)真書寫實驗報

4、告。實驗報告編寫要求:1 .實驗題目2 .實驗要求3. 程序流程圖4 .調(diào)試過程(實驗過程出現(xiàn)的問題、解決的方法)5 .程序代碼及運行結(jié)果。八、實驗內(nèi)容實驗一 :C語言運行環(huán)境的認(rè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 ”void main()int a,b,sum;printf( “

5、 Please input two integer numbers:n” );scanf( “ %d%d ”,&a,&b);sum=a+b;printf( “ d+%d=% ”d ,a,b,sum);3、具體操作:(1 )輸入程序,然后進行編譯連接。若在編譯中有詞法或語法錯誤,則根據(jù)提示進行修改,再進行調(diào)試,直到?jīng)]有語法錯誤。(2 )運行程序,依下列不同的方式輸入數(shù)據(jù),查看程序執(zhí)行結(jié)果。 12_ 34/ 12 /34/ 12<Tab>34/【實驗分析與討論】1、總結(jié)C程序的基本結(jié)構(gòu)和書寫規(guī)則2、分析調(diào)試過程中常見的錯誤提示和解決策略。實驗二:C語言程序的單步調(diào)試實驗

6、三:選擇結(jié)構(gòu)的程序設(shè)計【目的與要求】1、了解三種基本數(shù)據(jù)類型的定義。2、掌握各種不同運算符及其對應(yīng)的表達式的使用。3、熟練掌握if語句和switch 語句的使用【實驗內(nèi)容】、判斷方程2+bx+c=0有幾個解,若有,則輸出其ax解。1、算法分析:對于方程2+bx+c=0的解,存在以下情況:a=0,不是一元二次方程; b2-ax4ac=0,有兩個相等的實根; b2-4ac>0,有兩個不等的實根;b2- 4ac<0,有兩個共軛復(fù)根。(1) 定義變量:a,b,c,x1,x2,d(2) 輸入 a,b,c一 2(3) if(a=0)不是一兀二次方程else d= b -4ac根據(jù)d的取值,輸出

7、方程根的情況:2if(b -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(“請輸入ax);2+bx+c=0 方程三系數(shù)值:”scanf(“ f%f%f”,&a,&b,&c);if (abs(a)&l

8、t;=1e-6)/a=0printf(該方程非兀二次方程n”);elsed=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);printf(“該方程的兩個不等實根為:else / sqr(b)-4*a*c<0printf(“該方程的兩個復(fù)數(shù)根為:x1=%4.2f+%4.2fi,x2=%4.2f-%4.2fi” ,-

9、b/(2*a),sqrt(-d)/(2*a), -b/(2*a),sqrt(-d)/(2*a);x1=%4.2f,x2=%4.2f,x1,x2);、簡單的菜單程序設(shè)計。假設(shè)要求設(shè)計一菜單如下:主菜單漢字拼音英文(2) 運用if 語句或switch語句,編寫分支結(jié)構(gòu)。2、程序代碼:#include“ stdio.hvoid main()int i;printf(“ nnn:主菜單n ”printf(“(中國)”)printf(“ 1-漢字n );printf(“ 2-拼音n );printf(“3英文n );printf(“請選擇:”);scanf(“%d ”,&i);switch(i)

10、case 1:printf(a中國 n ” ) ; break;case 2:printf(“China'n” );break;);aZhong guon(1) 根據(jù)要求使用輸出語句將上述菜單輸出,提示按要求選擇?!?);break;1、算法分析:case 3:printf( 【課后練習(xí)】1、判斷一年份是不是閏年2、 從鍵盤上輸入1-7之間的數(shù)字,輸出表示一個星期中對應(yīng)某一天的英文單詞?!緦嶒灧治雠c討論】1、總結(jié)分支選擇結(jié)構(gòu)的設(shè)計方法與技巧2、掌握簡單菜單的設(shè)計。實驗四:循環(huán)結(jié)構(gòu)的程序設(shè)計【目的與要求】1、掌握二種循環(huán)語句在編程中的使用。2、 理解break 語句和continue語句

11、在循環(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ù)為0,則n為最大公約數(shù),否則將n作為m,余數(shù)作為n,再用n去除m,直到余數(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<

12、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元,50元零錢,問有多少種不同的換法(假設(shè)三種零 錢每種都可不出現(xiàn))。1、算法分析元0張到10張元0張到5張元0張到2張100元票子運用窮舉算法實現(xiàn):考慮到三種零錢各種可以不出現(xiàn),則各自的張數(shù)范圍如下:102050并且要考慮到共數(shù)只有一張2、程序代碼:#include "stdio.h"void main()int Tencount,Twecount,F

13、ifcount,i=0;for(Tencount=0;Tencount<=10;Tencount+)for(Twecount=0;Twecount<=5;Twecount+) for(Fifcount=0;Fifcountv=2;Fifcount+)if (Tencount*10+Twecount*20+Fifcount*50=100) printf("第%d種換法為:10元d張20 元%d張50 元%d張n",+i,Tencount,Twecount,Fifcount);【課后練習(xí)】*1、 求1 100之間,能被 5整除的數(shù)之和。* * *2、 判斷任一個數(shù)是

14、否是質(zhì)數(shù)。* * * *3、 輸出一有規(guī)則的圖形,如右圖。* * *【實驗分析與討論】1、 分析總結(jié) for 語句,while 語句,do-while 語句的用法。2、巧用 break 語句和continue 語句。實驗五:數(shù)組及其應(yīng)用【目的與要求】1、掌握一維數(shù)組與二維數(shù)組的使用。2、掌握字符數(shù)組與字符串的區(qū)別與使用。3、熟練掌握與數(shù)組有關(guān)的算法(選擇排序與冒泡排序、查找與插入)?!緦嶒瀮?nèi)容】一、輸入一個整數(shù),將其插入一含有9個數(shù)的有序序列中,確保插入后其仍然有序,。1 、算法分析:將待插入的數(shù)與序列中的每個數(shù)進行比較,找到其插入的具體位置將從第i個數(shù)組元素開始,一直到原數(shù)組中的最后一個元素

15、,整體往后 移,空出一空間來存儲待插入的整數(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<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-)ak=ak-1;/移位,準(zhǔn)備插入新的整數(shù)ai=m; p

16、rintf(for(i=0;i<10;i+) printf(、編程實現(xiàn):將字符串str2“新數(shù)組為:”);strl ?!?4d ”,ai);連接到字符串strl后,構(gòu)成新的字符串1、算法分析:strcat ()的功能。兩字符串 strl 和str2進行連本程序即實現(xiàn)字符串處理函數(shù) 接,要注意的是字符串的結(jié)束標(biāo)志。2、程序代碼:#include "stdio.h" #include "string.h"void main()char str140,str220,i,j,len1,len2;printf("請輸入字符串str1:")

17、;gets(str1);len1=strlen(str1);printf("請輸入字符串str2:");gets(str2);len2=strlen(str2);for(i=len1,j=0;jvlen2;i+,j+)str1i=str2j;str1i='0'printf("新的字符串strl 為:”);puts(strl);【課后練習(xí)】1、判斷一方陣是不是對稱矩陣。2、實現(xiàn)兩個字符串拷貝的功能。3、運行折半查找法,在一個有序序列中查找某一特定的數(shù)【實驗分析與討論】1、分析兩種基本排序算法的核心與兩者的不同之處。2、在實現(xiàn)字符串處理函數(shù)時的一些注意

18、事宜及其實現(xiàn)方法。3、討論二維數(shù)組解決矩陣與行列式。實驗六:函數(shù)及其應(yīng)用【目的與要求】1、掌握C中函數(shù)的定義、調(diào)用及設(shè)計2、掌握函數(shù)嵌套調(diào)用、遞歸調(diào)用的設(shè)計3、掌握變量、函數(shù)的作用域及存儲類?!緦嶒瀮?nèi)容】排序,并在主函數(shù)中進行輸出顯示1、算法分析: 子函數(shù)的設(shè)計持排序的整數(shù)個數(shù),如 主函數(shù)的實現(xiàn) 最后的結(jié)果輸出。以兩個參數(shù)來實現(xiàn),一個是接收主函數(shù)傳來的數(shù)組首地址,fun(int a,int n);定義一整型數(shù)組,從鍵盤上接收若干個整數(shù),調(diào)用子函數(shù)另一個是fun,再將2、程序代碼:#include "stdio.h"void fun(int a,int n)/int i,j,

19、t;for(i=0;i<n-1;i+)for(j=i+1;jvn;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;

20、i+) printf("%4d",ai);、輸入任意兩數(shù)S=m,n的值,輸出下列表達式的值m!(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:);scanf(

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

22、調(diào)用過程2、簡單遞歸問題的實現(xiàn)。實驗七:指針及其應(yīng)用【目的與要求】1、了解指針的定義與應(yīng)用。2、掌握使用指針變量的程序設(shè)計。3、了解使用函數(shù)指針的程序設(shè)計。4、了解使用指針數(shù)組的程序設(shè)計?!緦崿F(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ù):”);scanf(“ %d%d

23、”,&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)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)志,并運用指向字符串的指針來實現(xiàn)。2、程序代碼:#include "st

24、dio.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;jvlen2; j+)*(+p)=*(q+);str1len1+len2='0'printf(" 新

25、的字符串 strl 為:”);puts(strl);【課后練習(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ù)要 求解決上述問題。2、程序代碼:#include "stdio.h" typedef struct stuint nu

26、mber;char name4;float Ien1,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=O;i<1O;i+)scanf("%d%s%f%f%f", &stui.number, ,& stui.len1, &stui.len2, &stui.len3);stui.score= stui.len1+s

27、tui.len2+stui.len3;if(stui.score>=max) sum0+=stui.len1;for(i=0;i<3;i+) avei=sumi/3;printf(" for(i=0;i<3;i+) printf("%6.2f",avei);printf("n最高分是:max=stui.score; flag=i;sum1+=stui.len2; sum2+=stui.len3;三門課的平均成績分別為");%d %s %6.2f %6.2f%6.2f",stuflag.number,stuflag.n

28、ame,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" typedef struct listint data;struct list *next;list;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=NULL; else ptr=ptr-&

溫馨提示

  • 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

提交評論