/*接上一樓*/
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,新和企業(yè)網(wǎng)站建設,新和品牌網(wǎng)站建設,網(wǎng)站定制,新和網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,新和網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
struct
Student
*create()
/*create函數(shù)定義,此函數(shù)實現(xiàn)創(chuàng)建單向動態(tài)鏈表*/
{
struct
Student
*head=NULL,*p1,*p2;
/*head,鏈表的頭指針;*p1,*p2,中間指針變量*/
puts("\n現(xiàn)在請輸入學院名:");
scanf("%s",college);
puts("\n年級:");
scanf("%s",grade);
puts("\n專業(yè)和班級:");
scanf("%s",classname);
puts("\n下面請按提示依次輸入數(shù)據(jù):\n(如果要結束輸入,請輸入學號0)");
p1=p2=(struct
Student
*)malloc(LEN);
puts("輸入第一個學生的學號:");
scanf("%ld",p1-num);
puts("輸入此學生成績:\n英語:");
scanf("%f",p1-score.english);
puts("數(shù)學:");
scanf("%f",p1-score.math);
puts("計算機:");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*計算總分和平均分*/
p1-grade=mark_grade(p1);
for(;p1-num!=0;)
{
len++;
if(len==1)
head=p1;
else
p2-next=p1;
p2=p1;
p1=(struct
Student
*)malloc(LEN);
puts("輸入下一個學生的學號:");
scanf("%ld",p1-num);
puts("輸入此學生成績:\n英語:");
scanf("%f",p1-score.english);
puts("數(shù)學:");
scanf("%f",p1-score.math);
puts("計算機:");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*計算總分和平均分*/
p1-grade=mark_grade(p1);
}
p2-next=NULL;
return
(head);
}
struct
Student
*del(struct
Student
*head,long
del_num)
/*del函數(shù)定義,此函數(shù)實現(xiàn)從現(xiàn)有鏈表中刪除一個結點*/
{
struct
Student
*p1,*p2;
if(head==NULL)
puts("空表,沒有任何數(shù)據(jù)記錄。\n");
else
{
for(p1=head;!(del_num==p1-num||p1-next==NULL);p2=p1,p1=p1-next);
if(del_num==p1-num)
{
if(p1==head)head=p1-next;
else
p2-next=p1-next;
printf("學號為%ld學生的數(shù)據(jù)刪除成功。\n",del_num);
--len;
}
else
printf("未找到學號為%ld學生的記錄。\n",del_num);
}
return
(head);
}
struct
Student
*insert(struct
Student
*head,struct
Student
*new_student)
/*insert函數(shù)定義,此函數(shù)實現(xiàn)向現(xiàn)有鏈表中插入一個結點或覆蓋相同學號的數(shù)據(jù)*/
{
struct
Student
*p0=new_student,*p1=head,*p2;
char
control;
if(head==NULL)
{
head=p0;
p0-next=NULL;
puts("數(shù)據(jù)插入成功。\n");
}
else
{
for(;((*p0).num(*p1).num)(p1-next!=NULL);p2=p1,p1=p1-next);
if((*p0).num==(*p1).num)
{
printf("已經(jīng)存在一個學號為%ld的學生的數(shù)據(jù),要覆蓋原有數(shù)據(jù)嗎?\n輸入
Y
=覆蓋原有數(shù)據(jù)\n輸入其它=保留原有數(shù)據(jù)\n",p0-num);
FFLUSH;
scanf("%c",control);
FFLUSH;
switch
(control)
{
case
'Y':
case
'y':if(p1==head){head=p0;p0-next=p1-next;}
else
{p2-next=p0;p0-next=p1-next;}
puts("數(shù)據(jù)已經(jīng)更新\n");break;
default:break;
}
len--;
}
else
if((*p0).num(*p1).num)
{
if(p1==head)head=p0;
else
p2-next=p0;
p0-next=p1;
puts("數(shù)據(jù)插入成功。\n");
}
else
{
p1-next=p0;
p0-next=NULL;
puts("數(shù)據(jù)插入成功。\n");
}
}
++len;
return
(head);
}
struct
Student
*sort(struct
Student
*head)
/*sort函數(shù)定義,此函數(shù)實現(xiàn)對鏈表中的數(shù)據(jù)按照平均分高低排序*/
{
struct
Student
*p1,*p2;
for(p1=head;p1-next!=NULL;p1=p1-next)
for(p2=p1-next;p2!=NULL;p2=p2-next)
{
if(p1-score.averagep2-score.average)
{
SWAP(p1-num,p2-num);
SWAP(p1-grade,p2-grade);
SWAP(p1-score.english,p2-score.english);
SWAP(p1-score.math,p2-score.math);
SWAP(p1-score.computer,p2-score.computer);
SWAP(p1-score.total,p2-score.total);
SWAP(p1-score.average,p2-score.average);
}
}
return
head;
}
/*接下一樓*/
需要準備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,輸入C語言代碼:int fun(){return 1;}。
3、編譯器運行test.cpp文件,此時成功調(diào)用fun()函數(shù)輸出了內(nèi)容。
函數(shù)是用戶與程序的接口,在定義一個函數(shù)前,首先要清楚以下三個問題。1) 函數(shù)的功能實現(xiàn)及算法選擇。算法選擇會在后續(xù)文章詳細講解,本節(jié)重點關注函數(shù)的功能實現(xiàn)。一般選取能體現(xiàn)函數(shù)功能的函數(shù)名,且見名知意,如求和函數(shù)的函數(shù)名可取為 add,求最大值的函數(shù)名可取為 max,排序函數(shù)可取名為 sort 等。2) 需要用戶傳給該函數(shù)哪些參數(shù)、什么類型,即函數(shù)參數(shù)。3) 函數(shù)執(zhí)行完后返回給調(diào)用者的參數(shù)及類型,即函數(shù)返回值類型。 函教定義格式 函數(shù)定義的一般格式為: 返回類型 函數(shù)名 (類型參數(shù)1,類型參數(shù)2,…) {函數(shù)體 }也可以不含參數(shù),不含參數(shù)時,參數(shù)表中可寫關鍵字 void 或省略,為規(guī)范起見,教程中對沒有參數(shù)的函數(shù),參數(shù)表中統(tǒng)一寫 void。例如: 類型 函數(shù)名 () {函數(shù)體 }等價于: 類型 函數(shù)名 (void) //建議的書寫方式 {函數(shù)體 } 如果該函數(shù)沒有返回類型,則為 void 類型。例如: void add (int x,int y) {printf ("sum=%d\n", x+y); } 除了 void 類型外,在函數(shù)體中,均需要顯式使用 return 語句返回對應的表達式的值。 函教返回值 函數(shù)的值是指調(diào)用函數(shù)結束時,執(zhí)行函數(shù)體所得并返回給主調(diào)函數(shù)的值。 關于函數(shù)返回值說明如下。1) 帶返回值的函數(shù),其值一般使用 return 語句返回給調(diào)用者。其格式為: return 表達式;或者 return (表達式);例如: int add (int a, int b) {return (a + b); //return 后為表達式 } 函數(shù)可以含一個或多個 return 語句,但每次調(diào)用時只能執(zhí)行其中一個 return 語句。例如,求整數(shù)絕對值的函數(shù): int f (int n) //含多個return語句,但每次調(diào)用只執(zhí)行一個 {if (n = 0)return n;elsereturn -n; }