C語言程序設(shè)計實驗指導(dǎo)書1_第1頁
C語言程序設(shè)計實驗指導(dǎo)書1_第2頁
C語言程序設(shè)計實驗指導(dǎo)書1_第3頁
C語言程序設(shè)計實驗指導(dǎo)書1_第4頁
C語言程序設(shè)計實驗指導(dǎo)書1_第5頁
免費預(yù)覽已結(jié)束,剩余25頁可下載查看

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計實 驗 指 導(dǎo) 書電子工程學(xué)院2008-2實驗一 C程序的運行環(huán)境和編輯、調(diào)試、運行簡單 C程序一、實驗?zāi)康? . 了解Turbo C 的基本操作方法,學(xué)會獨立使用該系統(tǒng)。2 .掌握在該系統(tǒng)上如何編輯、編譯、運行一個C程序。二、實驗內(nèi)容及步驟1 . 進入C的工作環(huán)境1)在 Windouws環(huán)境下:“開始”一“程序”-“MS-DOS屏幕上進入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個菜單項Fil

2、e Edit Compile Project Option Debug break/watch3 .輸入并運行一個簡單的程序File -New輸入源程序:main()printf("This is a C program.n");printf("OK'n");按F9進行編譯和連接,觀察屏幕上顯示的編譯信息。如果出現(xiàn)出錯信息,則應(yīng)找出原因 并改正。按Run- Run(或按Ctrl+F9) 編譯、連接、運行一起完成。按Run- User screen(或按 Alt+F5) 察看運行結(jié)果。按任一鍵從用戶屏切換回TC窗口。4 .輸入并編輯第二個 C程序F

3、ile -New輸入源程序:main ()int a , b, sum;a=123; b=456;sum=a+b;printf("sum is %d'n",sum);編輯、運行、調(diào)試該程序。5 .編輯、運行、調(diào)試自己編寫的程序(至少一個程序)如:輸入上底、下底和高,計算梯形面積。觀察屏幕上顯示的編譯信息。如果出現(xiàn)出錯信息,則應(yīng)找出原因并改正。用File -Save (或F2)保存程序(程序名為 al.c)三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗內(nèi)容與步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序)4 .編譯過程中出現(xiàn)的錯誤信息。5 .總結(jié)討論本次實驗的結(jié)

4、果和收獲。實驗二數(shù)據(jù)類型、運算符和表達式、實驗?zāi)康? .掌握C語言的各種類型及其定義方法,賦值方法。2 .掌握不同類型之間賦值的規(guī)律。3 .學(xué)會使用各種算術(shù)運算符,特別是自加自減運算符。4 .進一步熟悉C程序的編輯、編譯、連接和運行的過程。二、實驗內(nèi)容及實驗步驟1 .練習(xí)一個有關(guān)字符和整型的程序。main()char cl , c2;c1=97;c2=98;printf("%c %cn”, cl, c2);/*以字符形式輸出 */printf("%d %dn”, cl, c2); /*轉(zhuǎn)換為整數(shù)形式輸出 */2 .轉(zhuǎn)義字符的練習(xí)。main()printf("*r*

5、n");printf("tOA'bK'n");printf("#'n");printf("tABCtDEFtGHI'n");printf("t123t456t789'n");對照輸出,理解轉(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;printf("a=%dnb=%dnc1=%dnc2=%dn",a,b,c1,c2);4 .各種

6、類型混合運算的例子main()a' , c2=66;int a=7,b=3; char c1 =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 .上機改錯題:請指出以下C程序的錯誤所在main();float r,s;r=5.0;s=3.14159*r*r;printf("%fn" , s)mainfloat

7、a,b,c,v;a=2.0; b=3.0; c=4.0v=a*b*c;printf("%fn" , v)6 .調(diào)試、運行自己編寫的程序。(1)已知圓半徑r=1.5 ,圓柱高h=3,求圓周長,圓面積,圓球表面積,圓球體積,圓柱體積。(2)輸入一個華氏溫度,要求輸出攝氏溫度。公式為 c=5/9*(f-32).三、實驗報告要求 寫明1 .實驗?zāi)康? .實驗內(nèi)容及步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序)4 .編譯過程中出現(xiàn)的錯誤信息。5 .總結(jié)討論本次實驗中的問題和收獲i+和+ i的區(qū)別,i-和-i的區(qū)別各種類型混合運算時的類型轉(zhuǎn)換實驗三順序和分支結(jié)構(gòu)的程序設(shè)計、實驗

8、目的1 .掌握C語言中使用最多的一種語句一一賦值語句的使用方法。2 .掌握各種類型數(shù)據(jù)的輸入輸出的方法,能正確使用各種格式轉(zhuǎn)換符。3 .熟練掌握if語句和switch語句。二、實驗內(nèi)容及實驗步驟1.掌握各種格式轉(zhuǎn)換符的正確使用方法(1)輸入程序main()int a, b;float d, e;char c1, c2;double f, g;long m, n;unsigned int p, q;a = 61; b = 62;c1 = ' a' ; c2 =' b';f = 3157.; g = 0.;d = f; e = g;p = a = m = 50000

9、; q = b = n = -60000;printf("a=%d, b=%dnc1=%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)運行此程序并分析結(jié)果。(3)改用scanf函數(shù)輸入數(shù)據(jù)而不用賦值語句,scanf函數(shù)如下:scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&

10、amp;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 /(說明:lf和ld格式符分別用于輸入double型和long型數(shù)據(jù))分析運行結(jié)果。在(3)的基礎(chǔ)上將printf語句改為:printf("a=%d, b=%dnc1=%c, c2=%cnd=%15.6f, e=%15.12fn", a, b, c1, c2, d,e);printf(&

11、quot;f=%f, g=%fnm=%d, n=%dnp=%d, q=%dn", f, g, m, n, p, q);運行程序。2.字符的輸入輸出#include<stdio.h>main()char a,b;a=' g,;b=getchar();putchar(a);putchar(b);3 .以下程序多處有錯。若指定必須按下面的形式輸入數(shù)據(jù),并且必須按下面指定的形式輸出數(shù) 據(jù),請對該程序做相應(yīng)的修改。main double a,b,c,s,v;printf(input a,b,c: n);scanf("%d %d %d" , a,b,c);

12、s=a*b;v=a*b*c;printf("%d %d %d", a,b,c);printf("s=%fn", s, "v=%d'n", v);當(dāng)程序執(zhí)行時,屏幕的顯示和要求輸入形式如下:input 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 .編輯、運行、調(diào)試自己編寫的程序給出一個百分制成績,要求輸出成績等級A、R C、Dk巳90分以上為A, 8089分為B, 7079分為C, 6069分為D, 60分以下為E。事先編

13、好程序,要求分別用 if語句和switch語句實現(xiàn)。運行程序,并檢查結(jié)果是否正確。三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗內(nèi)容與步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序)4 .編譯過程中出現(xiàn)的錯誤信息。5 .總結(jié)討論本次實驗的結(jié)果和收獲。實驗四 循環(huán)結(jié)構(gòu)的程序設(shè)計、實驗?zāi)康? .熟練掌握while循環(huán)語句的應(yīng)用。2 .熟練掌握dowhile循環(huán)語句的應(yīng)用。3 .熟練掌握for循環(huán)語句的應(yīng)用。4 .理解三者的區(qū)別和聯(lián)系。二、實驗內(nèi)容及實驗步驟1 .求 5!main()int n,t;n=1;t=1;while(t<=5)n=n*t;t=t+1;printf("%

14、d",n);2 .將以上程序用dowhile語句改寫。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;printf("%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;printf("%d",s);5 .打印下列圖案*main()int i,j;for(i=1; i<=4;i+)for(j=1;j

15、<= 4-i;j+)printf("");for(j=1;j<=2*i-1;j+)printf("*");printf("n");6 .測試、運行自己編寫的程序。(1)編寫程序,求 1-3+5-7+ -99+101 的值。(2)編寫程序,求 e 的值,e 1 + 1/1 ! +1/2!+1/3!+1/4!+。 編寫程序,統(tǒng)計輸入的一行中小寫字母的個數(shù)。(4)打印100-999之間所有的“水仙花數(shù)”?!八苫〝?shù)”是一個三位數(shù),其各位數(shù)立方和等于該數(shù) 本身。(5) 一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為完數(shù)。求 1000

16、之內(nèi)的所有完數(shù)。三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗內(nèi)容與步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序)4 .編譯過程中出現(xiàn)的錯誤信息。5.總結(jié)討論本次實驗的結(jié)果和收獲。實驗五數(shù)組(一)、實驗?zāi)康? .掌握一維數(shù)組的定義、賦值和輸入輸出的方法。2 .掌握二維數(shù)組的定義、賦值和輸入輸出的方法。二、實驗內(nèi)容及實驗步驟1 .在鍵盤上輸入N個整數(shù),試編制程序使該數(shù)組中的數(shù)按照從大到小的次序排列。分析:C中數(shù)組長度必須是確定大小,即指定 N的值。#define N 10main()int aN,i,j,temp;printf("please input %d numbersn

17、",N);for(i=0;i<N;i+)scanf("%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;printf("the array after sort:n");for(i=0;i<N;i+)printf("%5d",ai);2 .有一個3X4的矩陣,要求輸出其中值最大的元素的值,以及它的行號和列號。 main()int max,i,j,r,c;static int a34=1

18、23,94,-10,218,3,9,10,-83,45,16,44,-99;max=a00;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 .測試、運行自己編寫的程序。(1)編寫程序,將數(shù)組中所有奇數(shù)放在另一個數(shù)組中返回。(2)輸入若干有序數(shù)放在數(shù)組中。然后輸入一個數(shù),插入到此有序數(shù)列中,插入后,數(shù)組中的 數(shù)仍然有序。請對插在最前、插在最后、插在中間三種情況運行程序,以便驗證程序是否正確

19、。(3)求兩個矩陣之和。三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗內(nèi)容與步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序)4 .編譯過程中出現(xiàn)的錯誤信息。5 .總結(jié)討論本次實驗的結(jié)果和收獲。實驗六數(shù)組(二)一、實驗?zāi)康恼莆兆址麛?shù)組的使用。二、實驗內(nèi)容及實驗步驟1 .輸入一串字符,計算其中空格的個數(shù)。#include "stdio.h"#include "string.h"main()char c30;int i,sum=0;gets(c);for(i=0;i<strlen(c);i+)if(ci='')sum=sum+1;p

20、rintf("The number of spaces is : %dn",sum);2 .測試、運行自己編寫的程序。(1)編寫程序,將兩個字符串連接起來,不要使用 strcat函數(shù)。(2)編寫程序,將兩個字符數(shù)組s2中的全部字符復(fù)制到字符數(shù)組s1中,不使用strcpy函數(shù)。復(fù)制時,0 '也要復(fù)制過去。0 '后面的字符不復(fù)制。三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗內(nèi)容與步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序)4 .編譯過程中出現(xiàn)的錯誤信息。5.總結(jié)討論本次實驗的結(jié)果和收獲。實驗七C程序的函數(shù)(一)一、實驗?zāi)康? .掌握自定義函數(shù)的一般結(jié)

21、構(gòu)及定義函數(shù)的方法。2 .掌握形參、實參、函數(shù)原型等重要概念。3 .掌握函數(shù)聲明、函數(shù)調(diào)用的一般方法。二、實驗內(nèi)容及實驗步驟1 .求三角形面積函數(shù)。編寫一個求任意三角形面積的函數(shù),并在主函數(shù)中調(diào)用它,計算任意三 角形的面積。參考程序/*定義和使用求三角形面積函數(shù)的程序*/#include "math.h"#include "stdio.h"float area(float,float,float);main()float a,b,c;printf("請輸入三角形的三個邊長值:n")scanf("%f,%f,%f",

22、&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a&&a>0.0&&b>0.0&&c>0.0)printf("area=%-7.2fn",area(a,b,c);/*以下是計算任意三角形面積的函數(shù)*/float area(float a,float b,float c)float s,area_s;s=(a+b+c)/2.0;area_s=sqrt(s*(s-a)*(s-b)*(s-c);return(area_s);2

23、.上機調(diào)試下面的程序,記錄系統(tǒng)給出的出錯信息,并指出出錯原因。main()int x,y;printf("%dn",sum(x+y);int sum(a,b);int a,b;return(a+b);3 .測試、運行自己編寫的程序。(1)編寫函數(shù),對傳送過來的三個數(shù)選出最大數(shù)和最小數(shù),并通過形參傳回調(diào)用函數(shù)。(2)寫出兩個函數(shù),分別求出兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個函數(shù), 并輸出結(jié)果。兩個整數(shù)由鍵盤輸入。(3)寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否是素數(shù)的信息。三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗內(nèi)容與步驟3 .編寫的程序(題目

24、,經(jīng)調(diào)試、運行后正確的程序)4 .思考題的解決方法。5 .總結(jié)討論本次實驗的結(jié)果和收獲。實驗八C程序的函數(shù)(二)一、實驗?zāi)康? .掌握自定義函數(shù)的一般結(jié)構(gòu)及定義函數(shù)的方法。2 .掌握形參、實參、函數(shù)原型等重要概念。3 .掌握函數(shù)聲明、函數(shù)調(diào)用的一般方法。二、實驗內(nèi)容及實驗步驟1 .菜單程序。編寫一個菜單程序,運行后首先在屏幕顯示如下菜單,圖案的函當(dāng)輸入數(shù)值1后,調(diào)用顯示“ &”圖案的函數(shù)程序;輸入數(shù)值 2后,調(diào)用顯示“ $” 數(shù)程序;輸入數(shù)值 3后結(jié)束程序。 *Menu section1. Design(&)2. Design($)3. Exit*參考程序/*菜單程序*/#in

25、clude "stdio.h" void design1();void design2();main()int op;printf("n printf("n printf("n printf("n printf("n printf("n/*以下代碼生成菜單*/*");Menu section1. Design(&)2. Design($)3. Exit*");*");*");*");*");printf("nPlease enter se

26、lection:"); scanf("%d",&op);if(op=1)design1();else if(op=2) design2();/*以下是顯示幽案的函數(shù)*/void design1()int i;char str31="&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&”;for(i=1;

27、i<10;i+)puts(str);/*以下是顯示$圖案的函數(shù)*/void design2()int i,j;for(i=1;i<10;i+)for(j=1;j<i;j+)putchar('');for(j=1;j<30;j+)putchar('$');printf("n");2 .測試、運行自己編寫的程序。(1)編寫函數(shù),使輸入的一個字符串按反序存放,在主函數(shù)中輸入和輸出字符串。(2)編寫函數(shù),判斷一個字符串是否是回文。若是回文函數(shù)返回值為1;否則函數(shù)返回值為0?;匚氖琼樧x和倒讀都是一樣的字符串。(3)用遞歸法將一個

28、整數(shù)n轉(zhuǎn)換成字符串。(4)寫一函數(shù),輸入一個十六進制數(shù),輸出相應(yīng)的十進制數(shù)。三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗內(nèi)容與步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序)4 .思考題的解決方法。5.總結(jié)討論本次實驗的結(jié)果和收獲。實驗九編譯預(yù)處理、實驗?zāi)康?. 掌握宏定義的規(guī)則,領(lǐng)會帶參數(shù)宏定義和函數(shù)調(diào)用的區(qū)別2. 了解文件包含命令的功能和使用規(guī)則。3. 了解條件編譯的特點和功能。二、實驗內(nèi)容及實驗步驟1.調(diào)試運行下面的程序(1)使用不帶參數(shù)的宏定義#include <stdio.h>#define PI 3.void main()float l,s,r,v;printf

29、("input radius:");scanf("%f",&r);l=2.0*PI*r;s=PI*r*r;v=4.0/3*PI*r*r*r;printf("l=%10.4fns=%10.4fnv=%10.4fn",l,s,v);(2)在宏定義中引用已定義的宏名#include <stdio.h> #define R 3.0#define PI 3.#define L 2*PI*R#define S PI*R*R void main()printf("L=%fnS=%fn",L,S);(3)使用帶

30、參數(shù)的宏#include <stdio.h>#define PI 3.#define S(r) PI*r*r void main() float a,area;a=3.6;area=S(a);printf("r=%fnarea=%fn",a,area);(4)通過宏展開得到若干個結(jié)果#include <stdio.h>#define PI 3.#define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4.0/3.0*PI*R*R*Rvoid main()float r,l,s,v;scanf("%f"

31、,&r);CIRCLE(r,l,s,v);printf("r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2fn”,r,l,s,v);2.利用條件編譯實現(xiàn):如果輸入兩個實數(shù),則交換后輸出;如果輸入的是三個實數(shù),則只輸出其 中最大的數(shù).三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗內(nèi)容與步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序)4 .思考題的解決方法。5 .總結(jié)討論本次實驗的結(jié)果和收獲。實驗十C程序的指針(一)一、實驗?zāi)康? .掌握指針和指針變量的概念。2 .掌握簡單指針變量的定義和基本使用方法。3 .熟悉指針和一維數(shù)組的關(guān)系,掌握指向一維數(shù)組的指針變量的

32、定義方法,熟練使用指針變量 訪問一維數(shù)組元素。4 . 了解指針和二維數(shù)組的關(guān)系,掌握用指針表示二維數(shù)組元素的方法。5 . 了解指針與字符串的關(guān)系,能熟練使用指針處理字符串。二、實驗內(nèi)容及實驗步驟1 .用指針訪問簡單變量。從鍵盤輸入三個整數(shù),要求設(shè)三個指針變量p1,p2,p3 ,使pl指向三個數(shù)的最大者,p2指向次大者,p3指向最小者,然后按由小到大的順序輸出這三個數(shù)。參考程序/*用指針訪問簡單變量的程序*/#include "stdio.h"main()int a,b,c,temp;int *p1,*p2,*p3;printf("請輸入三個整數(shù)值(a,b,c) :

33、 n");scanf("%d,%d,%d",&a,&b,&c);p1=&a;/*使指針pl指向簡單變量a */p2=&b;/*使指針p2指向簡單變量b */p3=&c;/*使指針p3指向簡單變量c */if(*p1<*p2)temp=*p1;*p1=*p2;*p2=temp;if(*p1<*p3)temp=*p1;*p1=*p3;*p3=temp;/*至此pl指向了三個數(shù)中的最大數(shù)*/if(*p2<*p3)temp=*p2;*p2=*p3;*p3=temp;/*至此p3指向了最小數(shù),p2指向了中間數(shù)

34、*/printf("%d,%d,%dn”,*p3,*p2,*p1);運行程序,任意輸入三個整數(shù)(之間以逗號分隔),察看并分析程序運行結(jié)果。 運行程序,按由小到大的順序輸入三個整數(shù)(之間以逗號分隔) ,察看并分析程序運行結(jié)果。 運行程序,按由大到小的順序輸入三個整數(shù)(之間以逗號分隔) ,察看并分析程序運行結(jié)果。2.用指針法在一維有序數(shù)組中插入數(shù)據(jù)。如下是具有10個整數(shù)的升序數(shù)列,存儲在一維數(shù)組中,要求在其中插入任意一個整數(shù)后數(shù)列仍然有序。數(shù)列:10,20,30,40,50,60,70,80,90,99參考程序/*用指針法在一維有序數(shù)組中插入數(shù)據(jù)程序*/#include "st

35、dio.h"#define M 10 main()int aM+1=10,20,30,40,50,60,70,80,90,99;int i,n,*p,*q;printf("請輸入要插入的數(shù)據(jù):n");scanf("%d",&n);aM=n;for(p=a,i=0;i<=M;i+)/*if(n<=*(p+i) p=p+i;/* pbreak;for(q=a+M-1;q>=p;q-)/*(q+1)=*q;*p=n;/*printf("n 插入數(shù)據(jù)后的數(shù)列for(p=a,i=0;i<M+1;i+) print

36、f("%d ”,*(p+i);確定要插入的位置p */指向要插入數(shù)據(jù)的位置*/元素后移*/插入數(shù)據(jù)*/:n");3.用指針實現(xiàn)選擇法排序程序。輸入20個整數(shù),并用指針實現(xiàn)選擇法升序排序。輸入數(shù)據(jù)*/選擇法排序*/參考程序/*用指針實現(xiàn)的選擇法排序程序*/#include "stdio.h"#define M 20 main() int aM,n,i,j,min,temp,*p,*q;printf("請輸入排序數(shù)據(jù):n");for(p=a;p<a+M;p+)/*scanf("%d",p); printf(&qu

37、ot; 排序前數(shù)列:n"); for(p=a;p<a+M;p+) printf("%d ",*p); for(i=0;i<M-1;i+)/* q=&ai; for(p=&ai+1;p<a+M;p+)if(*p<*q)q=p;temp=ai; ai=*q; *q=temp;printf("n排序后數(shù)列:n");for(p=a;p<a+M;p+)/*輸出排序結(jié)果 */printf("%d ",*p); 凡是排序程序,輸入數(shù)據(jù)調(diào)試時至少要包括三種情況:任意的一組數(shù)據(jù);一組升序數(shù)據(jù);一

38、組降序數(shù)據(jù)。 在上面的參考程序中,指針變量 p在每一次的數(shù)組處理中都是變化的,不管是數(shù)組數(shù)據(jù)輸入、 數(shù)組數(shù)據(jù)輸出、每一趟排序等,p指針總是逐步向后指向下一個元素。在編寫調(diào)試程序時,指針p的指向也可以相對固定,而采用加(或減)移動量的方式指向其他的數(shù)組元素。4.測試、運行自己編寫的程序。將一個3*3的矩陣轉(zhuǎn)置,用一函數(shù)實現(xiàn)之。在主函數(shù)中用scanf函數(shù)輸入以下矩陣元素:1 357911131519將數(shù)組名作為函數(shù)實參,在執(zhí)行函數(shù)的過程中實現(xiàn)矩陣轉(zhuǎn)置,函數(shù)調(diào)用結(jié)束后在主函數(shù)中輸 出以轉(zhuǎn)置的矩陣。三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗內(nèi)容與步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序

39、)4 .思考題的解決方法。5.總結(jié)討論本次實驗的結(jié)果和收獲。實驗十一 C程序的指針(二)一、實驗?zāi)康? .掌握指針和指針變量的概念。2 .掌握簡單指針變量的定義和基本使用方法。3 .熟悉指針和一維數(shù)組的關(guān)系,掌握指向一維數(shù)組的指針變量的定義方法,熟練使用指針變量 訪問一維數(shù)組元素。4 .了解指針和二維數(shù)組的關(guān)系,掌握用指針表示二維數(shù)組元素的方法。5 .了解指針與字符串的關(guān)系,能熟練使用指針處理字符串。二、實驗內(nèi)容及實驗步驟1 .調(diào)試下列程序,使之具有如下功能:任意車入2個數(shù),調(diào)用兩個函數(shù)分別求:2個數(shù)的和,2個數(shù)交換值.要求用函數(shù)指針調(diào)用這兩個函數(shù),結(jié)果在主函數(shù)中輸出.main()int a,

40、b,c,(*p)();scanf("%d,%d",&a,&b);p=sum;*p(a,b,c);p=swap;*p(a,b);printf("sum=%dn",c);printf("a=%d,b=%dn",a,b);sum(int a,int b,int c)c=a+b;swap(int a;int b)int t;t=a;a=b;b=t;調(diào)試程序時注意參數(shù)傳遞的是數(shù)值還是地址.2 .測試、運行自己編寫的程序。(1)寫一個函數(shù),實現(xiàn)兩個字符串的比較。即自己寫一個 strcmp函數(shù),函數(shù)原型為int strcmp ( c

41、har * p1,char * p2 );設(shè)pl指向字符串s2,要求當(dāng)s1=s2時,函數(shù)返回值為 0;如果s1<>s2,則返回它們二者第一個不 相同的ASCII碼值(如“ BOY與" BAO的第二個字母不相同,"O'與"A”之差為79-65=14); 如果s1>s2,則輸出正值;如果 s1<s2,則輸出負值。兩個字符串S1、S2由main函數(shù)輸入,strcmp函數(shù)的返回值也由 main函數(shù)輸出。(2)用指向指針的指針的方法對n個整數(shù)排序并輸出。要求將排序單獨寫成一個函數(shù)。n和各整數(shù)在主函數(shù)中輸入,最后在主函數(shù)中輸出。(3)有n個人圍

42、成一圈,順序排號。從第 1個人開始報數(shù)(從1到3報數(shù)),凡報到3的人退出 圈子,問最后留下的是原來第幾號的那位。三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗內(nèi)容與步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序)4 .思考題的解決方法。5 .總結(jié)討論本次實驗的結(jié)果和收獲。實驗十二C程序的結(jié)構(gòu)體一、實驗?zāi)康? .掌握結(jié)構(gòu)體的概念和特點。2 .熟練定義結(jié)構(gòu)體數(shù)據(jù)類型,掌握結(jié)構(gòu)體變量的定義及使用方法。3 .了解結(jié)構(gòu)體數(shù)組的特點,能使用結(jié)構(gòu)體數(shù)組解決簡單問題。4 .掌握結(jié)構(gòu)體指針的特點,能使用結(jié)構(gòu)體指針作函數(shù)的參數(shù)。二、實驗內(nèi)容及實驗步驟1.用結(jié)構(gòu)體類型實現(xiàn)“日期問題”。日期問題:已知一個日期(

43、包括年、月、日) ,編寫程序, 計算這一天是這一年的第幾天。參考程序/*用結(jié)構(gòu)體類型實現(xiàn)的日期問題程序*/#include "stdio.h"struct date/*定義結(jié)構(gòu)體數(shù)據(jù)類型 */int year;int month;int day;main()struct date d;int sum=0;printf("請輸入日期(年、月、日之間用空格分隔):n");scanf("%d%d%d",&d.year,&d.month,&d.day);switch(d.month)case 1:sum=0;break

44、;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+31+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:su

45、m=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)sum+=1;printf("Total: %dn",sum);程序調(diào)試: 運行程序,輸入一個合法日期數(shù)據(jù),察看并分析程序結(jié)果。 運行程序,輸入一個月份非法的日期數(shù)據(jù),察看并分析程序結(jié)果。 運行程序,輸入一個日

46、子非法的日期數(shù)據(jù),察看并分析程序結(jié)果。完善程序,使得在任何情況下,都能輸出一個合理的結(jié)果。用結(jié)構(gòu)體指針改寫上面的程序。(包括學(xué)號、姓名、32.學(xué)生成績問題。有10個學(xué)生,每個學(xué)生的數(shù)據(jù)包括學(xué)號、姓名、3門課的成績。從鍵盤輸入 10個學(xué)生數(shù)據(jù),要求打印出每門課的總平均成績,以及最高分的學(xué)生的數(shù)據(jù)門課的成績、平均分數(shù))。參考程序/*學(xué)生成績問題程序*/#include "stdio.h"#define N 10struct student /*char num5;/*char name10;/*int score1;/*int score2;/*int score3;/*;ma

47、in()struct student stuN; /*定義結(jié)構(gòu)體數(shù)據(jù)類型 */學(xué)號(不超過4位)*/姓名(不超過9位)*/成績1 */成績2 */成績3 */定義結(jié)構(gòu)體數(shù)組*/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ù),并進行成績統(tǒng)計*/printf("No.%d: n",i+1);printf("Enter num:");gets(stui.num);printf("Enter name:&qu

48、ot;);gets();printf("Enter score1,score2,score3:");scanf("%d,%d,%d",&stui.score1,&stui.score2, &stui.score3);getchar();total=stui.score1+stui.score2+stui.score3;sum1+=stui.score1;sum2+=stui.score2;sum3+=stui.score3;if(total>max)max=total;k=i;/*第k個結(jié)構(gòu)體元素為最高分學(xué)

49、生數(shù)據(jù)*/ave1=sum1/N;ave2=sum2/N;ave3=sum3/N;average=(stuk.score1+stuk.score2+stuk.score3)/3;printf("The average score of this class are:n");printf("score1=%d, score2=%d, score3=%dn",ave1,ave2,ave3);printf("The student of maxscore is:n");printf("num:%s,name:%s,score1:%

50、d,score2:%d,score3:%d,average:%dn", stuk.num,,stuk.score1,stuk.score2,stuk.score3,average);程序調(diào)試:先用三個學(xué)生的數(shù)據(jù)調(diào)試程序(將程序中符號常量N定義為3): 運行程序,輸入三個學(xué)生的數(shù)據(jù):學(xué)號不超過4字符,以回車鍵結(jié)束;姓名不超過9字符,以回車鍵結(jié)束;成績數(shù)據(jù)之間用逗號分隔,以回車鍵結(jié)束。察看并分析程序結(jié)果。運行程序,輸入的學(xué)號或姓名信息超過規(guī)定長度,察看并分析程序結(jié)果。用三個學(xué)生的數(shù)據(jù) 調(diào)試通過后,再用10個學(xué)生數(shù)據(jù)進行測試。三、實驗報告要求寫明:1 .實驗?zāi)康? .實驗

51、內(nèi)容與步驟3 .編寫的程序(題目,經(jīng)調(diào)試、運行后正確的程序)4 .思考題的解決方法。5.總結(jié)討論本次實驗的結(jié)果和收獲。實驗十三編程綜合練習(xí)、實驗?zāi)康? .掌握C程序設(shè)計語言的相關(guān)知識,提高C程序的編程技巧;2 .學(xué)會使用文件相關(guān)函數(shù)進行編程綜合練習(xí)。二、實驗內(nèi)容及實驗步驟1.文本文件顯示。用任何一種方法先創(chuàng)建一個文本文件string.txt ,編寫程序?qū)⒃撐募膬?nèi)容顯不'出來。參考程序/*顯示文本文件的程序*/#include "stdio.h" main()FILE *fp;char ch;if(fp=fopen("string.txt",&q

52、uot;r")=NULL) printf("cannot open source file.n");exit(1); while(!feof(fp)ch=fgetc(fp);putchar(ch); fclose(fp);程序調(diào)試建立string.txt 文本文件。 運行程序,察看并分析程序的運行結(jié)果。 刪除string.txt文本文件后,運行程序,察看并分析程序的運行結(jié)果。2 .文件復(fù)制。編寫一個文本文件復(fù)制函數(shù),并在主函數(shù)main()中調(diào)用它,將上面建立的文本文 件string.txt 復(fù)制到文件backup.txt 中。參考程序/*文件復(fù)制程序*/#include"stdio.h"void copy(char *,char *);/*文件復(fù)制函數(shù)原型說明*/main() char *source="string.txt"char *target="backup.txt"copy(source,target);void copy(char *source,char *target) FILE *fp_s,*fp_t;if(fp_s=fopen(source,"廣)=NULL) /*以讀方式打開源文

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論