




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗指導(dǎo)書
一、實驗環(huán)境簡介
(一)、C程序的開發(fā)過程
開發(fā)一個C語言程序,要經(jīng)過以下4個階段:
(1)編輯源程序文件;
(2)編譯源程序;
(3)程序連接;
(4)運行程序。
1、編輯C語言源程序
編寫源程序就是程序設(shè)計人員用C程序設(shè)計語言描述解決某問題的過程和
具體實現(xiàn)的方法。這樣寫出的程序叫做C語言源程序。源程序以文件(File)的
形式存儲在計算機的的軟盤或硬盤中,通常它是一種文本文件,所謂文本文件就
是以ASCII碼存儲的文件,它可以用仟何文本編輯軟件編寫。
文件要有文件名,文件以其文件名在磁盤中存儲和與其他文件相區(qū)別。文件
名由兩部分組成:文件名和擴展名。其書寫格式為:
文件名.擴展名
按C語言編寫的源程序,其文件擴展名通常為c。例如,filel.c
2.編譯源程序
計算機系統(tǒng)只能認識和執(zhí)行用機器語言編寫的程序,不能理解用c語言或其
他非機器語言編寫的程序。所以,源程序必須翻譯成機器語言程序。翻譯是通過
一個稱為編譯器(Compiler)或編譯系統(tǒng)的軟件實現(xiàn)的。編譯系統(tǒng)編譯源程序時,
首先對源程序進行語法檢查,如果發(fā)錯誤,就會顯示錯誤的位置和錯誤的性質(zhì)并
終止編譯。這時,用戶需要對源程序進行再編輯,修改源程序文件中的錯誤。然
后,重新進行編譯。這個過程反復(fù)進行,直到編譯器認為沒有語法錯誤為止。源
程序通過編譯后,產(chǎn)生一個目標(biāo)文件。目標(biāo)文件的文件名就是源程序文件的文件
名,但擴展名為。bj,例如源文件filel.c,經(jīng)編譯后產(chǎn)生目標(biāo)文件:filel.objo
目標(biāo)文件由計算機的機器指令和其他一些二進制信息組成,它仍不能由計算機直
接執(zhí)行,還要經(jīng)過一個所謂的連接過程。
3.連接程序
由編譯系統(tǒng)中稱為連接程序(Linker)的軟件,將目標(biāo)文件和編譯系統(tǒng)的系
統(tǒng)函數(shù)庫連接生成可執(zhí)行的機器語言程序,這一過程稱為連接。連接程序在連接
過程中也要對程序進行語法檢查,如果發(fā)現(xiàn)錯誤,則給出相應(yīng)的錯誤信息并終止
連接。這時,程序設(shè)計人員要再次對源程序文件作相應(yīng)修改,重新進行編譯,重
新進行連接,這個過程要一直進行到連接成功為止。目標(biāo)文件經(jīng)成功連接后,最
終產(chǎn)生一個計算機直接可執(zhí)行的機器語言程序文件。可執(zhí)行程序文件以源程序文
件名存儲,但擴展名為exe。例如,目標(biāo)文件filel.obj經(jīng)連接后產(chǎn)生可執(zhí)行文
件:filel.exe。
4、運行程序
運行程序,即執(zhí)行程序。通過運行程序,實現(xiàn)程序的功能。如果程序運行不
正常或不能得到預(yù)期的結(jié)果,還需要從檢查源程序開始,重復(fù)上述過程,直到程
序運行正確為止。
運行可執(zhí)行文件,既可以在不同的操作系統(tǒng)中執(zhí)行,常見的有DOS系統(tǒng)、
WINDOWS系統(tǒng)等狀態(tài)下執(zhí)行,也可以在C語言系統(tǒng)提供的集成開發(fā)環(huán)境下進行。
圖1說明了C程序的開發(fā)過程。
圖1C程序的開發(fā)過程示意圖
(二)C語言的集成開發(fā)環(huán)境
為完成上述的程序開發(fā)過程,在不同的系統(tǒng)中可以采用不同的操作方式,在
windows環(huán)境,可以采用VC++,來實現(xiàn),但他對計算機的環(huán)境要求稍高一些,在
課程視頻中給予描述和實驗。C語言系統(tǒng)還提供兩種獨立的操作方式(對環(huán)境要
求不高)。一種是傳統(tǒng)的命令行方式,就是在DOS狀態(tài)下,用戶直接通過鍵入命
令進行工作;另一種是在集成開發(fā)環(huán)境(IDE)方式下操作。本節(jié)簡要介紹IDE
方式的使用。
IDE方式的優(yōu)點,就在于它將源程序的編輯。編譯。連接。調(diào)試和運行等多
種操作集成在一個平臺之上進行,從而為用戶創(chuàng)造了一個非常方便的良好的工作
環(huán)境。本節(jié)以TurboC++的IDE為例,簡要介紹在IDE方式下開發(fā)C程序的方
法。更詳細的內(nèi)容可參考相關(guān)的手冊。
1.IDE的啟動
在啟動之前,首先要安裝TurboC++系統(tǒng)軟件。關(guān)于安裝方面的細節(jié),這
里就不介紹了。系統(tǒng)是在操作系統(tǒng)DOS環(huán)境下運行的。在TurboC++系統(tǒng)裝
入之后,為了進入IDE只需在DOS狀態(tài)下鍵入如下的命令行:
TC<回車)
系統(tǒng)被啟動后,屏幕顯示如圖2所示的集成開發(fā)環(huán)境。
FileEditRunCompileProjectOptionsDebugBienk八Vntch
3MS-DOS方式-TC
1。X】8q口||洛|圖I回百A]知
Line1Col1InsertIndentTaCompiler£103.C
Hinclude"stdio.h'Linker
main()Environment
{printf(**V\\*isachdruDirectories
Hincludedirectories:E:\LfiNGUIGE\TC\INCLUDE
printf("\rb\n");Librarydirectories:E:\LANGUIGE\TC\LIB
getch();Outputdirectory:E:\LRNGUIGE\TC
)TurboCdirectoryE:\LANGUIGE\TC
Pickfilename:L:\LANGUIGC\TCTCPICK.TCP
Currentpickfile\LANGUIGE\TCTCPICK.TCP
Message■
Fl-HelpF5-Zoon?F6-SwitchF7-TraceF8-StepF9-MakeF10-N[CAPS
?I
圖2集成開發(fā)環(huán)境示意圖
由圖2可以看到,集成開發(fā)環(huán)境最上面的一行是主菜單。所有的操作命令都
可以從這個菜單中或它的子菜單中找到。所以,即使用戶記不住許多操作命令的
快捷鍵,也沒有關(guān)系,只需用鼠標(biāo)從菜單中選擇所要執(zhí)行的操作命令和輸入必要
的信息即可。
主菜單下面是程序的編輯區(qū)。用戶在這里輸入和編輯自己的c源程序。編輯
區(qū)的頂部顯示程序文件名,編輯區(qū)的底部顯示當(dāng)前編輯字符(光標(biāo)處)所在的行
號和列號。
編輯區(qū)的下方是狀態(tài)信息輸出區(qū)。在這里可以看到編譯和連接過程中的信
息,包括編譯系統(tǒng)給出的錯誤信息。狀態(tài)信息區(qū)的下面是一行提示信息,稱為提
示行。提示行給出一些快捷鍵及其含義。
在后臺輸出區(qū)則顯示程序運行時輸出的結(jié)果,用戶可以通過CTRL+F5進后臺
輸出區(qū)查看運行結(jié)果。
2.輸入和編輯源程序
源程序的輸入和編輯是在編輯區(qū)進行的。這里可能有兩種情況:第一種情
況是第一次輸入程序,第二種情況是源程序文件已經(jīng)在磁盤中存在。在第一種情
況下,用戶需要在編輯窗口直接用鍵盤逐個字符地輸入源程序。操作過程:
(1)啟動TC
(2)選擇主菜單中的File
(3)選擇子菜單中的New,就可以在編輯窗口直接用鍵盤逐個字符輸入源
程序。
(4)當(dāng)源程序完成之后,取新文件名存放,方法:選擇主菜單中的File
后,再選子菜單中的Saveas,然后輸入希望的文件名后,就按給定的文件名保
存了源文件信息。
在第二種情況下源程序文件已在磁盤中,,如果想要編輯的該文件,通過下
面的操作,將文件讀到編輯窗口:
(1)選擇主菜單中的File;
(2)選擇File下拉菜單中的Open;
(3)選中或輸入所需的文件名并單擊OK按鈕。
系統(tǒng)提供豐富的編輯命令,使用戶能夠輕松地編輯源程序。程序編輯完畢,
一般要立即存盤,這個操作可以通過選擇主菜單的File及其下面的Save或Save
as來實現(xiàn)。
3.編譯源程序文件
編澤源程序的步驟是:
(1)將待編譯的源程序輸入編輯區(qū);
(2)選主菜單中的Compile;
(3)選Compile下拉菜單中的CompiletoOBJ。
如果源程序文件中沒有語法錯誤的話,編譯的結(jié)果是在磁盤中產(chǎn)生一個擴
展名為,.obj的中間代碼文件(目標(biāo)程序)。否則進入編輯狀態(tài),修改程序,即
進入第2步,直到正確為止。
4.程序連接
產(chǎn)生了.obj文件后,就可以進行程序的連接了。連接的操作方法是:使用主
菜單Compile下面的MakeEXEFile,命令。如果沒有錯誤的話,將產(chǎn)生一個擴
展名為?exe的可執(zhí)行文件。
5.運行可執(zhí)行文件
運行程序的命令是主菜單中Run下面的子菜單中的Run命令。程序運行中的
輸出,將顯示在屏幕的后臺輸出區(qū)。如果程序運行的結(jié)果產(chǎn)生了不合邏輯的垢果,
這可能意味著程序有錯誤。應(yīng)該檢查程序,找出錯誤,再進行相應(yīng)的編輯、編譯、
連接和運行。
在C++的集成開發(fā)環(huán)境下,上述的編譯、連接和運行3個過程,也可以通過
一次操作完成。操作方法是:執(zhí)行主菜單中Run下面的子菜單中的Run命令,這
時,3個過程依次完成。當(dāng)然,在3個過程中的任何階段,只要系統(tǒng)發(fā)現(xiàn)了程序
中的語法錯誤,都會立即在狀態(tài)信息輸出區(qū)給出錯誤信息,并停止進一步的操作。
二、微型計算機系統(tǒng)配置
1.硬件
PC系列微型計算機,包括XT、AT、286、386、486、奔騰及各種兼容機,
要求內(nèi)存為640KB以上,一個硬盤驅(qū)動器和一個軟盤驅(qū)動器。彩色顯示器,并配
備鼠標(biāo)器。
2軟件
安裝操作系統(tǒng)(可以為WINDOWS、也可以為DOS操作系統(tǒng))。TurboC(或
TurboC++)軟件一套。
三、實驗項目
實驗Lc++的IDE基本操作與簡單程序
1.實驗?zāi)康?/p>
掌握在IDE環(huán)境下運行C語言程序的操作方法。
2.實驗內(nèi)容
按下面的步驟進行實驗。
(1)開機后在DOS狀態(tài)下,啟動TurboC(或TurboC++)的IDE環(huán)境;
(2)觀察菜單欄(或子菜單)的作用:
(3)分別輸入下列源程序;
源程序1:
#include<stdio.h>
main()
(
printfCHeUo,World!”);
)
源程序2:
#include<stdio.h>
main()/*Thisisthemainprogram*/
{inta,b,sum;
a=10;
b=24;
sum=add(a,b);
printT'sumr%d\nn,sum);
)
intadd(intx,inty)
{intz;
z=x+y;
return(z);}
(4)分別把源程序以文件的形式寫入磁盤;
(5)分別運行兩個程序,觀察程序的輸出結(jié)果;
實驗2:分支程序設(shè)計
1.實驗?zāi)康?/p>
掌握分支與循環(huán)程序設(shè)計的方法和有關(guān)語句。
2.實驗內(nèi)容
(1)編寫一個C程序,輸入a、b、c三個值,輸出其中最大值。
#include<stdio.h>
intmain()
{floata,b,c,t;
scanf("%f,%f,%『,&a,&b,&c);
if(a<b)
{t=a;a=b;b=t;}
if(a<c)
{t-a;a-c;c-t;}
printf(“輸出最大值:%5.2f;a);
return0;
)
(2)求一元二次方程ax2+bx+c=0的根。分別考慮d=b2-4ac大于0、等于。和
小于。這3種情況。
#include"math.h"http://cpp107
#include<stdio.h>
main()
{floata,b,c,disc,xl,x2,p,q;
scanf("%f%f%r,&a,&b,&c);
disc=b*b-4*a*c;
if(fabs(disc)<=le-6)//fabs():求絕對值庫函數(shù)
printf(uxl=x2=%7.2f\n",-b/(2*a));〃兩個根相等
else
{if(disc>le-6)
(x1=(-b+sqrt(disc))/(2*a);〃兩個不相等的實根
x2=(-b-sqrt(disc))/(2*a);
printf("x1=%7.2f,x2=%7.2f\n,',xl,x2);
)
else
{p=-b/(2*a);〃求出兩個共鮑復(fù)根
q=sqrt(fabs(disc))/(2*a);
printf(Hx1=%7.2f+%7.2fi\n",p,q);//輸出兩個共輾復(fù)根
printf(Hx2=%7.2f-%7.2fi\n",p,q);
return0;
)
(3)編一程序,按下關(guān)系式,輸入一個x值,輸出y值。
fl(X<0)
y<o&=0)
b(x>o)
#include<stdio.h>
intmain()
{intx,y;
scanf(”%d",&x);
if(x<0)
{y=-h1
else
{if(x=0)
{y=0;}
else
{y=i;}
}
printf(Hx=%d,y=%d\n”,x,y);
return0;
)
實驗3:循環(huán)程序設(shè)計
1.實驗?zāi)康?/p>
掌握循環(huán)程序設(shè)計方法。
2.實驗內(nèi)容
(1)請編制成程序?qū)崿F(xiàn):九九表算法。
Sinclude<stdio.h>
main()
{inti,j;
for(i=l;i<10;i++)
printf:〃%4d〃,i);
printf(,z\n---------------------------------------------------\n〃);
for(i=l;i<10;i++)
for(j=l;j<10;j++)
printf((J=9)?〃%4d\n〃:〃Md〃,i*j);
return0;
}
(2)輸出所有的“水仙花數(shù)",所謂“水仙花數(shù)”是指一個3位數(shù),其各位數(shù)
字立方和等于該數(shù)本身。例如,153是一水仙花數(shù),因為153=r+6+33。
#include<stdio.h>
voidmain()
{inti,j,k,n;
printf(,zNarcissusnumberare:");
for(n=100;n<1000;n++)
{i=n/100;
j=n/l
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf(/z%5d/z,n);
)
printf(〃\rT);
)
(3)統(tǒng)計一行字符中的單詞個數(shù),單詞之間用空格分隔。
^include<stdio.h>
intmain()
{charstring[81];
inti;
intnum=0;
intword=0;
charc;
//從終端獲取字符串
gets(string);
for(i=0;(c=string[i])!='\0';i++)
if(c*')
word=0;
elseif(word==0)
word=l;
num++;
)
printf(^Thereare%dwordsintheline.\n\num);
return0;
)
(4)輸出以下圖案:
#####
#####
#####
#####
#####
#include<stdio.h>
voidmain(i
{chara[]=,#,;
charspace='';
inti,j;
for(i=0;i<5;i++)
{for(j=0;j<=i;j++)
printf(〃%c〃,space);
for(j=0;j<5;j++)
putchar(a);
printf("\n〃);
)
)
實驗4:數(shù)組與字符串
1.實驗?zāi)康?/p>
掌握有關(guān)數(shù)組和字符串的程序設(shè)計方法。
2.實驗內(nèi)容
(1)請編制成程序?qū)崿F(xiàn):將100~200之間的素數(shù)輸出。
#include<stdio.h>
intmain()
{intx=100;
inta=2;
mmm:x++;
while(x<=200)
{if(x%a二二0)
gotonunm;
if(a>=x/2)
{printf(/z%d〃,x);
a=2;
gotommm;
}
else++a;
)
return0;
}
(2).輸出以下的楊輝三角形(要求輸出10行),
1
11
121
1331
14641
15101051
SdefineN10
intmain()
{inti,j,a[N][N];
for(i=l;i<N;i++)
(
a[i][i]=l;
a[i][l]=l;
)
for(i=3;i<N;i++)
for(j=2;j<=i-l;j++)
a[i][j-l]+a[i-l][j];
for(i=l;i<N;i++)
(
for(j=l;j<=i;j++)
printf(〃%6d〃,a[i][j]);
printfCW);
)
printf(〃\n〃);
)
(3)用冒泡法對10個整數(shù)排序。
Sinclude<stdio.h>
intmain()
inta[10];
inti;
intj;
intt;
printf("input10numbers:\n〃);
for(i=0;i<10;i++)
(
scanf&a[i]);
)
printfC\n9;
//排序
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
(
if(a[i]>a[i+l])
(
t=a[i];
a[i]=a[i+l];
a[i+l]=t;
)
}
)
//打印
printf(,zthesortednumbers:\n〃);
for(i=0;i<10;i++)
(
printf('%d",
)
printf(〃\n〃);
return0;
)
(4)將一個數(shù)組中的直按逆序重新存放,例如,原來順序為8,6,5,4,10
要求改為L4,5,6,8o
#include<stdio.h>
voidmain()
(
inti;
inttemp;
intj,m,n=0;
intx[20];
printf(〃輸入需排序的個數(shù)%d\n〃,n);
scanf("%d〃,&n);
printf(,zTheoriginalarray:\n〃);
for(i=0;i<n;i++)
(
scanf;"%d,",&x[i]);
)
printf(〃\n〃);
m=(n-l)/2;
for(i=0;i<=m;i++)
(
j=n-l-i;
temp=x[i];
x[i]=x[j];
x[j]=temp;
)
printf(^Thearrayhasbeeninverted:\n,/);
for(i=0;i<n;i++)
(
printf(〃%d,”,x[i]);
)
printf(〃\n");
)
(5)編寫一個函數(shù),由實參傳來一個字符串,統(tǒng)計此字符串中字母、數(shù)字、
空格和其他符的個數(shù),在主函數(shù)中輸入字符串以及輸出上述的結(jié)果。
ttinclude〃stdio.h〃
intn=0,m=0,k=0,o=0;〃外部變量
voidtest(charstr[]);
main()
(
chara[80];
printf(,zinputstring:");
gets(a);
test(a);
printf("\n字母數(shù)二%d數(shù)字數(shù)二%d空格數(shù)二機1其他字符數(shù)與d\n〃,n,m,k,o):
return0;
}
voidtest(str)
charstr[];
{inti;
for(i=0;str[i]!='\0';i++)
{if(str[i]>='a'='z'||str[i]>='A'='Z')
n++;〃。為字母數(shù)
elseif(str[i]>=,0J&&str[i]<=,9?)
m++;〃m為數(shù)字
elseif(str[i]==,')
k++;〃k為空格
elseo++;〃統(tǒng)計總字符數(shù)
}
實驗5:函數(shù)
1.實驗?zāi)康?/p>
掌握函數(shù)的應(yīng)用和編寫帶函數(shù)的程序設(shè)計的方法。
2.實驗內(nèi)容
(1)用遞歸方式計算a!+b!+c!,并要求有輸出結(jié)果。
#include<stdio.h>
intfact(int);
intmain()
(
inta,b,c;
printf(,zEnterthreenumbers:");
scanf(〃%d%d%d〃,&a,&b,&c);
printf(/z%d!+%d!+%d!=%d+%d+%d\n〃,a,b,c,fact(a),fact(b),fact(c));
return0;
}
fact(intn)
(
intresult;
if(n==l)
return(1);
result=fact(nT)*n;/*遞歸調(diào)用*/
return(result);
)
(2)輸入10個學(xué)生5門課的成績,分別用函數(shù)實現(xiàn)下列功能:
①計算每個學(xué)生的平均分;
②計算每門課的平均分;
③找出所有50個分數(shù)中最高的分數(shù)所對應(yīng)的學(xué)生和課程;
ttinclude<stdio.h>
voidaverage(floatarray[10][5]);
voidscoreclass(floatarray[10][5]);
voidmaxaverage(floatarray[10][5]);
intmain()
{
floatscore[10][5];
inti,j;
printf(〃輸入10個學(xué)生的5門成績:\n〃);
for(i=0;i<10;i++)
{for(j=0;j<5;j++)
scanf&score[i][j]);
)
printfC\n輸出10個學(xué)生的平均成績\n〃);
average(score);
printfC\n輸出各門課程的平均成績\n〃);
scoreclass(score);
printff\n找出最好成績的學(xué)生及課程\n〃);
maxaverage(score);
return0;
)
voidaverage(floatarray[10][5])〃計算每個學(xué)生的平均分
(
intn,m:
floataver;
floatsum=0;
for(n=0;n<10;n++)
{for(nF0;m<5;m++)
sum=sum+array[n][m];
aver=sum/5;
printf(",%dstudentaveragescoreis%5.2f\n〃,
n+1,aver);
sum=0:
)
)
voidscore_class(floatarray[10][5])〃計算每門課的平均分
(
intn,m;
floataver;
floatsum=0;
for(n=0;n<5;n++)
{fur(UF0;UI<10;UI++)
sum=sum+array[m][n];
aver=sum/10;
printf(〃第%d門課程的平均分%5.2f\n〃,n+1,aver);
sum=O:
)
)
voidmaxaverage(floatarray[10][5])
//50個分數(shù)中最高的分數(shù)所對應(yīng)的學(xué)生和課程;
{
floatMax=0;
inti,j,n,m;
for(i=0;i<10;i++)
(
for(j=0;j<5;j++)
if(array[i][j]>Max)
(
Max=array[i][j];
n=i;
m=j;
)
)
printf("max=%6.2f,學(xué)生號:%d,課程號:%d\n〃,Max,n+1,m+1);
)
實驗6:指針
1.實驗?zāi)康?/p>
掌握指針的程序設(shè)計的方法。
2.實驗內(nèi)容
(1)寫一個函數(shù),將一個3X3的矩陣轉(zhuǎn)置。
intmain()
{inta[3][3],*p,i;
printf(〃按行輸入3X3的矩陣:\n〃);
for(i=0;i<3;i++)
scanfC%d%d%d\&a[i][0],&a[i][1],&a[i][2]);
p=&a[0][0];
move(p);
printf(〃轉(zhuǎn)置后的矩陣為:\n");
for(i=0;i<3;i++)
printf(/z%d%d%d\n〃,a[i][0],a[i]⑴,a[i]⑵);
}
move(pointer)
int*pointer;
{inti,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{t=*(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
)
)
(2)在main函數(shù)中輸入字符串,并輸出字符串的長度。
#include<stdio.h>
intlen(char*);
voidmain()
(charstr[80];
printf(,zPleaseinputastring:");
scanf(〃%s〃,str);
printf("Thelengthofthestringis%d.\n",len(str));
)
intlen(char*p)
{intn=0;
while(*p!=,\0*)
{n++;
p++;
)
return(n);
)
(3)編制程序:要求能從鍵盤上輸入任意五個字符串,用指向指針的指針的方
法或指針數(shù)組的方法對5個字符串排序并輸出排序后的結(jié)果。
intmain()
(inti;
char**p,*pstr[5],str[5][20];
for(i=0;i<5;i++)
pstr[i]=str[i];
printf(''input5stringsvalue:\n,z);
for(i=0;i<5;I++)
scanf("%s〃,pstr[i]);
p=pstr;
sort(p);
printf(''outputstringsaftersort:\nz/);
for(i=0;i<5;i++)
printfpstr[i]);
)
sort(p)
char**p;
{inti,j;
char*pchange;
for(i=0;i<5;i++)
(
for(j=i+l;j<5;j++)
{if(strcmp(*(p+i),*(p+j))>0)
{pchange=*(p+i);
*;p+i)=*(p+j);
*;p+j)=pchange;
}
實驗7:用戶定義數(shù)據(jù)類型
1.實驗?zāi)康?/p>
掌握結(jié)構(gòu)數(shù)據(jù)類型的應(yīng)用及程序設(shè)計。
2.實驗內(nèi)容
(1)編寫一個函數(shù)print,打印一個學(xué)生的成績數(shù)組,該數(shù)組中有5個學(xué)生的
數(shù)據(jù)記錄,每個記錄包括num,name,scoreF3J,主函數(shù)已有這些記錄,
用print函數(shù)輸出這些記錄。
#include<stdio.h>
structstudent
{intnum;
charname[20];
floatscore[3];
}stu[5]={{10100,Z/LiLi",67.5,89,78.6},{10101/zLiLin〃,76,87,98),\
{10102,"ZhangFun〃,88.5,76.5,97),\
{10104,z,WangMin",88,77,87},\
{10105,"YangBin",81,79,87}};
voidprint(structstudent*p)〃輸出函數(shù)
,/,,
{printf(%d\n%s\n%f\n%f\n%f\n,p->num,p->name,p->score[0],\
p->score[l],p->score[2]);
printf(〃\n〃):
)
voidmain()
print(stu);
(4)編寫對鏈表的處理程序?實現(xiàn)鏈表的建立、輸出、刪除和插入的功能,在
主函數(shù)中指定需要刪除和插入的結(jié)點的數(shù)據(jù)。編寫一個主函數(shù),先后調(diào)
用這些函數(shù)。
廿include<stdio.h>
ttinclude<malloc.h>
structstudent
{intnum;
intscore;
structstudent*next;
};
intn=0;
structstudent*creat()
(
structstudent*head=NULL;
structstudent*pl=NULL;
structstudent*p2=NULL;
intLEN;
LEN=sizeof(structstudent);
pl=(structstudent*)malloc(LEN);
scanf(z,%d%dz,,&pl->num,&pl->score);
head=pl;
while(pl->num!=0)
{if(p2!=NULL)
{p2->next=pl;}
p2=pl;
pl=(structstudent*)malloc(LEN);
scanf(,z%d%(]*,&pl->num,&pl->score);
)
if(pl->num==0)
{free(pl);)
p2->next=NULL;
return(head);
}
structstudent*insert(structstudent*head,structstudent*stud)
(structstudent*p0;
structstudent*pl;
structstudent*p2;
pl=head;
p0=stud;
if(head==NULL)
(
head=pO;
pO->next=NULL;
)
else
(
//插入定位(用pl定位)
while((pO->num>pl->num)&&(pl->next!=NULL))
(
p2=pl;
pl=pl->next;
)
if(pO->num<=pl->num)//插入位置不是表尾,插入到pl之前
(
if(head=pl)//插入位置是表頭
(
head=pO;
)
else//插入位置不是表頭
{
p2->next=pO;
)
pO->ncxt=pl;
}
else//插入到表尾
(
pl->next=pO;
pO->next=NULL;
}
)
n=n+l;
returnhead;
)
structstudent*del^structstudent*head,intnum)
{structstudent*pl;
structstudent*p2;
if(head==NULL)
{printf(〃\nlistnull!\nz,);
returnhead;
)
//查找
pl=head;
while(num!=pl->num&&pl->next!=NULL)
P2=pl;
pl=pl->next;
)
//刪除
if(num==pl->num)//查找待被刪除的元素
(
if(pl==head)//刪除的是表頭元素
{
head=pl->next;
)
else//刪除的是非表頭元素
(
p2->next=pl->next;
)
printf("delete:%ld\n”,num);
n=n-l;
}
else//未找到待被刪除的元素
(
printf(,z%ldnotbeenfound!\n〃,num):
}
returnhead;
)
voidprint(structstudent*head)
(
structst
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025電商平臺服務(wù)合作的合同樣本
- 2025購車借款合同書范文
- 2025年ZRO2陶瓷制品合作協(xié)議書
- 2025年資產(chǎn)評估師考試《經(jīng)濟法》知識點:合同法實務(wù)解析
- 2025建筑工程模板承包合同范本
- 2025外貿(mào)葡萄牙語合同范文
- 2025年巖石分裂機合作協(xié)議書
- 2025標(biāo)準合同終止勞動合同證明書范本
- 2025年萬能桿件合作協(xié)議書
- 2025年有機磷酸酯類中毒解毒藥項目建議書
- 外研版(三起)(2024)三年級下冊英語Unit 3 單元測試卷(含答案)
- 人教版中職數(shù)學(xué)拓展模塊一:6.2復(fù)數(shù)的運算課件(共24張課件)
- 2024年同等學(xué)力申碩《英語》試題真題及答案
- 公共資源交易知識培訓(xùn)
- 《危機管理案例》課件
- DB13-T5687-2023負壓封閉引流術(shù)護理規(guī)范
- 海綿材料項目可行性研究報告
- 2025年四川成都地鐵運營有限公司招聘筆試參考題庫含答案解析
- 【MOOC】《學(xué)術(shù)交流英語》(東南大學(xué))章節(jié)中國大學(xué)慕課答案
- 幼兒園閱讀活動環(huán)境創(chuàng)設(shè)
- 如何與人有效溝通培訓(xùn)
評論
0/150
提交評論