華中科技大學(xué)C語(yǔ)言實(shí)驗(yàn)報(bào)告.doc_第1頁(yè)
華中科技大學(xué)C語(yǔ)言實(shí)驗(yàn)報(bào)告.doc_第2頁(yè)
華中科技大學(xué)C語(yǔ)言實(shí)驗(yàn)報(bào)告.doc_第3頁(yè)
華中科技大學(xué)C語(yǔ)言實(shí)驗(yàn)報(bào)告.doc_第4頁(yè)
華中科技大學(xué)C語(yǔ)言實(shí)驗(yàn)報(bào)告.doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余61頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、課程實(shí)驗(yàn)報(bào)告課程名稱(chēng):C語(yǔ)言程序設(shè)計(jì)專(zhuān)業(yè)班級(jí):CS1409學(xué)號(hào):U201414813姓名:唐禮威指導(dǎo)教師:吳海報(bào)告日期:2015 年 6月 24日計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院目錄1第一次實(shí)驗(yàn) .11.1實(shí)驗(yàn)?zāi)康?. .11.2實(shí)驗(yàn)內(nèi)容 . .11.3實(shí)驗(yàn)小結(jié) . .102第二次實(shí)驗(yàn) .112.1實(shí)驗(yàn)?zāi)康?. .112.2實(shí)驗(yàn)內(nèi)容 . .112.3實(shí)驗(yàn)小結(jié) . .163第三次實(shí)驗(yàn) .163.1實(shí)驗(yàn)?zāi)康?. .163.2實(shí)驗(yàn)內(nèi)容 . .163.3實(shí)驗(yàn)小結(jié) . .254第四次實(shí)驗(yàn) .254.1實(shí)驗(yàn)?zāi)康?. .254.2實(shí)驗(yàn)內(nèi)容 . .254.3實(shí)驗(yàn)小結(jié) . .305第五次實(shí)驗(yàn) .315.1實(shí)驗(yàn)?zāi)康?. .3

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

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

4、)程序設(shè)計(jì)( 1)編寫(xiě)一個(gè)程序,輸入字符,如果是大寫(xiě)字母,則將轉(zhuǎn)換成對(duì)應(yīng)的小寫(xiě),否則的值不變,最后輸出。I 、程序框圖開(kāi)始輸入字符cc為大寫(xiě)Y將 c 轉(zhuǎn)換成對(duì)應(yīng)字母的小寫(xiě)N輸出字符c結(jié)束思路: 小寫(xiě)字母的ASCLL碼比其相對(duì)應(yīng)的大寫(xiě)字母ASCLL碼值高 32,所以,可用if語(yǔ)句進(jìn)行判斷大小寫(xiě),再通過(guò)簡(jiǎn)單計(jì)算進(jìn)行轉(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 );【測(cè)試】輸入 676879571 應(yīng)輸出 211.92.88.40( 三) 自設(shè)題( 1)設(shè)計(jì)一個(gè)程序,在字符模式下,以某個(gè)字符拼出“王”漢字圖形,顯示輸出。II 、部分程序代碼printf( * n);printf(*n);printf(*n);printf(*n);printf(*n);printf(*n);printf( * n);( 2)輸入一個(gè)華氏溫度,要求輸出攝氏溫度。公式為c=5/9*(f-32)。I 、程序框圖開(kāi)始輸入華氏溫度計(jì)算得攝氏溫度輸出攝氏溫度結(jié)束II 、部分程序代碼float f,c;/定義浮點(diǎn)型變量floa

6、t question(float x);printf(請(qǐng)輸入需要轉(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)用,返回計(jì)算得到的值float a;a=5.0/9*(x-32);/此部剛開(kāi)始遇到小問(wèn)題,應(yīng)注意a的類(lèi)型, 5寫(xiě)為 5.0return a;【測(cè)試】(3)設(shè)計(jì)一個(gè)程序,完成如下功能:輸出一個(gè)三位數(shù),將它反向輸出。如輸入 127,輸出721。I 、程序框圖開(kāi)始輸入一個(gè)三位數(shù)用取余、求商等方式將每一位分離反向排列每一位數(shù)使組

7、成新的數(shù)輸出所得得數(shù)結(jié)束II 、部分程序代碼int a,b,c;/定義三個(gè)整形變量printf(請(qǐng)輸入三位數(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);【測(cè)試】(4) 設(shè)計(jì) 2 種完成計(jì)算MAXx,y,z的程序。I 、程序框圖法一:表達(dá)式a * (a=b & a=c) + b*(b=a & b=c)+c *(c=a & c=b)的值即為最大值。法二:開(kāi)始輸入 a,b,c,a bNb cYYNYa cN輸出a輸出c輸出b結(jié)束II 、部分程序代碼法一:#includeint main()

8、int a,b,c,d;/定義四個(gè)整形變量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(請(qǐng)輸入三個(gè)數(shù)n);scanf(%d%d%d,&a,&b,&c);big=question(a,b,c);/printf(%d,%d,%d中最大數(shù)為簡(jiǎn)單的函數(shù)調(diào)用定義四個(gè)變量子函數(shù)返回值給主函數(shù)%d,a,b,c,b

9、ig);int question(a,b,c)/簡(jiǎn)單的求最大值的子函數(shù)int d;if(a=b)d=b;if(b=c)d=c;else if(a=c)d=c;else d=a;return d;【測(cè)試】法一:法二:(5) 設(shè)計(jì)計(jì)算一元二次方程的根的程序。I 、程序框圖開(kāi)始輸入系數(shù)a,b, cb2-4*a*cN0Y輸出“無(wú)實(shí)根”輸出 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)用庫(kù)函數(shù)中的函數(shù)intmain()double a = 0, b, c, x1, x2;/定義

10、變量printf( 本程序用于計(jì)算形如ax2+bx+c=0 的一元二次方程的實(shí)根printf( 請(qǐng)依次輸入 a, b, c的值(以空格分開(kāi)):n);while(a = 0)n );scanf( %lf %lf %lf, &a, &b, &c);if(a = 0)printf( 一元二次方程a不能為 0,請(qǐng)重輸:n );elsebreak ;if(b*b - 4 * a*c0)printf(n無(wú) 實(shí) 根 ! 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;【測(cè)試】( 6 )根據(jù)任意三角形的面積公式( 海倫公式) : S = p (p-a)( p-b)( p-c ),其中,p=(a+b+c)/2, a.b.c為三角形三邊,設(shè)計(jì)一個(gè)程序計(jì)算任意三角形的面積。I 、設(shè)計(jì)說(shuō)明首先輸入三角形三邊長(zhǎng),然后由海倫公式得出結(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; 【測(cè)試】1.3 實(shí)驗(yàn)小結(jié)本次實(shí)驗(yàn)熟悉了開(kāi)發(fā)環(huán)境,并自己動(dòng)手實(shí)踐了一些簡(jiǎn)單的小程序,在開(kāi)發(fā)程序的過(guò)程中我發(fā)現(xiàn)一些小的問(wèn)題往往會(huì)破壞整個(gè)程序的正常運(yùn)行,而且非常不容易發(fā)現(xiàn),所以我認(rèn)為在我們開(kāi)發(fā)程序的過(guò)程中, 必須要保證好整個(gè)源碼的格式, 并且要是分之小心。 目前我能夠運(yùn)用簡(jiǎn)單的函數(shù)調(diào)用,分得清數(shù)據(jù)的類(lèi)型,掌握了幾個(gè)循環(huán)語(yǔ)句的使用方法,但均不夠熟練,在以后的實(shí)踐過(guò)程中還會(huì)去不斷提高自己,成為一個(gè)有基本職業(yè)素養(yǎng)的程序開(kāi)發(fā)人員

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

14、間隔改為for( i=1;i=n;i+)( 2)用 while 替換 for 循環(huán)求 n!定義變量n,計(jì)數(shù)變量i ,輸出結(jié)果變量s程序框圖開(kāi)始輸入 n 的值Y判斷 i=n?計(jì)算 s=s*i;i+輸出 S結(jié)束( 3)用 do-while 替換 for 循環(huán)求 n!定義變量n,計(jì)數(shù)變量i ,輸出結(jié)果變量s程序框圖開(kāi)始輸入 n 的值計(jì)算 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);遇到的問(wèn)題: 當(dāng)scanf 里面輸入的是浮點(diǎn)型變量時(shí)程序運(yùn)行出錯(cuò),函數(shù)本身的一個(gè)bug,所以以后再scanf 里面不能輸入浮點(diǎn)型變量經(jīng)上網(wǎng)查閱,發(fā)現(xiàn)這是scanf( 6)求稅金switch版【部分程序代碼: 】int x,a;/定義 x,aprintf(請(qǐng)輸入金額:);scanf(%d,&x);a=x/1000;/計(jì)算工資千位數(shù)字遇到的問(wèn)題:case 語(yǔ)句后面必須加上break,不然該條語(yǔ)句不會(huì)停止,會(huì)繼續(xù)向下走( 7) 字符復(fù)制【部分程序代碼: 】#includ

17、e#includeint i=1;char s;/定義計(jì)數(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 實(shí)驗(yàn)小結(jié)本次實(shí)驗(yàn)進(jìn)一步熟悉了

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

19、s=0分析:要將 s 初始化為靜態(tài)變量,不然每循環(huán)一次s 都會(huì)變?yōu)?Long fac改為long fac=1分析:要將fac初始化為1程序框圖:開(kāi)始K=6,i=1ik?YNS=S+I,i+輸出 s結(jié)束2.1源程序修改替換( 1):把 int i 換為 static int i 分析:這樣能夠避免多次計(jì)算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ù)的類(lèi)型改一下就ok,計(jì)算 s 時(shí)稍稍改動(dòng)就好了3. 跟蹤調(diào)試:( 1)( 2)4. 程序設(shè)計(jì):(1)最大公約數(shù):定義變量: int i;iint a,b;用來(lái)作為除數(shù)輸入的兩個(gè)數(shù)開(kāi)始程序框圖:輸入 a,b,i=aNb/i,a/i 是否都為整數(shù)Yi=i-1輸出 i結(jié)束(2)驗(yàn)證哥德巴赫猜想:定義變量: 主函數(shù)中int a,i,j;/a為用戶(hù)輸入待驗(yàn)證的數(shù),i為一個(gè)加數(shù), j 為另一個(gè)加數(shù)子函數(shù)中int i

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論