/*接上一樓*/

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括龍鳳網(wǎng)站建設(shè)、龍鳳網(wǎng)站制作、龍鳳網(wǎng)頁制作以及龍鳳網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,龍鳳網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到龍鳳省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
struct
Student
*create()
/*create函數(shù)定義,此函數(shù)實(shí)現(xiàn)創(chuàng)建單向動態(tài)鏈表*/
{
struct
Student
*head=NULL,*p1,*p2;
/*head,鏈表的頭指針;*p1,*p2,中間指針變量*/
puts("\n現(xiàn)在請輸入學(xué)院名:");
scanf("%s",college);
puts("\n年級:");
scanf("%s",grade);
puts("\n專業(yè)和班級:");
scanf("%s",classname);
puts("\n下面請按提示依次輸入數(shù)據(jù):\n(如果要結(jié)束輸入,請輸入學(xué)號0)");
p1=p2=(struct
Student
*)malloc(LEN);
puts("輸入第一個學(xué)生的學(xué)號:");
scanf("%ld",p1-num);
puts("輸入此學(xué)生成績:\n英語:");
scanf("%f",p1-score.english);
puts("數(shù)學(xué):");
scanf("%f",p1-score.math);
puts("計(jì)算機(jī):");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*計(jì)算總分和平均分*/
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("輸入下一個學(xué)生的學(xué)號:");
scanf("%ld",p1-num);
puts("輸入此學(xué)生成績:\n英語:");
scanf("%f",p1-score.english);
puts("數(shù)學(xué):");
scanf("%f",p1-score.math);
puts("計(jì)算機(jī):");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*計(jì)算總分和平均分*/
p1-grade=mark_grade(p1);
}
p2-next=NULL;
return
(head);
}
struct
Student
*del(struct
Student
*head,long
del_num)
/*del函數(shù)定義,此函數(shù)實(shí)現(xiàn)從現(xiàn)有鏈表中刪除一個結(jié)點(diǎ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("學(xué)號為%ld學(xué)生的數(shù)據(jù)刪除成功。\n",del_num);
--len;
}
else
printf("未找到學(xué)號為%ld學(xué)生的記錄。\n",del_num);
}
return
(head);
}
struct
Student
*insert(struct
Student
*head,struct
Student
*new_student)
/*insert函數(shù)定義,此函數(shù)實(shí)現(xiàn)向現(xiàn)有鏈表中插入一個結(jié)點(diǎn)或覆蓋相同學(xué)號的數(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)存在一個學(xué)號為%ld的學(xué)生的數(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ù)實(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;
}
/*接下一樓*/
#includestdio.h
#define M 2/*容量*/
struct _674
{
long num;
char name[20];
char add[20];
long tel;
}A[M],B[1];
void input()
{
int i=1;
char a='y';
while(a=='y')
{
if(i=M)
{
printf("請輸入你要輸入的學(xué)生學(xué)號\n");
scanf("%d",A[i].num);
for(int j=1;ji;j++)
if(A[j].num==A[i].num)
{
printf("你輸入的學(xué)號已存在\n");continue;
}
printf("請輸入你要輸入的學(xué)生姓名\n");
scanf("%s",A[i].name);
printf("請輸入你要輸入的學(xué)生地址\n");
scanf("%s",A[i].add);
printf("請輸入你要輸入的學(xué)生電話\n");
scanf("%d",A[i].tel);
i++;
printf("退出請任意輸入,繼續(xù)請輸入y\n");
getchar();
scanf("%c",a);
}
else
{
printf("你的空間已滿\n");break;
}
}
}
void output()
{
for(int i=1;i=M;i++)
printf("學(xué)號:%d姓名:%s地址:%s電話:%d\n",A[i].num,A[i].name,A[i].add,A[i].tel);
}
void seek()
{
int a,f=0;
printf("請輸入你要查找學(xué)生的學(xué)號\n");
scanf("%d",a);
for(int i=1;i=M;i++)
if(a==A[i].num)
{
printf("學(xué)號:%d姓名:%s地址:%s電話:%d\n",A[i].num,A[i].name,A[i].add,A[i].tel),f=0;break;
}
else
f=1;
if(f==1)
printf("查無此人\n");
}
void del()
{
int a;
printf("請輸入你要刪除的學(xué)生學(xué)號\n");
scanf("%d",a);
for(int i=1;i=M;i++)
if(a==A[i].num)
{
for(;iM;i++)
A[i]=A[i+1];
}
}
void insert()
{
printf("請輸入你要輸入你要插入的學(xué)生學(xué)號\n");
scanf("%d",B[1].num);
for(int j=1;j=M;j++)
if(B[1].num==A[j].num)
{
printf("你要插入的學(xué)號已存在\n");break;
}
printf("請輸入你要插入的學(xué)生姓名\n");
scanf("%s",B[1].name);
printf("請輸入你要插入的學(xué)生地址\n");
scanf("%s",B[1].add);
printf("請輸入你要插入的學(xué)生電話\n");
scanf("%d",B[1].tel);
}
void main()
{
input();
output();
seek();
del();
insert();
}
不好意思
自己也是剛學(xué)的
有不足之處還請諒解
很多地方還需要根據(jù)你的需要適當(dāng)修改
最后希望我們能相互討論學(xué)習(xí)共同進(jìn)步
要更詳細(xì)答案,聯(lián)系我,這個很難做的,起碼要給點(diǎn)懸賞分作為酬勞啊!!!
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
//數(shù)據(jù)結(jié)構(gòu)的定義
typedef struct node{
int id; //學(xué)號
char name[10]; // 姓名
int grade; //成績
struct node * next; //指向下一節(jié)點(diǎn)的指針
}node,*list;
//函數(shù)的聲明,必須按照聲明來定義函數(shù)
void showMenu(); //顯示菜單
void start(); // 主控程序
void init(list h);// 初始化鏈表h
void printAnRecord(node * p);//輸出p所指節(jié)點(diǎn)的值(id,name,grade)
void printList(list h);// 輸出鏈表h的各節(jié)點(diǎn)的值
int del(list h,int n);//刪除鏈表h中id為n的節(jié)點(diǎn),成功刪除返回1,若不存在則返回0
int insert(list h,int id,char * name,int grade);//在鏈表h中,插入節(jié)點(diǎn)(n,name,grade),若id重復(fù)返回0,否則返回1
node * searchByID(list h, int n);// 在鏈表h中查找id為n的節(jié)點(diǎn),查找成功返回其指針,否則返回NULL
int update(list h,int n,int grade);// 將鏈表h中id為n的節(jié)點(diǎn)的成績改為grade,若不存在該節(jié)點(diǎn)返回0,否則返回1
float average(list h); //返回鏈表h中各個節(jié)點(diǎn)成績的平均值
int bulkInsert(list h);//在鏈表h中批量插入節(jié)點(diǎn),以id=0結(jié)束,返回成功插入的節(jié)點(diǎn)數(shù)
void clearList(list h);//清空鏈表h(使其成為空鏈表)
void showMenu()
{ //顯示菜單
puts(" 0----Bulk Insert ");
puts(" 1----Insert an Record");
puts(" 2----Delete an Record");
puts(" 3----Update an Record's grade");
puts(" 4--- Search an Record by stu_id");
puts(" 5----Print all Record");
puts(" 6----Average of grade");
puts(" 7----Clear list");
puts(" 9----Exit");
}
//主控程序
void start()
{
list h; //鏈表
int choice; //功能選擇
int id,grade,flag=1,m;
char name[10];
showMenu();
init(h); //初始化鏈表h,即建立空鏈表
while(flag){//若未退出程序
puts(" ******** Please input 1...9 ********* ");
scanf("%d",choice);
switch(choice){ //根據(jù)選擇的功能號,執(zhí)行不同的操作
case 0 :
puts("input Stu_ID, Name , Grade (end by 0)");
m=bulkInsert(h);
printf(" %d Record insert successfully\n",m);
break;
case 1:
puts("input Stu_ID, Name , Grade: ");
scanf("%d",id);
scanf("%s",name);
scanf("%d",grade);
if( insert(h,id,name,grade) )
puts("Insert an Record successfully!");
else
puts("Sorry, dublicate ID ");
break;
case 2:
puts("input Stu_ID to delet");
scanf("%d",id);
if( del(h,id) )
puts("Delete an Record successfully");
else
puts("Sorry, ID no exit ");
break;
case 3:
puts("input Stu_ID and grade to update");
scanf("%d",id);
scanf("%d",grade);
if ( update(h,id,grade) )
puts("Update an Record successfully ");
else
puts("Sorry, ID no exit ");
break;
case 4:
puts("input Stu_ID to search");
scanf("%d",id);
node *p;
if( p=searchByID(h,id) )
printAnRecord(p);
else
puts("Sorry, ID no exit ");
break;
case 5:
printList(h);
break;
case 6:
printf("The average grade is %6.2f \n ", average(h) );
break;
case 7:
clearList(h);
break;
case 9:
flag=0; //退出循環(huán)
break;
default:
puts(" Error ! Must Input (1...9) ");
}
}
}
void main()
{
//編程時要一個一個函數(shù)的調(diào)試完成后,最后再調(diào)用主控程序
start();
}
文章名稱:修改學(xué)生信息c語言函數(shù)頭,C語言數(shù)學(xué)函數(shù)頭文件
URL鏈接:http://chinadenli.net/article12/dsijggc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、用戶體驗(yàn)、網(wǎng)站內(nèi)鏈、App設(shè)計(jì)、網(wǎng)站導(dǎo)航、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)