




版權(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)書(修訂3)張紅梅 編著安徽電子信息職業(yè)技術(shù)學(xué)院軟件學(xué)院2008年6 月 1 日目 錄實(shí)驗(yàn)1 運(yùn)行簡(jiǎn)單的C程序1實(shí)驗(yàn)2 練習(xí)使用算術(shù)運(yùn)算符3實(shí)驗(yàn)3 使用輸入、輸出函數(shù)5實(shí)驗(yàn)4 模擬ATM取款機(jī)界面6實(shí)驗(yàn)5 循環(huán)語(yǔ)句的使用猜數(shù)字游戲7實(shí)驗(yàn)6 一維數(shù)組的應(yīng)用8實(shí)驗(yàn)7 函數(shù)參數(shù)的傳遞9實(shí)驗(yàn)8 嵌套與遞歸調(diào)用的實(shí)現(xiàn)10實(shí)驗(yàn)9 結(jié)構(gòu)體和共用體11實(shí)驗(yàn)10 文件13課程設(shè)計(jì):?jiǎn)捂湵淼牟僮?4實(shí)驗(yàn)1 運(yùn)行簡(jiǎn)單的C程序一 實(shí)訓(xùn)目的:1、熟悉TC運(yùn)行環(huán)境2、練習(xí)簡(jiǎn)單C程序的編寫3、熟練掌握C程序的上機(jī)運(yùn)行步驟二實(shí)訓(xùn)內(nèi)容:1實(shí)驗(yàn)要求:編程求37+29的值,熟悉TC運(yùn)行環(huán)境2 分析與設(shè)計(jì): 編
2、寫一個(gè)main()函數(shù),將數(shù)據(jù)37和29分別用變量保存,然后用另一個(gè)變量存放兩個(gè)變量的和,最后將和變量的值輸出。 3 源代碼:main()int a,b,sum;a=37;b=29;sum=a+b;printf(“sum=%d”,sum);在TC環(huán)境中輸入上面的代碼后,先編譯、連接,再保存,然后再運(yùn)行。具體操作步驟如下所示:(1)編譯(2)連接(3)保存F2(4)運(yùn)行CTRL+F9(5)運(yùn)行結(jié)果ALT+F5按任意鍵返回注意:1、第(1)步和第(2)步可以合起來(lái)操作,使用快捷鍵F92、程序比較大時(shí),最好邊輸入代碼,邊保存,以防止意外情況的發(fā)生。選做題:1. 輸出字符串main()printf(“
3、C programn”);printf(“Hello World!n”);2. 已知圓的半徑,求圓的面積#define PI 3.14main() int r=5; float s; s=PI*r*r; printf(“area=%fn”,s);3. 求任意兩個(gè)數(shù)中的最大值main()int a,b,max; printf(“Input two numbers:”); scanf(“%d,%d”,&a,&b); max=a;if(max<b)max=b; printf(“max=%d”,max);實(shí)驗(yàn)2 練習(xí)使用算術(shù)運(yùn)算符一 實(shí)訓(xùn)目的:1練習(xí)使用基本類型的變量進(jìn)行編程2練
4、習(xí)使用C的運(yùn)算符二實(shí)訓(xùn)內(nèi)容: 1實(shí)驗(yàn)要求 :熟練使用運(yùn)算符 (%,+,-) 2分析與設(shè)計(jì) : 求余運(yùn)算符要求兩個(gè)操作數(shù)都必須是整數(shù);+和- 要看清是先使用還是先自增(減)3源代碼:程序1:取出一個(gè)三位整數(shù)的各個(gè)位,并輸出main()int x=123; char c1,c2,c3; c1=x%10;c2=x/10%10;c3=x/100;printf(“%d,%d,%dn”,c3,c2,c1);運(yùn)行結(jié)果為:1,2,3程序2:練習(xí)自增和自減運(yùn)算符的使用main()int x=2,y,z;y=(+x)+(x+)+(+x);z=(x-)+(-x)+(x-);printf(“x=%d,y=%d,z=%
5、dn”,x,y,z);運(yùn)行結(jié)果:x=2,y=12,z=12選做題:一分析下面程序運(yùn)行結(jié)果產(chǎn)生的原因。1.main()int x, y;char c;x=y=5;ch=a;printf(“%d,%d,%c”,x+,+y,ch);2main()float m,n,k;k=(3.1,m=2.0+2.1);printf(“%f”,k);n=(m=3.8,k);printf(“%f”,n);3.main()int a=2,b=1,c=1,d=6,e=9;b+=a; printf(“%d”,b);c*=a; printf(“%d”,c);d/=a; printf(“%d”,d);e%=a; printf(
6、“%d”,e);4.main()int a1,a2;float b,c;b=5.425;c=52.954;a1=(int)(b+c);a2=(int)b+(int)c;printf(“a1=%d,a2=%d”,a1,a2);二編程題1求1+2+3+4+5+6+7+8+9+10的和。2. 利用中間變量,實(shí)現(xiàn)兩個(gè)變量的值互換。實(shí)驗(yàn)3 使用輸入、輸出函數(shù)一 實(shí)訓(xùn)目的:熟練使用格式輸出函數(shù)printf()和格式輸入函數(shù)scanf() 二實(shí)訓(xùn)內(nèi)容:1 實(shí)驗(yàn)要求: 格式輸入函數(shù)scanf()和格式輸出函數(shù)printf()的使用2分析與設(shè)計(jì): 輸入函數(shù)中的普通字符需要原樣輸入,并注意分隔符的使用;輸出函數(shù)中
7、的格式控制符和輸出項(xiàng)數(shù)要一一對(duì)應(yīng)。3源代碼:程序1:為使得a=1,b=2,c=A,d=5.5,在鍵盤上如何輸入?#include <stdio.h>main()int a,b;char c;float d;scanf(“a=%d b=%d”,&a,&b);scanf(“%c %en”,&c,&d);程序在運(yùn)行時(shí),輸入:a=1 b=2A 5.50程序2:判斷下面程序的運(yùn)行結(jié)果。 main()int x=3,y=2,z=1;printf(“%d,%dn”,(+x,y+),z+2);運(yùn)行結(jié)果:2,3分析得到此結(jié)果的原因。選做題:1輸入一個(gè)小寫字母,將其改寫
8、為大寫字母后輸出。2設(shè)int a,b,c;要使得a=3;b=5;c=6; 問(wèn)該如何在鍵盤上輸入?并用printf函數(shù)輸出a,b,c的值。 scanf(“%d,%d%d”,&a,&b,&c);3編程序輸出下面的圖形* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *實(shí)驗(yàn)4 模擬ATM取款機(jī)界面一 實(shí)訓(xùn)目的:1熟練掌握分支結(jié)構(gòu)if語(yǔ)句及其嵌套 2掌握分析具體問(wèn)題的方法二實(shí)訓(xùn)內(nèi)容:1實(shí)驗(yàn)要求 : 利用if語(yǔ)句和scanf函數(shù)模擬簡(jiǎn)單的ATM取款機(jī)界面2分析與設(shè)計(jì): 用戶先輸入密碼,密
9、碼正確后,可以進(jìn)行帳戶的操作,如查詢,取款等。3源代碼:#include <stdio.h>main()int password,op,number=0,count=1000,n=0;printf("please input password:");scanf("%d",&password);while(password!=1234)/*有三次輸入密碼的機(jī)會(huì)*/n+; if(n=3)printf("you have input 3,can not input again!n"); getch();return;pr
10、intf("password error!please input again:");scanf("%d",&password);loop:printf("nwelcome! Please choice one operate:(1,2,3)n");printf("1:countn2:get moneyn3:returnn");scanf("%d",&op); /*輸入一種操作*/switch(op)case 1:printf("nyour count is %d.n&
11、quot;,count);goto loop;/*帳戶查詢*/case 2:printf("n please input count that you want to get:"); scanf("%d",&number); if(number>count|number<0)printf("nerror"); else printf("nnow ,you can take money!");count-=number; goto loop; /*取款*/case 3:break;/*返回*/de
12、fault:printf("n operate error!");goto loop;選做題:1. 從鍵盤輸入學(xué)生成績(jī)分?jǐn)?shù),輸出對(duì)應(yīng)的等級(jí)。(100-90分為A, 75-89為B ,60-74為C,小于60為D)2. 從鍵盤輸入一個(gè)字符,如果是小寫字母,則輸出“small”,如果是大寫字母,則輸出“big”,如果是數(shù)字,則輸出“number”,其他字符則輸出“other”3. 根據(jù)輸入的x,輸出對(duì)應(yīng)y的值。x x<02x+1 0x<1x-5 x1y=實(shí)驗(yàn)5 循環(huán)語(yǔ)句的使用猜數(shù)字游戲一 實(shí)訓(xùn)目的:1熟練掌握各種循環(huán)程序設(shè)計(jì)的方法 2利用循環(huán)結(jié)構(gòu)解決一些實(shí)際問(wèn)題二實(shí)
13、訓(xùn)內(nèi)容:1實(shí)驗(yàn)要求:先利用randomize()產(chǎn)生一個(gè)隨機(jī)數(shù)種子,再利用隨機(jī)函數(shù)random(100)產(chǎn)生的一個(gè)0100之間的整數(shù),進(jìn)行猜數(shù)字游戲,最后根據(jù)猜的次數(shù)給出評(píng)語(yǔ)。2分析與設(shè)計(jì):利用循環(huán),不斷輸入數(shù)字,與產(chǎn)生的隨機(jī)數(shù)進(jìn)行比較,直到猜中為止。3源代碼:#include <stdlib.h>main()int r,x,n=0;randomize();r=random(100);printf(“Please input a number(0100):”);scanf(“%d”,&x);n=1;while(x!=r)if(x>r)printf(“nbig,inpu
14、t continue:”);if(x<r)printf(“nsmall,input continue:”);scanf(“%d”,&x);n+;if(n<=5)printf(“nvery good”);if(n>5&&n<=10)printf(“ngood”);if(n>10)printf(“nnormal”);選做題:1. 編程:打印出所有的“水仙花數(shù)”。所謂水仙花數(shù)是指一個(gè)3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如:153=1+5+3。2. 編程:打印出1000以內(nèi)所有的“完數(shù)”。所謂完數(shù)是指一個(gè)數(shù)恰好等于它的因子之和。 例如:6的因
15、子為1,2,3;而6=1+2+3,因此6是完數(shù)。要求:按下面格式輸出:6 Its factors are 1,2,33.編寫程序輸出下面圖形 *實(shí)驗(yàn)6 一維數(shù)組的應(yīng)用一 實(shí)訓(xùn)目的:1 掌握一維數(shù)組的定義、賦值和輸入輸出方法2熟練使用一維數(shù)組解決實(shí)際問(wèn)題二實(shí)訓(xùn)內(nèi)容:1實(shí)驗(yàn)要求: 從鍵盤上輸入任意10個(gè)數(shù),將其按從小到大順序排列;再輸入一個(gè)數(shù),將該數(shù)插入到數(shù)列中,不改變數(shù)列的排序規(guī)律。2分析與設(shè)計(jì): 用一維數(shù)組保存輸入的數(shù)據(jù),然后選擇一種排序方法(冒泡排序)進(jìn)行排序,然后在輸入新的數(shù),找到該數(shù)在數(shù)列中的位置,把從該位置到最后的元素,依次后移一位,再將該數(shù)插入數(shù)列中。3源代碼:#define N 1
16、0print(int *a,int n) /*輸出數(shù)列函數(shù)*/int i; printf("n"); for(i=0;i<n;i+) printf("%3d",ai); printf("n");sort(int a)/*冒泡排序函數(shù)*/ int i,j,t; printf("n"); for(i=0;i<N-1;i+)/*比較趟數(shù)*/ for(j=0;j<N-1-i;j+)/*每趟比較次數(shù)*/ if(aj>aj+1) t=aj;aj=aj+1;aj+1=t;/*交換*/insert(int
17、*a,int x)/*插入函數(shù)*/int i,j; for(i=0;i<N;i+) if(ai>x) break; /*若ai>x則找到要插入的位置為i*/ for(j=N-1;j>=i;j-) aj+1=aj; /*從ai到aN-1的每個(gè)元素都后移一位*/ ai=x; /*在i位置上插入x*/ printf("n"); main()int a11,i,x; printf("please input 10 nums:n"); for(i=0;i<N;i+) scanf("%d",&ai);/*輸入
18、*/ sort(a);/*排序*/ print(a,10);/*輸出*/printf("please input insert num:");scanf("%d",&x);/*輸入要插入的新數(shù)*/ insert(a,x);/*插入新數(shù)*/print(a,11); /*輸出*/選做題:1編程求一個(gè)4×4矩陣兩條對(duì)角線上所有元素之和。2.有一串字符串,最多80個(gè)字符。要求統(tǒng)計(jì)其中英文大寫字母、小寫字母、數(shù)字、空格以及其他字符的個(gè)數(shù)。3.自己編寫下面的函數(shù):strcat()、strcmp()和strlen(),實(shí)現(xiàn)相應(yīng)的功能。實(shí)驗(yàn)7 函數(shù)參數(shù)
19、的傳遞一 實(shí)訓(xùn)目的:1理解函數(shù)的形參和實(shí)參的概念和應(yīng)用2掌握函數(shù)的值調(diào)用和引用調(diào)用的含義3掌握簡(jiǎn)單變量、數(shù)組和指針作為函數(shù)參數(shù)進(jìn)行傳遞的形式二實(shí)訓(xùn)內(nèi)容:1實(shí)驗(yàn)要求:編寫自定義函數(shù):進(jìn)行兩個(gè)數(shù)據(jù)之間的交換 2分析與設(shè)計(jì):使用兩種參數(shù)傳遞方法,進(jìn)行數(shù)據(jù)的交換,比較下面程序的運(yùn)行結(jié)果有何不同。3源代碼:程序1:參數(shù)的值傳遞。void swap(int x,int y)int t; t=x; x=y; y=t; printf(“x=%dty=%dn”,x,y);main()int a,b; printf(“please input a,b:”); scanf(“%d,%d”,&a,&b
20、); swap(a,b); printf(“a=%dtb=%dn”,a,b);程序2:參數(shù)的地址傳遞。void swap(int *x,int *y)int t; t=*x; *x=*y; *y=t; printf(“x=%dty=%dn”,*x,*y);main()int a,b; printf(“please input a,b:”); scanf(“%d,%d”,&a,&b); swap(a,b); printf(“a=%dtb=%dn”,a,b);選做題:1.編寫求兩個(gè)數(shù)中最大值的函數(shù)2.編寫一個(gè)判斷某個(gè)數(shù)是否是素?cái)?shù)的函數(shù),要求在主函數(shù)中輸入一個(gè)整數(shù),并輸出是否是素?cái)?shù)的
21、信息。實(shí)驗(yàn)8 嵌套與遞歸調(diào)用的實(shí)現(xiàn)一 實(shí)訓(xùn)目的:1掌握函數(shù)嵌套調(diào)用與遞歸調(diào)用的函數(shù)的含義2重點(diǎn)掌握函數(shù)嵌套調(diào)用與遞歸調(diào)用的實(shí)現(xiàn)過(guò)程3培養(yǎng)和鍛煉解決較復(fù)雜C程序設(shè)計(jì)的能力4. 掌握單步運(yùn)行的調(diào)試方法二實(shí)訓(xùn)內(nèi)容:1實(shí)驗(yàn)要求: 利用函數(shù)嵌套調(diào)用與遞歸調(diào)用求兩個(gè)數(shù)的階乘和2分析與設(shè)計(jì): 先分別求出兩個(gè)數(shù)的階乘值,然后相加3源代碼:#include <stdio.h>#include <conio.h>long sum(int a,int b)/*求兩個(gè)數(shù)的階乘和*/long c1,c2;c1=fact(a);c2=fact(b);return(c1+c2);long fact(
22、int n)/* 利用遞歸求一個(gè)數(shù)的階乘*/long r=1; if(n<0) printf(“n<0,data error!n”); else if(n=0|n=1) r=1; else r=n*fact(n-1);return r;main()int n1,n2;long result; clrcsr();printf(“please input two number:n”);scanf(“%d,%d”,&n1,&n2);result=sum(n1,n2);printf(“Result=%ld”,result);getch();選做題:1.猴子吃桃問(wèn)題:猴子第一
23、天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,又多吃了一個(gè)。第二天早上又將剩下的桃子吃了一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想再吃時(shí),見只剩一個(gè)桃子了。求第一天共摘了多少個(gè)桃子。(用遞歸函數(shù)實(shí)現(xiàn))2.年齡問(wèn)題:一家有4個(gè)孩子,已知最小的孩子10歲,若每個(gè)孩子的年齡都差2歲,問(wèn)最大的孩子幾歲。(用遞歸函數(shù)實(shí)現(xiàn))實(shí)驗(yàn)9 結(jié)構(gòu)體和共用體一 實(shí)訓(xùn)目的:1掌握結(jié)構(gòu)體類型變量的定義及使用2掌握結(jié)構(gòu)體變量的引用形式,結(jié)構(gòu)體數(shù)組的應(yīng)用3理解結(jié)構(gòu)體作為不同數(shù)據(jù)類型的一個(gè)整體在實(shí)際編程中的應(yīng)用二實(shí)訓(xùn)內(nèi)容:1實(shí)驗(yàn)要求: 輸入6名學(xué)生的基本信息,每名學(xué)生的基本信息包括:學(xué)號(hào)、姓名、
24、性別、年齡、語(yǔ)文成績(jī)、數(shù)學(xué)成績(jī)、物理成績(jī)、總分、平均分等數(shù)據(jù)項(xiàng)。根據(jù)各科成績(jī)計(jì)算總分和平均分,并輸出這6名學(xué)生的信息。2分析與設(shè)計(jì): 利用結(jié)構(gòu)體類型數(shù)組元素存放6名學(xué)生的信息,并根據(jù)要求求出總分和平均分。3源代碼:#define N 6#include “stdio.h”struct student char num8; char name10; char sex; int age; int chi_score,math_score,phy_score; int sum; int average;main() int i; struct student studN;/*輸入N名學(xué)生的基本信息*
25、/ for(i=0;i<N;i+) printf(“nThe student_number of number %d is: “,i+1); gets(studi.num); printf(“nThe student_name of number %d is: “,i+1); gets(); printf(“nThe student_sex of number %d is: “,i+1); studi.sex=getchar(); printf(“nThe student_age of number %d is: “,i+1); scanf(“%d”,&stu
26、di.age); printf(“nThe Chinese_score of number %d is: “,i+1); scanf(“%d”,&studi.chi_score); printf(“nThe math_score of number %d is: “,i+1); scanf(“%d”,&studi.math_score); printf(“nThe physics_score of number %d is: “,i+1); scanf(“%d”,&studi.phy_score); /*計(jì)算學(xué)生的總分和平均分*/for(i=0;i<N;i+) s
27、tudi.sum=studi.chi_score+studi.math_score+studi.phy_score;studi.average=studi.sum/3;/*輸出學(xué)生的基本信息情況*/printf(“nNumber Name Sex Age Chinese Math Physics Sum Average”);printf(“n-”);for(i=0;i<N;i+) printf(n%-8s%-10s%3c%3d”,studi.num,;studi.sex,studi.age); printf(%6d%6d%6d”,studi.chi_score,stu
28、di.math_score, studi.phy_score); printf(“%6d%6d”,studi.sum,studi.average);printf(“n-”);選做題:1.有一個(gè)long型整數(shù),要求將該數(shù)的前兩個(gè)字節(jié)和后兩個(gè)字節(jié)的數(shù)據(jù)分別輸出,用十六進(jìn)制形式輸出。2. 口袋中有紅、黃、藍(lán)、白、黑5種顏色的球若干個(gè)。每次從口袋中取出3個(gè)球,問(wèn)得到3種不同色的球的可能取法,打印出每種組合的3種顏色。球只能是5種顏色之一,而且要判斷各球是否同色,應(yīng)使用枚舉類型變量處理。實(shí)驗(yàn)10 文件一 實(shí)訓(xùn)目的:1掌握文件以及緩沖文件系統(tǒng)、文件指針的概念2掌握文件的打開、關(guān)閉、讀、寫等操作3學(xué)會(huì)用緩沖
29、文件系統(tǒng)對(duì)文件進(jìn)行簡(jiǎn)單的操作二實(shí)訓(xùn)內(nèi)容:1實(shí)驗(yàn)要求:有5個(gè)學(xué)生,每個(gè)學(xué)生有3門課的成績(jī),從鍵盤輸入以下數(shù)據(jù)(包括學(xué)號(hào)、姓名、三門課成績(jī)),計(jì)算出平均成績(jī),將原有數(shù)據(jù)和計(jì)算出的平均分存放在磁盤文件”student”中。學(xué)生原有數(shù)據(jù):A2005001 Wang 89,98,67A2005002 Li 70,80,90A2005006 Sun 78,88,80A2005012 Zhang 100,87,91A2005020 Zhao 81,64,922分析與設(shè)計(jì): 用結(jié)構(gòu)體數(shù)組保存學(xué)生的基本信息,利用文件的寫操作將學(xué)生的基本信息寫入文件”student.dat”中。3源代碼:#include <
30、;stdio.h>#dedine SIZE 5struct student_type char name10; int num; int score3; int ave;struct student_type studSIZE;main() void save(); int i,sumSIZE; FILE *fpt; clrscr();for(i=0;i<SIZE;I+) sumi=0;for(i=0;i<SIZE;i+) scanf(“%s %d %d %d %d”,,&studi.num,&studi.score0,&studi
31、.score1,&studi.score2); sumi=studi.score0+studi.score1+studi.score2; studi.ave=sumi/3;save();fpt=fopen(“student.dat”,”rb”);printf(“n 姓名 學(xué)號(hào) 成績(jī)1 成績(jī)2 成績(jī)3 平均分n”);printf(“-n”);for(i=0;i<SIZE;i+) fread(&studi,sizeof(struct student_type),1,fpt); printf(“%-10s %3d %5d %5d %5d %5dn”,,stu
32、di.num,studi.score0,studi.score1,studi.score2,studi.ave);fclose(fpt);void save() FILE *fp; int i; if(fp=fopen(“student.dat”,”wb”)=NULL) printf(“本文件不能打開,出錯(cuò)n”); exit(0); for(i=0;i<SIZE;i+) if(fwrite(&studi,sizeof(struct student_type),-1,fp)!=1) printf(“文件寫入數(shù)據(jù)時(shí)出錯(cuò)!n”); exit(0); fclose(fp);選做題:編寫一
33、個(gè)通訊錄,要求字段包括:姓名、E-mail、QQ、聯(lián)系電話。通過(guò)鍵盤輸入數(shù)據(jù),并把數(shù)據(jù)存在一個(gè)文件中,通過(guò)查找顯示一個(gè)人員的具體信息。課程設(shè)計(jì):?jiǎn)捂湵淼牟僮髟O(shè)計(jì)要求本次課程設(shè)計(jì)的目的是在學(xué)習(xí)動(dòng)態(tài)分配函數(shù)的基礎(chǔ)上,利用帶指針選項(xiàng)的結(jié)構(gòu)體構(gòu)造單鏈表,并實(shí)現(xiàn)單鏈表的插入、刪除和查找等操作。所需知識(shí)處理動(dòng)態(tài)鏈表所需的函數(shù):malloc函數(shù)函數(shù)原型:void *malloc(unsigned int size);作用:在動(dòng)態(tài)區(qū)分配一個(gè)長(zhǎng)度為size的連續(xù)空間,函數(shù)返回值是一個(gè)指向分配域起始地址的指針,如內(nèi)存空間不足,返回空指針NULL。 (此處:void為無(wú)確定類型) calloc函數(shù)函數(shù)原型:void
34、 *calloc(unsigned n,unsigned size);作用:在內(nèi)存動(dòng)態(tài)區(qū)分配n個(gè)長(zhǎng)度為size的連續(xù)空間,函數(shù)返回指向分配域起始地址的指針,若分 配不成功,返回NULL值。free函數(shù)函數(shù)原型:void free(void *p);作用:釋放由p指向的內(nèi)存區(qū),使這部分內(nèi)存區(qū)能被其它變量使用。P所指向的是最近一次calloc或malloc分配的存儲(chǔ)區(qū)域。 free函數(shù)無(wú)返回值。 注:舊版本提供的malloc和calloc函數(shù)得到的是指向字符型數(shù)據(jù)的指針。ANSI C提供的malloc和calloc函數(shù)規(guī)定為void *類型,這并不是說(shuō)該函數(shù)調(diào)用后無(wú)返回值,而是返回一個(gè)結(jié)點(diǎn)的地址,
35、該地址的類型為void(無(wú)類型或類型不確定),即一段存儲(chǔ)區(qū)的首址,其具體類型無(wú)法確定,只有使用時(shí)根據(jù)各個(gè)域值數(shù)據(jù)再確定。3系統(tǒng)分析共有以下幾大功能模塊:主函數(shù):完成對(duì)各函數(shù)的聲明和調(diào)用建立函數(shù):完成單鏈表的建立插入函數(shù):在已有單鏈表上插入結(jié)點(diǎn)刪除函數(shù):在已有單鏈表上刪除某個(gè)結(jié)點(diǎn)輸出函數(shù):輸出已建立的單鏈表4.設(shè)計(jì)程序代碼#include "stdio.h"#include "malloc.h"#define NULL 0#define LEN sizeof (struct student)struct student int data; struct s
36、tudent *next; ;/*結(jié)點(diǎn)結(jié)構(gòu)*/int n;struct student *creat(void) /*單鏈表的建立*/ struct student *head; struct student *p1, *p2; n=0; p1=p2=(struct student *) malloc(LEN); scanf("%d",&p1->data); head=NULL; while(p1->data!=0) n=n+1; if(n=1)head=p1; else p2->next=p1; p2=p1; p1=(struct student
37、 *)malloc (LEN);scanf("%d",&p1->data); p2->next=NULL; return(head);void print( struct student *head) /*輸出鏈表*/ struct student *p; printf("n Now, these %d records are :n", n); p=head; if(head!=NULL) do printf("%dn", p->data); p=p->next; while(p!=NULL);stru
38、ct student *del(struct student *head,int num)/* 刪除一個(gè)結(jié)點(diǎn)*/ struct student *p1,*p2; if(head=NULL) printf("n list is null ! n"); goto end; p1=head; while(num!=p1->data && p1->next!=NULL) p2=p1; p1=p1->next; if(num=p1->data) if(p1=head) head=p1->next; else p2->next=p1->next; printf("delete: %dn",num); n=n-1; else printf("%d not been found ! n",num); end: return(head);struct student *insert(struct student *head, struc
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程采購(gòu)合同(31篇)
- 項(xiàng)目執(zhí)行過(guò)程中遇到問(wèn)題的解析與應(yīng)對(duì)方案
- 電信行業(yè)網(wǎng)絡(luò)優(yōu)化與數(shù)據(jù)安全保障方案
- 塑料產(chǎn)品買賣合同書
- 股份制企業(yè)合同審查與管理文書
- 物流運(yùn)輸承包合同
- 房地產(chǎn)合作銷售開發(fā)協(xié)議書
- 管樁施工勞務(wù)合同
- 能源行業(yè)資源整合合作協(xié)議
- 承包餐廳合同
- 鋼煤斗內(nèi)襯不銹鋼板施工工法
- 公司人事招聘面試技巧培訓(xùn)完整版課件兩篇
- 第1課《立足時(shí)代+志存高遠(yuǎn)》第1框《時(shí)代為我搭舞臺(tái)》【中職專用】《心理健康與職業(yè)生涯》(高教版2023基礎(chǔ)模塊)
- 出國(guó)勞務(wù)派遣合同(專業(yè)版)電子版正規(guī)范本(通用版)
- 公路工程安全風(fēng)險(xiǎn)辨識(shí)與防控手冊(cè)
- 供應(yīng)商評(píng)估報(bào)告范本
- 職業(yè)生涯規(guī)劃-自我認(rèn)知-價(jià)值觀
- 小學(xué)生品德發(fā)展與道德教育PPT完整全套教學(xué)課件
- 汽車修理廠維修結(jié)算清單
- 建筑集團(tuán)公司商務(wù)管理手冊(cè)(投標(biāo)、合同、采購(gòu))分冊(cè)
- 威海劉公島PPT介紹課件
評(píng)論
0/150
提交評(píng)論