華中科技大學C語言實驗報告.doc_第1頁
華中科技大學C語言實驗報告.doc_第2頁
華中科技大學C語言實驗報告.doc_第3頁
華中科技大學C語言實驗報告.doc_第4頁
華中科技大學C語言實驗報告.doc_第5頁
免費預覽已結(jié)束,剩余61頁可下載查看

下載本文檔

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

文檔簡介

1、課程實驗報告課程名稱:C語言程序設計專業(yè)班級:CS1409學號:U201414813姓名:唐禮威指導教師:吳海報告日期:2015 年 6月 24日計算機科學與技術學院目錄1第一次實驗 .11.1實驗目的 . .11.2實驗內(nèi)容 . .11.3實驗小結(jié) . .102第二次實驗 .112.1實驗目的 . .112.2實驗內(nèi)容 . .112.3實驗小結(jié) . .163第三次實驗 .163.1實驗目的 . .163.2實驗內(nèi)容 . .163.3實驗小結(jié) . .254第四次實驗 .254.1實驗目的 . .254.2實驗內(nèi)容 . .254.3實驗小結(jié) . .305第五次實驗 .315.1實驗目的 . .3

2、15.2實驗內(nèi)容 . .315.3實驗小結(jié) . .376第六次實驗 .376.1實驗目的 . .376.2實驗內(nèi)容 . .376.3實驗小結(jié) . .447第七次實驗 .447.1實驗目的 . .447.2實驗內(nèi)容 . .447.3實驗小結(jié) . .558第八次實驗 .558.1實驗目的 . .558.2實驗內(nèi)容 . .558.3實驗小結(jié) . .639實驗總結(jié) .631 第一次實驗1.1 實驗目的( 1) 熟練掌握各種運算符的運算功能,操作數(shù)的類型,運算結(jié)果的類型及運算過程中類型轉(zhuǎn)換,重點是 C 語言特有的運算符,例如位運算符,問號運算符,逗號運算符等;熟記運算符的優(yōu)先級和結(jié)合性。( 2)掌握 i

3、f , while , for 循環(huán)語句的用法與含義。( 3)掌握簡單 C程序(順序結(jié)構(gòu)程序)的編寫方法。( 4)掌握 getchar, putchar, scanf和 printf函數(shù)的用法( 5)學會簡單使用函數(shù)調(diào)用1.2 實驗內(nèi)容(一)使用兩個變量實現(xiàn)兩數(shù)交換【部分程序代碼: 】#include void main()/預處理主函數(shù)int a,b;/定義兩變量a=a+b;b=a-b;a=a-b;/ 精華部分,實現(xiàn)交換減去要點說明: 要先用一個數(shù)儲存兩個數(shù)的值,于是將a+b 的值賦給b 即獲得 a 的值,賦給b。在從中減去新的b 即得原 b 值,賦給a,從中a 便實現(xiàn)了兩變量值的交換。(二

4、)程序設計( 1)編寫一個程序,輸入字符,如果是大寫字母,則將轉(zhuǎn)換成對應的小寫,否則的值不變,最后輸出。I 、程序框圖開始輸入字符cc為大寫Y將 c 轉(zhuǎn)換成對應字母的小寫N輸出字符c結(jié)束思路: 小寫字母的ASCLL碼比其相對應的大寫字母ASCLL碼值高 32,所以,可用if語句進行判斷大小寫,再通過簡單計算進行轉(zhuǎn)化。II 、部分程序代碼char c=getchar();/定義字符變量cif (c=A&c m;/向右移位x = x 24;b = x 16 & 0x000000ff;c = x 8 & 0x000000ff;d = x & 0x000000ff;printf(%d.%d.%d.%d

5、, d, c, b, a);system( pause );【測試】輸入 676879571 應輸出 211.92.88.40( 三) 自設題( 1)設計一個程序,在字符模式下,以某個字符拼出“王”漢字圖形,顯示輸出。II 、部分程序代碼printf( * n);printf(*n);printf(*n);printf(*n);printf(*n);printf(*n);printf( * n);( 2)輸入一個華氏溫度,要求輸出攝氏溫度。公式為c=5/9*(f-32)。I 、程序框圖開始輸入華氏溫度計算得攝氏溫度輸出攝氏溫度結(jié)束II 、部分程序代碼float f,c;/定義浮點型變量floa

6、t question(float x);printf(請輸入需要轉(zhuǎn)換為攝氏溫度的華氏溫度:n);scanf(%f,&f);c=question(f);printf(華氏溫度 %0.1f 轉(zhuǎn)換為攝氏溫度為%0.1f,f,c);float question(float x)/函數(shù)調(diào)用,返回計算得到的值float a;a=5.0/9*(x-32);/此部剛開始遇到小問題,應注意a的類型, 5寫為 5.0return a;【測試】(3)設計一個程序,完成如下功能:輸出一個三位數(shù),將它反向輸出。如輸入 127,輸出721。I 、程序框圖開始輸入一個三位數(shù)用取余、求商等方式將每一位分離反向排列每一位數(shù)使組

7、成新的數(shù)輸出所得得數(shù)結(jié)束II 、部分程序代碼int a,b,c;/定義三個整形變量printf(請輸入三位數(shù):n);scanf(%d,&a);b=a%10,c=(a%100)/10,a=a/100;a=b*100+c*10+a;printf(逆序數(shù)為 %d,a);【測試】(4) 設計 2 種完成計算MAXx,y,z的程序。I 、程序框圖法一:表達式a * (a=b & a=c) + b*(b=a & b=c)+c *(c=a & c=b)的值即為最大值。法二:開始輸入 a,b,c,a bNb cYYNYa cN輸出a輸出c輸出b結(jié)束II 、部分程序代碼法一:#includeint main()

8、int a,b,c,d;/定義四個整形變量scanf(%d%d%d,&a,&b,&c);d = a * (a = b & a = c) + b*(b = a & b = c) + c *(c = a & c = b); printf( 最大值為 %d,d);法二:#include int main()int question(a,b,c);/int a,b,c,big;/printf(請輸入三個數(shù)n);scanf(%d%d%d,&a,&b,&c);big=question(a,b,c);/printf(%d,%d,%d中最大數(shù)為簡單的函數(shù)調(diào)用定義四個變量子函數(shù)返回值給主函數(shù)%d,a,b,c,b

9、ig);int question(a,b,c)/簡單的求最大值的子函數(shù)int d;if(a=b)d=b;if(b=c)d=c;else if(a=c)d=c;else d=a;return d;【測試】法一:法二:(5) 設計計算一元二次方程的根的程序。I 、程序框圖開始輸入系數(shù)a,b, cb2-4*a*cN0Y輸出“無實根”輸出 x1=(-b+sqrt(b*b-4*a*c)/(2*a)x2=(-b-sqrt(b*b-4*a*c)/(2*a)結(jié)束II 、部分程序代碼#include#include/調(diào)用庫函數(shù)中的函數(shù)intmain()double a = 0, b, c, x1, x2;/定義

10、變量printf( 本程序用于計算形如ax2+bx+c=0 的一元二次方程的實根printf( 請依次輸入 a, b, c的值(以空格分開):n);while(a = 0)n );scanf( %lf %lf %lf, &a, &b, &c);if(a = 0)printf( 一元二次方程a不能為 0,請重輸:n );elsebreak ;if(b*b - 4 * a*c0)printf(n無 實 根 ! nn);elsex1 = (-b + sqrt(b*b - 4 * a*c) / (2 * a);x2 = (-b - sqrt(b*b - 4 * a*c) / (2 * a);print

11、f( 方程兩根:x1=%lf x2=%lf , x1, x2);system( pause );return0;【測試】( 6 )根據(jù)任意三角形的面積公式( 海倫公式) : S = p (p-a)( p-b)( p-c ),其中,p=(a+b+c)/2, a.b.c為三角形三邊,設計一個程序計算任意三角形的面積。I 、設計說明首先輸入三角形三邊長,然后由海倫公式得出結(jié)果II 、部分程序代碼#include #include int main()float a,b,c,s,t;printf(input three edge of the trianglen);scanf(%f%f%f,&a,&b

12、,&c);s=(a+b+c)/2;t=s*(s-a)*(s-b)*(s-c);float area=sqrt(t);printf(area=%fn,area);return 0; 【測試】1.3 實驗小結(jié)本次實驗熟悉了開發(fā)環(huán)境,并自己動手實踐了一些簡單的小程序,在開發(fā)程序的過程中我發(fā)現(xiàn)一些小的問題往往會破壞整個程序的正常運行,而且非常不容易發(fā)現(xiàn),所以我認為在我們開發(fā)程序的過程中, 必須要保證好整個源碼的格式, 并且要是分之小心。 目前我能夠運用簡單的函數(shù)調(diào)用,分得清數(shù)據(jù)的類型,掌握了幾個循環(huán)語句的使用方法,但均不夠熟練,在以后的實踐過程中還會去不斷提高自己,成為一個有基本職業(yè)素養(yǎng)的程序開發(fā)人員

13、。2 第二次實驗2.1 實驗目的( 1)掌握復合語句、 if 語句、 switch 語句的使用,熟練掌握 for 、 while 、 do-while 三種基本的循環(huán)控制語句的使用,掌握重復循環(huán)技術,了解轉(zhuǎn)移語句與標點語句。( 2)熟練運用 for 、 while 、 do-while 語句來編寫程序。( 3)練習轉(zhuǎn)移語句和標點語句的使用。( 4)使用集成開發(fā)環(huán)境中的調(diào)試功能:單步執(zhí)行、設置斷點、觀察變量值2.2 實驗內(nèi)容(1) 源程序改錯【部分程序代碼: 】scanf( “%d”,n)改為scanf(“ %d”, &n)/錯誤,n 要加上取地址符&for(i=1,i=n,i+)/錯誤,應以;

14、間隔改為for( i=1;i=n;i+)( 2)用 while 替換 for 循環(huán)求 n!定義變量n,計數(shù)變量i ,輸出結(jié)果變量s程序框圖開始輸入 n 的值Y判斷 i=n?計算 s=s*i;i+輸出 S結(jié)束( 3)用 do-while 替換 for 循環(huán)求 n!定義變量n,計數(shù)變量i ,輸出結(jié)果變量s程序框圖開始輸入 n 的值計算 s=s*i;i+Y判斷 ifactorial(i);)/定義 i ,s循環(huán)求出最小整數(shù)ii+;int factorial(x)/定義求n!的子函數(shù)int i,s=1;/定義子函數(shù)中i , sfor(i=1;i=x;i+)s=s*i;return s;思路 ; 拿 i

15、 !和 s 比較大小, i 逐次加 1,直到求出最小i( 5)求稅金 if 版【部分程序代碼: 】void tax(x);/聲明子函數(shù)int n;/定義工資為變量nscanf(%d,&n);tax(n);void tax(x)/定義子函數(shù)if(x1000)printf(不收取稅金 );else if(1000=x&x2000)printf(稅金為 %0.2f,x*0.05);else if(2000=x&x3000)printf(稅金為 %0.2f,x*0.10);else if(3000=x&x4000)printf(稅金為 %0.2f,x*0.15);else if(4000=x&x500

16、0)printf(稅金為 %0.2f,x*0.20);else if(5000x)printf(稅金為 %0.2f,0.25*x);遇到的問題: 當scanf 里面輸入的是浮點型變量時程序運行出錯,函數(shù)本身的一個bug,所以以后再scanf 里面不能輸入浮點型變量經(jīng)上網(wǎng)查閱,發(fā)現(xiàn)這是scanf( 6)求稅金switch版【部分程序代碼: 】int x,a;/定義 x,aprintf(請輸入金額:);scanf(%d,&x);a=x/1000;/計算工資千位數(shù)字遇到的問題:case 語句后面必須加上break,不然該條語句不會停止,會繼續(xù)向下走( 7) 字符復制【部分程序代碼: 】#includ

17、e#includeint i=1;char s;/定義計數(shù)變量定義字符串變量is( 8)輸出逆序數(shù)【部分程序代碼: 】int a1000,n,i;/定義數(shù)組afor (i=1;n/10!=0|n%10!=0;)ai=n%10;/給數(shù)組ai賦值末尾一位printf(%d,ai);n=n/10;( 9)楊輝三角【部分程序代碼: 】#define N 10int c(int x,int y);/定義 N為 10聲明函數(shù)cvoid main()int i,j,n=13;/定義 i , j, kint c(int x,int y)/定義函數(shù)cint z;/定義變量 z2.3 實驗小結(jié)本次實驗進一步熟悉了

18、 Dev 的操作。 了解了在寫程序的時候容易犯的一些小錯誤, 在以后的編程道路上還得處處小心, 具體的, 發(fā)現(xiàn) scanf 函數(shù)里面不能輸入 float 型變量, 不然會出錯。 另外進一步熟練了函數(shù)的調(diào)用過程, 在寫數(shù)組那個題時, 能夠很快想到用數(shù)組保存每次取余后的數(shù)字還是很不錯的。但總體來說,寫程序的速度還是頗慢,以后亟待提高3 第三次實驗3.1 實驗目的1. 熟悉和掌握函數(shù)的定義、聲明,函數(shù)調(diào)用與參數(shù)傳遞方法,以及函數(shù)返回值類型的定義和返回值的使用。2. 熟悉和掌握不同儲存類型變量的使用。3. 熟悉多文件編譯技術3.2 實驗內(nèi)容1.源程序改錯:Long s=0改為 static long

19、s=0分析:要將 s 初始化為靜態(tài)變量,不然每循環(huán)一次s 都會變?yōu)?Long fac改為long fac=1分析:要將fac初始化為1程序框圖:開始K=6,i=1ik?YNS=S+I,i+輸出 s結(jié)束2.1源程序修改替換( 1):把 int i 換為 static int i 分析:這樣能夠避免多次計算i!/把i初始化為靜態(tài)整形量2.2 源程序修改替換( 2):把 long sum_fac(int n)改為 float sum_fac(int n)把 printf(k=%dtthe sum is %ldn,k,sum_fac(k)改為printf(k=%dtthe sum is %fn,k,s

20、um_fac(k)把 static long s=0改為static float s=0把 long fac=1改為float fac=1把 s+=fac改為s+=1/fac分析:只需要將各數(shù)據(jù)的類型改一下就ok,計算 s 時稍稍改動就好了3. 跟蹤調(diào)試:( 1)( 2)4. 程序設計:(1)最大公約數(shù):定義變量: int i;iint a,b;用來作為除數(shù)輸入的兩個數(shù)開始程序框圖:輸入 a,b,i=aNb/i,a/i 是否都為整數(shù)Yi=i-1輸出 i結(jié)束(2)驗證哥德巴赫猜想:定義變量: 主函數(shù)中int a,i,j;/a為用戶輸入待驗證的數(shù),i為一個加數(shù), j 為另一個加數(shù)子函數(shù)中int i

21、,k;/k為待驗證是否為素數(shù)的加數(shù),i 為計數(shù)變量程序框圖:開始輸入 a,i,ji+i=a-2N?Yj=a-iNi 和 j 是否都為素數(shù)輸出結(jié)束( 3)定義變量: inta,n,m;/a為 10-20 之間的數(shù), n 為第一個加數(shù), m為第二個加數(shù)4. 附加題:T14. 求 n 個數(shù)的最大值、最小值和平均值。要求:不使用數(shù)組。定義變量 :int n,i,max,min,b; /n是個數(shù), i 是計數(shù)變量, max是最大數(shù), min 是最小數(shù)程序框圖:開始輸入 n 等變量Yimaxb=1E-6N輸出 s結(jié)束T16. 完全數(shù)是一些特殊的自然數(shù)。它所有的真因子(即除了自身以外的約數(shù))的和恰好等于它本

22、身。試求出 11000 范圍內(nèi)的所有完全數(shù)。定義變量: intn,s,a ; /n為待檢測數(shù), s 為求和變量, a 為真因子程序框圖:開始輸入 n, s,an=1000?Yn+Y an?a+NNn%a=0?NYs=s+aNn=sY結(jié)束輸出 sT17. 水仙花數(shù)是指一個3位數(shù),它的每個位上的數(shù)字的3次冪之和等于它本身。例如: 13 + 53 + 33 = 153。試求出所有的水仙花數(shù)。定義變量: int a,I,j,k;/a為待驗證的數(shù), i 、j 、k 分別用于保存 a 的個位數(shù),十位數(shù),百位數(shù)程序框圖:開始輸入 a,定義i ,j , ka 是否仍為Y三位數(shù)把 a 的各位上a+N的數(shù)取出結(jié)束

23、判斷是否為水仙花數(shù)Y輸出該數(shù)T18. 求解 1313 的尾數(shù)三位是多少。定義變量: int s=1,i=1 / 定義整形變量 s 來保存每次乘后的末尾三位數(shù),定義 i 來計乘的次數(shù)程序框圖:開始把每次所乘的末尾三個數(shù)賦給 s, i+N是否已經(jīng)乘了 13次?Y輸出 s結(jié)束T19. 一個的數(shù),其七進制和九進制均為 3 位數(shù),且 3 位數(shù)的數(shù)字正好相反。試求出這個數(shù)。定義變量: int a,b,c; / 作為各個進制位上的數(shù)程序框圖:開始A=1,b=0,c=1Ya7?Yb7?NNYa+c7?Nc+b+兩種進制數(shù)相等?Y輸出結(jié)束T20. 求解 100!尾數(shù)有多少個 0。定義變量: int a ,i ;/a 作為 5 的倍數(shù), i 作為計數(shù)變量程序框圖:開始輸入 a,ii+,a=a+5a=y)?(x=z)?x:z):(y=z)?y:z3. 跟蹤調(diào)試 3.1 :加入預處理頭文件#include子函數(shù)在前面聲明int integer_fraction(float x);跟蹤調(diào)試3.2 :進入函數(shù)時,x 為 3.14159012返回 main 時, i 為 34. 程序設計:4.1定義變量: int a,b,c;/a,b,c為三角形三邊長程序框圖:開始輸入a,b,c,s,areas=(a+b+c)/2是否能圍

溫馨提示

  • 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

提交評論