




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)電子工程學(xué)院2008-2實(shí)驗(yàn)一 C程序的運(yùn)行環(huán)境和編輯、調(diào)試、運(yùn)行簡(jiǎn)單C程序一、實(shí)驗(yàn)?zāi)康?. 了解Turbo C 的基本操作方法,學(xué)會(huì)獨(dú)立使用該系統(tǒng)。2. 掌握在該系統(tǒng)上如何編輯、編譯、運(yùn)行一個(gè)C程序。二、實(shí)驗(yàn)內(nèi)容及步驟1. 進(jìn)入C的工作環(huán)境1) 在 Windouws環(huán)境下:“開(kāi)始”宀“程序”宀“ MS-DOS屏幕上進(jìn)入MS-DOS窗口2) 在Dos環(huán)境下:鍵入命令 c:> cd c:tc /c:tc> tc /屏幕上出現(xiàn)Turbo C的工作環(huán)境2. 熟悉Turbo C的工作環(huán)境了解 Edit 窗口與 Message窗口了解主菜單的8個(gè)菜單項(xiàng)File Edi
2、t Compile Project Optio n Debug break/watch3. 輸入并運(yùn)行一個(gè)簡(jiǎn)單的程序File t New輸入源程序:main ()prin tf("This is a C program.' n");prin tf("OKn");按F9進(jìn)行編譯和連接,觀察屏幕上顯示的編譯信息。如果出現(xiàn)出錯(cuò)信息,則應(yīng)找出原因 并改正。按Rurr Run(或按Ctrl+F9)編譯、連接、運(yùn)行一起完成。按Run User screen(或按 Alt+F5) 察看運(yùn)行結(jié)果。按任一鍵從用戶屏切換回TC窗口。4. 輸入并編輯第二個(gè)C程序Fil
3、e r New輸入源程序:mai n ()int a , b, sum;a=123; b=456;sum=a+b;prin tf("sum is %dn", sum);編輯、運(yùn)行、調(diào)試該程序。5. 編輯、運(yùn)行、調(diào)試自己編寫的程序(至少一個(gè)程序)女口:輸入上底、下底和高,計(jì)算梯形面積。觀察屏幕上顯示的編譯信息。如果出現(xiàn)出錯(cuò)信息,則應(yīng)找出原因并改正。 用File tSave (或F2)保存程序(程序名為 a1.c )三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 編譯過(guò)程中出現(xiàn)的錯(cuò)誤信息。5. 總結(jié)討論本次實(shí)驗(yàn)的結(jié)
4、果和收獲。實(shí)驗(yàn)二數(shù)據(jù)類型、運(yùn)算符和表達(dá)式、實(shí)驗(yàn)?zāi)康?. 掌握C語(yǔ)言的各種類型及其定義方法,賦值方法。2. 掌握不同類型之間賦值的規(guī)律。3. 學(xué)會(huì)使用各種算術(shù)運(yùn)算符,特別是自加自減運(yùn)算符。4. 進(jìn)一步熟悉C程序的編輯、編譯、連接和運(yùn)行的過(guò)程。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 練習(xí)一個(gè)有關(guān)字符和整型的程序。main ()char cl , c2;c1=97;c2=98;printf("%c %cn",cl,c2); /*以字符形式輸出 */printf("%d %dn", c1, c2); /*轉(zhuǎn)換為整數(shù)形式輸出*/2. 轉(zhuǎn)義字符的練習(xí)。main ()printf
5、(”*r*n ”);prin tf("tOAbK n");printf("#n");prin tf("tABCtDEFtGHIn");prin tf("t123t456t789n");對(duì)照輸出,理解轉(zhuǎn)義字符的含義。3. 自加自減程序的練習(xí)。main ()int a=5,b=3,c1,c2;a+;-b;c1=+a+b;c2=c1-a/b;b=+a+b+c1_+c2;prin tf("a=%dnb=%dnc 仁 dnc2=%dn",a,b,c1,c2);4. 各種類型混合運(yùn)算的例子main ()in
6、t a=7,b=3; char c1=' a', c2=66;float x=12.25;double y=1.;long d=;a=x+b*x+y/2-d%(c1-c2);printf("a=%d, b=%d,c1=%cn", a,b,c1);printf("d=%ld, x=%f, y=%10.2fn", d,x,y);5. 上機(jī)改錯(cuò)題:請(qǐng)指出以下C程序的錯(cuò)誤所在(1)mai n();float r,s;r=5.0;s=3.14159*r*r;printf("%fn" , s)mai nfloat a,b,c,v;
7、a=2.0; b=3.0; c=4.0v=a*b*c;printf("%fn" , v)6. 調(diào)試、運(yùn)行自己編寫的程序。(1) 已知圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長(zhǎng),圓面積,圓球表面積,圓球體積,圓柱體積。(2) 輸入一個(gè)華氏溫度,要求輸出攝氏溫度。公式為 c=5/9*(f-32).三、實(shí)驗(yàn)報(bào)告要求寫明1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容及步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 編譯過(guò)程中出現(xiàn)的錯(cuò)誤信息。5. 總結(jié)討論本次實(shí)驗(yàn)中的問(wèn)題和收獲i+和+ i的區(qū)別,i-和-i的區(qū)別各種類型混合運(yùn)算時(shí)的類型轉(zhuǎn)換實(shí)驗(yàn)三順序和分支結(jié)構(gòu)的程序設(shè)計(jì)、實(shí)驗(yàn)?zāi)康?. 掌握C
8、語(yǔ)言中使用最多的一種語(yǔ)句一一賦值語(yǔ)句的使用方法。2. 掌握各種類型數(shù)據(jù)的輸入輸出的方法,能正確使用各種格式轉(zhuǎn)換符。3. 熟練掌握if語(yǔ)句和switch語(yǔ)句。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 掌握各種格式轉(zhuǎn)換符的正確使用方法(1) 輸入程序main ()int a, b;float d, e;char c1, c2;double f, g;long m, n;un sig ned int p, q;a = 61; b = 62;c1 = ' a' ; c2 =' b'f = 3157.; g = 0.;d = f; e = g;p = a = m = 50000; q
9、= b = n = -60000;printf("a=%d, b=%dnc仁%c, c2=%cnd=%6.2f, e=%6.2fn", a, b, c1, c2, d, e);printf("f=%15.6f, g=%15.12fnm=%ld, n=%ldnp=%u, q=%un", f, g, m, n, p, q);(2) 運(yùn)行此程序并分析結(jié)果。(3) 改用scanf函數(shù)輸入數(shù)據(jù)而不用賦值語(yǔ)句,scanf函數(shù)如下:scan f("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,% u",&a,&a
10、mp;b,&c1,&c2, &d, &e, &f,&g ,&m,&n,&p, &q);輸入的數(shù)據(jù)如下:61, 62, a,b,3.56,-6.87,3157.,0.,50000, -60000,37678,40000 /(說(shuō)明:lf和ld格式符分別用于輸入 double型和long型數(shù)據(jù))分析運(yùn)行結(jié)果。 在 的基礎(chǔ)上將printf語(yǔ)句改為:prin tf("a=%d, b=%dnc仁 %c, c2=%cnd=%15.6f, e=%15.12fn", a, b, c1, c2, d, e);pri
11、ntf("f=%f, g=%fnm=%d, n=%dinp=%d, q=%dn", f, g, m, n, p, q);運(yùn)行程序。2. 字符的輸入輸出#i nclude<stdio.h>main ()char a,b;a=' g';b=getchar();putchar(a);putchar(b);3. 以下程序多處有錯(cuò)。若指定必須按下面的形式輸入數(shù)據(jù),并且必須按下面指定的形式輸出數(shù) 據(jù),請(qǐng)對(duì)該程序做相應(yīng)的修改。mai n double a,b,c,s,v;printf(in put a,b,c: n);scanf("%d %d %d&
12、quot;, a,b,c);s=a*b;v=a*b*c;printf("%d %d %d",a,b,c);printf("s=%fn", s, "v=%dn", v);當(dāng)程序執(zhí)行時(shí),屏幕的顯示和要求輸入形式如下:in put a,b,c:2.0 2.0 3.0此處的2.0 2.0 3.0是用戶輸入的數(shù)據(jù)a=2.,b=2.,c=3.此處是要求的輸出形式s=4.,v=12.4. 編輯、運(yùn)行、調(diào)試自己編寫的程序給出一個(gè)百分制成績(jī),要求輸出成績(jī)等級(jí)A B C、D E 90分以上為A, 80 - 89分為B, 70 - 79分為C, 60-69
13、分為D, 60分以下為E。事先編好程序,要求分別用if語(yǔ)句和switch語(yǔ)句實(shí)現(xiàn)。運(yùn)行程序,并檢查結(jié)果是否正確。三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 編譯過(guò)程中出現(xiàn)的錯(cuò)誤信息。5. 總結(jié)討論本次實(shí)驗(yàn)的結(jié)果和收獲。實(shí)驗(yàn)四 循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?. 熟練掌握while循環(huán)語(yǔ)句的應(yīng)用。2. 熟練掌握do while循環(huán)語(yǔ)句的應(yīng)用。3. 熟練掌握f(shuō)or循環(huán)語(yǔ)句的應(yīng)用。4. 理解三者的區(qū)別和聯(lián)系。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 求 5 !main ()int n,t;n=1;t=1;while(t<=5)n=n *t;
14、t=t+1;prin tf("%d", n);2. 將以上程序用do while語(yǔ)句改寫。3. 求和 s=1!+3!+5!main ()int s=0,t,i,j;for(i=1;i<=3;i+)t=1;for(j=1;j<=2*i-1;j+)t=t*j;s=s+t;prin tf("%d",s);4. 求和 s= 3+33+333main ()int s=0,t=3,i;for(i=1;i<=3;i+)s=s+t;t=10*t+3;prin tf("%d",s);5. 打印下列圖案*main ()int i,j;f
15、or(i=1; i<=4;i+)for(j=1;j<= 4-i;j+)prin tf("");for(j=1;j<=2*i-1;j+)prin tf("*");prin tf("n");6. 測(cè)試、運(yùn)行自己編寫的程序。(1) 編寫程序,求 1-3+5-7+-99+101的值。編寫程序,求 e的值,e1+1/1 ! +1/2!+1/3!+1/4!+。(3) 編寫程序,統(tǒng)計(jì)輸入的一行中小寫字母的個(gè)數(shù)。(4) 打印100-999之間所有的“水仙花數(shù)”。“水仙花數(shù)”是一個(gè)三位數(shù),其各位數(shù)立方和等于該數(shù) 本身。(5) 一個(gè)數(shù)如
16、果恰好等于它的因子之和,這個(gè)數(shù)就稱為完數(shù)。求1000之內(nèi)的所有完數(shù)。三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 編譯過(guò)程中出現(xiàn)的錯(cuò)誤信息。5. 總結(jié)討論本次實(shí)驗(yàn)的結(jié)果和收獲。實(shí)驗(yàn)五數(shù)組(一)1. 掌握一維數(shù)組的定義、賦值和輸入輸出的方法。2. 掌握二維數(shù)組的定義、賦值和輸入輸出的方法。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 在鍵盤上輸入N個(gè)整數(shù),試編制程序使該數(shù)組中的數(shù)按照從大到小的次序排列。分析:C中數(shù)組長(zhǎng)度必須是確定大小,即指定N的值。#defi ne N 10main ()int aN,i,j,temp;prin tf("
17、please in put %d nu mbersn",N);for(i=0;i<N;i+)sca nf("%d",&ai);for(i=0;i<N-1;i+)for(j=0;j<N-1-i;j+)if(aj<aj+1)temp=aj;aj=aj+1;aj+1=temp;prin tf("the array after sort:n");for(i=0;i<N;i+)prin tf("%5d",ai);2. 有一個(gè)3X4的矩陣,要求輸出其中值最大的元素的值,以及它的行號(hào)和列號(hào)。mai n
18、()int max,i,j,r,c;static int a34=123,94,-10,218,3,9,10,-83,45,16,44,-99;max=aOO;for(i=0;i<3;i+)for(j=0;j<4;j+)if ( aij>max)max=aij;r=i;c=j;printf( " max=%d ,row=%d ,colum=%d n " ,max,r,c);3. 測(cè)試、運(yùn)行自己編寫的程序。(1) 編寫程序,將數(shù)組中所有奇數(shù)放在另一個(gè)數(shù)組中返回。(2) 輸入若干有序數(shù)放在數(shù)組中。然后輸入一個(gè)數(shù),插入到此有序數(shù)列中,插入后,數(shù)組中的 數(shù)仍然有序
19、。請(qǐng)對(duì)插在最前、插在最后、插在中間三種情況運(yùn)行程序,以便驗(yàn)證程序是否正確。(3) 求兩個(gè)矩陣之和。三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 編譯過(guò)程中出現(xiàn)的錯(cuò)誤信息。5. 總結(jié)討論本次實(shí)驗(yàn)的結(jié)果和收獲。、實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)六數(shù)組(二)掌握字符數(shù)組的使用。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 輸入一串字符,計(jì)算其中空格的個(gè)數(shù)。#i nclude "stdio.h"#i nclude "stri ng.h"mai n()char c30;int i,sum=0;gets(c);for(i=0;i<s
20、trle n( c);i+)if(ci='')sum=sum+1;printf("The number of spaces is: %dn”,sum);2. 測(cè)試、運(yùn)行自己編寫的程序。(1) 編寫程序,將兩個(gè)字符串連接起來(lái),不要使用strcat函數(shù)。(2) 編寫程序,將兩個(gè)字符數(shù)組 s2中的全部字符復(fù)制到字符數(shù)組s1中,不使用strcpy函數(shù)。 復(fù)制時(shí), 0 '也要復(fù)制過(guò)去。0 '后面的字符不復(fù)制。三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 編譯過(guò)程中出現(xiàn)的錯(cuò)誤信息。5. 總結(jié)討論本次
21、實(shí)驗(yàn)的結(jié)果和收獲。、實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)七C程序的函數(shù)(一)1. 掌握自定義函數(shù)的一般結(jié)構(gòu)及定義函數(shù)的方法。2. 掌握形參、實(shí)參、函數(shù)原型等重要概念。3. 掌握函數(shù)聲明、函數(shù)調(diào)用的一般方法。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 求三角形面積函數(shù)。編寫一個(gè)求任意三角形面積的函數(shù),并在主函數(shù)中調(diào)用它,計(jì)算任意三 角形的面積。參考程序/*定義和使用求三角形面積函數(shù)的程序*/#i nclude "math.h"#i nclude "stdio.h"float area(float,float,float);main ()float a,b,c;prin tf("請(qǐng)輸入三
22、角形的三個(gè)邊長(zhǎng)值:n")scan f("%f,%f,%f",&a,&b, &c);if(a+b>c&&a+c>b&&b+c>a&&a>0.0&&b>0.0&&c>0.0)prin tf("area=%-7.2fn",area(a,b,c);/*以下是計(jì)算任意三角形面積的函數(shù)*/float area(float a,float b,float c)float s,area_s;s=(a+b+c)/2.0;ar
23、ea_s=sqrt(s*(s_a)*(s_b)*(s_c);return(area_s);2. 上機(jī)調(diào)試下面的程序,記錄系統(tǒng)給出的出錯(cuò)信息,并指出出錯(cuò)原因。mai n()int x,y;prin tf("%dn",sum(x+y);int sum(a,b);int a,b;return(a+b);3. 測(cè)試、運(yùn)行自己編寫的程序。(1) 編寫函數(shù),對(duì)傳送過(guò)來(lái)的三個(gè)數(shù)選出最大數(shù)和最小數(shù),并通過(guò)形參傳回調(diào)用函數(shù)。(2) 寫出兩個(gè)函數(shù),分別求出兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個(gè)函數(shù), 并輸出結(jié)果。兩個(gè)整數(shù)由鍵盤輸入。(3) 寫一個(gè)判斷素?cái)?shù)的函數(shù),在主函數(shù)輸入一個(gè)整
24、數(shù),輸出是否是素?cái)?shù)的信息。三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 思考題的解決方法。5. 總結(jié)討論本次實(shí)驗(yàn)的結(jié)果和收獲。printf("n*"prin tf("n*prin tf("n*prin tf("n*prin tf("n*Menu sect ion1. Desig n(&)2. Desig n($)3. Exit);*");*");*");*");prin tf("n*“);實(shí)驗(yàn)八C程序的函數(shù)(二)
25、1. 掌握自定義函數(shù)的一般結(jié)構(gòu)及定義函數(shù)的方法。2. 掌握形參、實(shí)參、函數(shù)原型等重要概念。3. 掌握函數(shù)聲明、函數(shù)調(diào)用的一般方法。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 菜單程序。編寫一個(gè)菜單程序,運(yùn)行后首先在屏幕顯示如下菜單,$”圖案的函當(dāng)輸入數(shù)值1后,調(diào)用顯示“ &”圖案的函數(shù)程序;輸入數(shù)值 2后,調(diào)用顯示 數(shù)程序;輸入數(shù)值 3后結(jié)束程序。* Menu secti on * 1. Desig n(&)* 2. Desig n($)* 3. Exit*參考程序/*菜單程序*/#in clude "stdio.h" void desig n1();void desig
26、n2();main ()以下代碼生成菜單*/int op; /*prin tf("nPlease en ter selectio n:");scan f("%d",&op); if(op=1)desig n1();else if(op=2) desig n2();/*以下是顯示&圖案的函數(shù)*/void desig n1()int i;char str31="&&&&&&&&&&&&&&&&&&a
27、mp;&&&&&&&&&&&&" for(i=1;i<10;i+)puts(str);/*以下是顯示$圖案的函數(shù)*/void desig n2()int i,j;for(i=1;i<10;i+)for(j=1;j<i;j+)putchar('');for(j=1;j<30;j+)putchar('$');prin tf("n");2. 測(cè)試、運(yùn)行自己編寫的程序。(1)編寫函數(shù),使輸入的一個(gè)字符串按反序存放,在主函數(shù)
28、中輸入和輸出字符串。(2) 編寫函數(shù),判斷一個(gè)字符串是否是回文。若是回文函數(shù)返回值為1 ;否則函數(shù)返回值為 回文是順讀和倒讀都是一樣的字符串。(3)用遞歸法將一個(gè)整數(shù) n轉(zhuǎn)換成字符串。(4)寫一函數(shù),輸入一個(gè)十六進(jìn)制數(shù),輸出相應(yīng)的十進(jìn)制數(shù)。三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 思考題的解決方法。5. 總結(jié)討論本次實(shí)驗(yàn)的結(jié)果和收獲。實(shí)驗(yàn)九編譯預(yù)處理1. 掌握宏定義的規(guī)則,領(lǐng)會(huì)帶參數(shù)宏定義和函數(shù)調(diào)用的區(qū)別2. 了解文件包含命令的功能和使用規(guī)則。3. 了解條件編譯的特點(diǎn)和功能。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 調(diào)試運(yùn)行下面的程序(1
29、) 使用不帶參數(shù)的宏定義#in elude <stdio.h>#defi ne PI 3.void mai n()float l,s,r,v;prin tf("i nput radius:");scan f("%f",&r);l=2.0*PI*r;s=PI*r*r;v=4.0/3*PI*r*r*r;prin tf("l=%10.4fns=%10.4fnv=%10.4fn",l,s,v);(2) 在宏定義中引用已定義的宏名#in clude <stdio.h>#defi ne R 3.0#defi ne
30、PI 3.#defi ne L 2*PI*R#defi ne S PI*R*Rvoid mai n()prin tf("L=%fnS=%fn",L,S);(3) 使用帶參數(shù)的宏#in clude <stdio.h>#defi ne PI 3.#defi ne S(r) PI*r*rvoid mai n() float a,area;a=3.6;area=S(a);prin tf("r=%fnarea=%fn",a,area);(4) 通過(guò)宏展開(kāi)得到若干個(gè)結(jié)果#in elude <stdio.h>#defi ne PI 3.#def
31、i ne CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4.0/3.0*PI*R*R*Rvoid mai n()float r,l,s,v;scan f("%f', &r);CIRCLE(r,l,s,v);prin tf("r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2fn",r,l,s,v);,則只輸出其2. 利用條件編譯實(shí)現(xiàn):如果輸入兩個(gè)實(shí)數(shù),則交換后輸出;如果輸入的是三個(gè)實(shí)數(shù) 中最大的數(shù).三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 思考
32、題的解決方法。5. 總結(jié)討論本次實(shí)驗(yàn)的結(jié)果和收獲。實(shí)驗(yàn)十C程序的指針(一)一、實(shí)驗(yàn)?zāi)康?. 掌握指針和指針變量的概念。2. 掌握簡(jiǎn)單指針變量的定義和基本使用方法。3. 熟悉指針和一維數(shù)組的關(guān)系,掌握指向一維數(shù)組的指針變量的定義方法,熟練使用指針變量 訪問(wèn)一維數(shù)組元素。4. 了解指針和二維數(shù)組的關(guān)系,掌握用指針表示二維數(shù)組元素的方法。5. 了解指針與字符串的關(guān)系,能熟練使用指針處理字符串。、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 用指針訪問(wèn)簡(jiǎn)單變量。從鍵盤輸入三個(gè)整數(shù),要求設(shè)三個(gè)指針變量p1,p2,p3,使pl指向三個(gè)數(shù)的最大者,p2指向次大者,p3指向最小者,然后按由小到大的順序輸出這三個(gè)數(shù)。參考程序/*用指
33、針訪問(wèn)簡(jiǎn)單變量的程序*/#in elude "stdio.h" mai n() int a,b,c,temp;int *p1,*p2,*p3;printf("請(qǐng)輸入三個(gè)整數(shù)值(a,b,c): n”);scan f("%d,%d,%d",&a,&b,&c); p1= &a;/*p2=&b;/*p3=&c;/*使指針p1指向簡(jiǎn)單變量a */ 使指針p2指向簡(jiǎn)單變量b */ 使指針p3指向簡(jiǎn)單變量c */if(*p1<*p2)temp=*p1;*p1=*p2;*p2=temp;if(*p1<
34、*p3)temp=*p1;*p1=*p3;*p3=temp;/*至此p1指向了三個(gè)數(shù)中的最大數(shù)*/if(*p2<*p3) temp=*p2;*p2=*p3;*p3=temp;/*至此p3指向了最小數(shù),p2指向了中間數(shù)*/prin tf("%d,%d,%dn",*p3,*p2,*p1); 運(yùn)行程序,任意輸入三個(gè)整數(shù)(之間以逗號(hào)分隔),察看并分析程序運(yùn)行結(jié)果。 運(yùn)行程序,按由小到大的順序輸入三個(gè)整數(shù)(之間以逗號(hào)分隔),察看并分析程序運(yùn)行結(jié)果。2.用指針?lè)ㄔ谝痪S有序數(shù)組中插入數(shù)據(jù)。如下是具有 運(yùn)行程序,按由大到小的順序輸入三個(gè)整數(shù)(之間以逗號(hào)分隔),察看并分析程序運(yùn)行結(jié)果。
35、10個(gè)整數(shù)的升序數(shù)列,存儲(chǔ)在一維數(shù)組中,要求在其中插入任意一個(gè)整數(shù)后數(shù)列仍然有序。數(shù)列:10,20,30,40,50,60,70,80,90,99參考程序/*用指針?lè)ㄔ谝痪S有序數(shù)組中插入數(shù)據(jù)程序*/#i nclude "stdio.h"#defi ne M 10 mai n()int aM+1=10,20,30,40,50,60,70,80,90,99;int i,n ,*p,*q;printf(”請(qǐng)輸入要插入的數(shù)據(jù):n");scan f("%d",&n);aM=n;for(p=a,i=0;i<=M;i+)/*if(*=*(p+i
36、)p=p+i;/* pbreak;for(q=a+M-1;q>=p;q-)/*(q+1)=*q;*p=n;/*prin tf("n插入數(shù)據(jù)后的數(shù)列for(p=a,i=0;i<M+1;i+)prin tf("%d ",*(p+i);確定要插入的位置 p */指向要插入數(shù)據(jù)的位置*/元素后移*/插入數(shù)據(jù)*/:n");3. 用指針實(shí)現(xiàn)選擇法排序程序。輸入 參考程序/*用指針實(shí)現(xiàn)的選擇法排序程序#i nclude "stdio.h"#defi ne M 20mai n()int aM, n,i,j, min ,temp,*p,*q
37、;prin tf("請(qǐng)輸入排序數(shù)據(jù):n");for(p=a;p<a+M;p+)/*scan f("%d",p);prin tf(" 排序前數(shù)列:n");for(p=a;p<a+M;p+)prin tf("%d ",*p);for(i=0;i<M-1;i+)/*q=&ai;for(p=&ai+1;p<a+M;p+)20個(gè)整數(shù),并用指針實(shí)現(xiàn)選擇法升序排序。*/輸入數(shù)據(jù)*/選擇法排序*/if(*p<*q)q=p;temp=ai;ai=*q;*q=temp;prin tf(&q
38、uot;n排序后數(shù)列:n");for(p=a;p<a+M;p+)/*輸出排序結(jié)果 */prin tf("%d ",*p); 凡是排序程序,輸入數(shù)據(jù)調(diào)試時(shí)至少要包括三種情況:任意的一組數(shù)據(jù);一組升序數(shù)據(jù);一 組降序數(shù)據(jù)。 在上面的參考程序中,指針變量 p在每一次的數(shù)組處理中都是變化的,不管是數(shù)組數(shù)據(jù)輸入、數(shù)組數(shù)據(jù)輸出、每一趟排序等,p指針總是逐步向后指向下一個(gè)元素。在編寫調(diào)試程序時(shí),指針p的指向也可以相對(duì)固定,而采用加(或減)移動(dòng)量的方式指向其他的數(shù)組元素。4. 測(cè)試、運(yùn)行自己編寫的程序。將一個(gè)3*3的矩陣轉(zhuǎn)置,用一函數(shù)實(shí)現(xiàn)之。在主函數(shù)中用scanf函數(shù)輸入以
39、下矩陣元素:1357911131519將數(shù)組名作為函數(shù)實(shí)參,在執(zhí)行函數(shù)的過(guò)程中實(shí)現(xiàn)矩陣轉(zhuǎn)置,函數(shù)調(diào)用結(jié)束后在主函數(shù)中輸 出以轉(zhuǎn)置的矩陣。三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 思考題的解決方法。5. 總結(jié)討論本次實(shí)驗(yàn)的結(jié)果和收獲。實(shí)驗(yàn)十一 C程序的指針(二)一、實(shí)驗(yàn)?zāi)康?. 掌握指針和指針變量的概念。2. 掌握簡(jiǎn)單指針變量的定義和基本使用方法。3. 熟悉指針和一維數(shù)組的關(guān)系,掌握指向一維數(shù)組的指針變量的定義方法,熟練使用指針變量 訪問(wèn)一維數(shù)組元素。4. 了解指針和二維數(shù)組的關(guān)系,掌握用指針表示二維數(shù)組元素的方法。5. 了解
40、指針與字符串的關(guān)系,能熟練使用指針處理字符串。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 調(diào)試下列程序,使之具有如下功能:任意輸入2個(gè)數(shù),調(diào)用兩個(gè)函數(shù)分別求:2個(gè)數(shù)的和,2個(gè)數(shù)交換值.要求用函數(shù)指針調(diào)用這兩個(gè)函數(shù),結(jié)果在主函數(shù)中輸出.main ()int a,b,c,(*p)();scan f("%d,%d",&a,&b);p=sum;*p(a,b,c);p=swap;*p(a,b);prin tf("sum=%dn",c);prin tf("a=%d,b=%dn",a,b);sum(i nt a,i nt b,i nt c)c=a+
41、b;swap(i nt a;i nt b)int t;t=a;a=b;b=t;調(diào)試程序時(shí)注意參數(shù)傳遞的是數(shù)值還是地址.2. 測(cè)試、運(yùn)行自己編寫的程序。(1) 寫一個(gè)函數(shù),實(shí)現(xiàn)兩個(gè)字符串的比較。即自己寫一個(gè)strcmp函數(shù),函數(shù)原型為int strcmp ( char * p1,char * p2 );設(shè)pl指向字符串s2,要求當(dāng)s仁s2時(shí),函數(shù)返回值為 0;如果s1<>s2,則返回它們二者第一個(gè)不 相同的ASCII碼值(如“ BOY與“ BAD的第二個(gè)字母不相同,“O'與“ A”之差為79-65=14); 如果s1>s2,則輸出正值;如果 s1<s2,則輸出負(fù)值
42、。兩個(gè)字符串S1、S2由main函數(shù)輸入,strcmp函數(shù)的返回值也由 main函數(shù)輸出。(2) 用指向指針的指針的方法對(duì)n個(gè)整數(shù)排序并輸出。要求將排序單獨(dú)寫成一個(gè)函數(shù)。n和各整數(shù)在主函數(shù)中輸入,最后在主函數(shù)中輸出。(3) 有n個(gè)人圍成一圈,順序排號(hào)。從第1個(gè)人開(kāi)始報(bào)數(shù)(從1到3報(bào)數(shù)),凡報(bào)到3的人退出 圈子,問(wèn)最后留下的是原來(lái)第幾號(hào)的那位。三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 思考題的解決方法。5. 總結(jié)討論本次實(shí)驗(yàn)的結(jié)果和收獲。實(shí)驗(yàn)十二C程序的結(jié)構(gòu)體、實(shí)驗(yàn)?zāi)康?. 掌握結(jié)構(gòu)體的概念和特點(diǎn)。2. 熟練定義結(jié)構(gòu)體數(shù)據(jù)類型
43、,掌握結(jié)構(gòu)體變量的定義及使用方法。3. 了解結(jié)構(gòu)體數(shù)組的特點(diǎn),能使用結(jié)構(gòu)體數(shù)組解決簡(jiǎn)單問(wèn)題。4. 掌握結(jié)構(gòu)體指針的特點(diǎn),能使用結(jié)構(gòu)體指針作函數(shù)的參數(shù)。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟,編寫程序,1. 用結(jié)構(gòu)體類型實(shí)現(xiàn)“日期問(wèn)題”。日期問(wèn)題:已知一個(gè)日期(包括年、月、 計(jì)算這一天是這一年的第幾天。參考程序/*用結(jié)構(gòu)體類型實(shí)現(xiàn)的日期問(wèn)題程序*/#i nclude "stdio.h"struct date/*定義結(jié)構(gòu)體數(shù)據(jù)類型*/int year;int mon th;int day;main ()struct date d;int sum=0;printf(”請(qǐng)輸入日期(年、月、日之間用
44、空格分隔):n");scan f("%d%d%d", &d.year, &d.mo nth, &d.day);switch(d.mo nth)case 1:sum=0;break;case 2:sum=31;break;case 3:sum=31+28;break;case 4:sum=31+28+31;break;case 5:sum=31+28+31+30;break;case 6:sum=31+28+31+30+31;break;case 7:sum=31+28+31+30+31+30;break;case 8:sum=31+28+3
45、1+30+31+30+31;break;case 9:sum=31+28+31+30+31+30+31+31;break;case 10:sum=31+28+31+30+31+30+31+31+30;break;case 11:sum=31+28+31+30+31+30+31+31+30+31;break;case 12:sum=31+28+31+30+31+30+31+31+30+31+30;break; sum+=d.day;/*天數(shù)累加 */if(d.month>2)/*閏年處理 */if(d.year%400=0|d.year%100!=0&&d.year%4=0
46、) sum+=1;prin tf("Total: %dn",sum);程序調(diào)試: 運(yùn)行程序,輸入一個(gè)合法日期數(shù)據(jù),察看并分析程序結(jié)果。 運(yùn)行程序,輸入一個(gè)月份非法的日期數(shù)據(jù),察看并分析程序結(jié)果。 運(yùn)行程序,輸入一個(gè)日子非法的日期數(shù)據(jù),察看并分析程序結(jié)果。 完善程序,使得在任何情況下,都能輸出一個(gè)合理的結(jié)果。 用結(jié)構(gòu)體指針改寫上面的程序。學(xué)生成績(jī)問(wèn)題。有10個(gè)學(xué)生,每個(gè)學(xué)生的數(shù)據(jù)包括學(xué)號(hào)、姓名、3門課的成績(jī)。從鍵盤輸入(包括學(xué)號(hào)、姓名、32.10個(gè)學(xué)生數(shù)據(jù),要求打印出每門課的總平均成績(jī),以及最高分的學(xué)生的數(shù)據(jù) 門課的成績(jī)、平均分?jǐn)?shù))。參考程序*/*學(xué)生成績(jī)問(wèn)題程序#i ncl
47、ude "stdio.h"#defi ne N 10/*定義結(jié)構(gòu)體數(shù)據(jù)類型*/struct stude ntchar nu m5;char n ame10;int score1;int score2;int score3;main ()struct stude nt stuN; /*int max=0,sum1=0,sum2=0,sum3=0;int i,k=0,total,ave1,ave2,ave3,average;for(i=0;i<N;i+)/*輸入學(xué)生數(shù)據(jù),并進(jìn)行成績(jī)統(tǒng)計(jì)/*/*/*/*/*學(xué)號(hào)(不超過(guò)4位)姓名(不超過(guò)9位) 成績(jī) 成績(jī) 成績(jī)1 */2 *
48、/3 */定義結(jié)構(gòu)體數(shù)組*/*/*/*/prin tf("No.%d: n ”,i+1);prin tf("E nter nu m:");gets(stui. nu m);prin tf("E nter n ame:");gets(stui. name);prin tf("E nter score1,score2,score3:");scan f("%d,%d,%d", &stui.score1, &stui.score2, &stui.score3);getchar();tota
49、l=stui.score1+stui.score2+stui.score3;sum1+=stui.score1;sum2+=stui.score2;sum3+=stui.score3;if(total>max)max=total;k=i;/*第k個(gè)結(jié)構(gòu)體元素為最高分學(xué)生數(shù)據(jù)*/ave1=sum1/N;ave2=sum2/N;ave3=sum3/N;average=(stuk.score1+stuk.score2+stuk.score3)/3;prin tf("The average score of this class are:n");prin tf("s
50、core %d, score2=%d, score3=%dn",ave1,ave2,ave3);prin tf("The stude nt of maxscore is:n");printf("nu m:%s ,n ame:%s,score1:%d,score2:%d,score3:%d,average:%dn",stuk. nu m,stuk. name,stuk.score1,stuk.score2,stuk.score3,average);程序調(diào)試:先用三個(gè)學(xué)生的數(shù)據(jù)調(diào)試程序(將程序中符號(hào)常量N定義為3):9字符, 運(yùn)行程序,輸入三個(gè)學(xué)生
51、的數(shù)據(jù):學(xué)號(hào)不超過(guò)4字符,以回車鍵結(jié)束;姓名不超過(guò)以回車鍵結(jié)束;成績(jī)數(shù)據(jù)之間用逗號(hào)分隔,以回車鍵結(jié)束。察看并分析程序結(jié)果。 運(yùn)行程序,輸入的學(xué)號(hào)或姓名信息超過(guò)規(guī)定長(zhǎng)度,察看并分析程序結(jié)果。用三個(gè)學(xué)生的數(shù)據(jù) 調(diào)試通過(guò)后,再用10個(gè)學(xué)生數(shù)據(jù)進(jìn)行測(cè)試。三、實(shí)驗(yàn)報(bào)告要求寫明:1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)內(nèi)容與步驟3. 編寫的程序(題目,經(jīng)調(diào)試、運(yùn)行后正確的程序)4. 思考題的解決方法。5. 總結(jié)討論本次實(shí)驗(yàn)的結(jié)果和收獲。實(shí)驗(yàn)十三編程綜合練習(xí)、實(shí)驗(yàn)?zāi)康?. 掌握C程序設(shè)計(jì)語(yǔ)言的相關(guān)知識(shí),提高C程序的編程技巧;2. 學(xué)會(huì)使用文件相關(guān)函數(shù)進(jìn)行編程綜合練習(xí)。二、實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 文本文件顯示。用任何一種方法
52、先創(chuàng)建一個(gè)文本文件string.txt,編寫程序?qū)⒃撐募膬?nèi)容顯示出來(lái)。參考程序/*顯示文本文件的程序*/#i nclude "stdio.h"main ()FILE *fp;char ch;if(fp=fope n("stri ng.txt","r")=NULL)prin tf("ca nnot ope n source file.n");exit(1);while(!feof(fp)ch=fgetc(fp);putchar(ch);fclose(fp);程序調(diào)試 建立string.txt文本文件。 運(yùn)行程序,察
53、看并分析程序的運(yùn)行結(jié)果。 刪除string.txt文本文件后,運(yùn)行程序,察看并分析程序的運(yùn)行結(jié)果。2. 文件復(fù)制。編寫一個(gè)文本文件復(fù)制函數(shù),并在主函數(shù)main()中調(diào)用它,將上面建立的文本文件string.txt復(fù)制到文件backup.txt 中。參考程序/*文件復(fù)制程序*/#i nclude"stdio.h"void copy(char *,char *);/*文件復(fù)制函數(shù)原型說(shuō)明*/main ()char *source="stri ng.txt"char *target="backup.txt"copy(source,target);void copy(char *source,char *target)FILE *fp_s,*fp_t;if(fp_s=fope n(source,"r")=NULL) /*以讀方式打開(kāi)源文件*/prin tf("ca n
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東城市建設(shè)職業(yè)學(xué)院《心理咨詢與輔導(dǎo)》2023-2024學(xué)年第二學(xué)期期末試卷
- 佳木斯職業(yè)學(xué)院《熱工與熱機(jī)》2023-2024學(xué)年第二學(xué)期期末試卷
- 東北師范大學(xué)《液壓與氣動(dòng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京語(yǔ)言大學(xué)《水資源利用》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江工業(yè)大學(xué)之江學(xué)院《生態(tài)環(huán)境保護(hù)基礎(chǔ)(三)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江越秀外國(guó)語(yǔ)學(xué)院《市場(chǎng)營(yíng)銷學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 中央美術(shù)學(xué)院《課堂教學(xué)技能訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊理工職業(yè)學(xué)院《災(zāi)害衛(wèi)生學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 長(zhǎng)垣烹飪職業(yè)技術(shù)學(xué)院《電工及電子學(xué)(二)》2023-2024學(xué)年第二學(xué)期期末試卷
- 益陽(yáng)醫(yī)學(xué)高等??茖W(xué)?!堕_(kāi)發(fā)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- GB/T 2573-2008玻璃纖維增強(qiáng)塑料老化性能試驗(yàn)方法
- GB/T 22560-2008鋼鐵件的氣體氮碳共滲
- GB/T 1265-2003化學(xué)試劑溴化鈉
- 統(tǒng)編版四年級(jí)道德與法治下冊(cè)全冊(cè)課件
- 醫(yī)院評(píng)審工作臨床科室資料盒目錄(15個(gè)盒子)
- 社區(qū)獲得性肺炎臨床路徑
- 壓力性損傷指南解讀
- 湯姆走丟了 詳細(xì)版課件
- 大學(xué)學(xué)院學(xué)生心理危機(jī)預(yù)防與干預(yù)工作預(yù)案
- 國(guó)有土地上房屋征收與補(bǔ)償條例 課件
- 鐵路建設(shè)項(xiàng)目施工企業(yè)信用評(píng)價(jià)辦法(鐵總建設(shè)〔2018〕124號(hào))
評(píng)論
0/150
提交評(píng)論