#define NULL 0 #include<stdlib.h> #include<stdio.h> struct list{ int num; char name[256]; int china; int english; int math; struct list *next; }; typedef struct list node; typedef node *link; printf_list(link head) { link pointer; pointer=head; while(pointer!=NULL) { printf("number:%d\n",pointer->num); printf("name:%s\n",pointer->name); printf("china:%d\n",pointer->china); printf("english:%d\n",pointer->english); printf("math:%d\n",pointer->math); pointer=pointer->next; } } link creat_list(link head) { int cnum; char cname[256]; int cchina; int cenglish; int cmath; link pointer,new; int i; head=(link)malloc(sizeof(node)); if(head==NULL) { printf("memory allocate failure!!\n"); exit(0);} else{ printf("please input number:"); scanf("%d",&cnum); printf("please input name:"); scanf("%s",&cname); printf("please input china:"); scanf("%d",&cchina); printf("please input english:"); scanf("%d",&cenglish); printf("please input math:"); scanf("%d",&cmath); head->num=cnum; for(i=0;i<256;i++) { head->name[i]=cname[i]; } head->china=cchina; head->english=cenglish; head->math=cmath; head->next=NULL; pointer=head; while(1) { new=(link)malloc(sizeof(node)); if(new==NULL){ printf("memory allocate failure!!\n"); exit(0);} printf("please input number:"); scanf("%d",&cnum); if(cnum==0){ break; } printf("please input name:"); scanf("%s",cname); printf("please input china:"); scanf("%d",&cchina); printf("please input english:"); scanf("%d",&cenglish); printf("please input math:"); scanf("%d",&cmath); new->num=cnum; for(i=0;i<256;i++){ new->name[i]=cname[i];} new->china=cchina; new->english=cenglish; new->math=cmath; new->next=NULL; pointer->next=new; pointer=new; } } return head; } search_chengji(int key1,link head) { link pointer; pointer=head; while(pointer!=NULL) { if(pointer->num==key1) { printf("number:%d\n",pointer->num); printf("name:%s\n",pointer->name); printf("china:%d\n",pointer->china); printf("english:%d\n",pointer->english); printf("math:%d\n",pointer->math); } pointer=pointer->next; } } link modify_chengji(link head,int key3) {
link pointer; char xname[256]; int xchina; int xenglish; int xmath; int choose,i; pointer=head; printf("enter 0 exit modefiy\n"); printf("enter 1 modefiy name\n"); printf("enter 2 modefiy china\n"); printf("enter 3 modefiy english\n"); printf("enter 4 modefiy math\n"); scanf("%d",&choose); switch(choose) { case 1: printf("please input name:"); scanf("%s",&xname); break; case 2: printf("please input china:"); scanf("%d",&xchina); break; case 3: printf("please input english:"); scanf("%d",&xenglish); break; case 4: printf("please input math:"); scanf("%d",&xmath); break; } while(1){ pointer=pointer->next; if(pointer->num==key3) { if(choose==1) { for(i=0;i<256;i++) { pointer->name[i]=xname[i]; } break; } else if(choose==2) { pointer->china=xchina; break;} else if(choose==3) { pointer->english=xenglish; break; } else if(choose==4) {pointer->math=xmath; break;} } } return head; } link delete_chengji(link head,int key2) { link pointer; link back; pointer=head; while(1) { if(head->num==key2) { head=pointer->next; free(pointer); break; } back=pointer; pointer=pointer->next; if(pointer->num==key2) { back->next=pointer->next; free(pointer); break;} } return head; } link insert_chengji(link head,link new,int key3) { link pointer; pointer=head; while(1) { if(pointer==NULL){ new->next=head; head=new; break;} if(pointer->num==key3){ new->next=pointer->next; pointer->next=new; break;} pointer=pointer->next; } return head; } pingjufen(link head) { link pointer; int pchina,ppchina; int penglish,ppenglish; int pmath,ppmath; int count; pchina=0; penglish=0; pmath=0; count=0; pointer=head; while(1) { pchina=pchina+pointer->china; penglish=penglish+pointer->english; pmath=pmath+pointer->math; count=++count; if(pointer->next==NULL) { break; } pointer=pointer->next; } ppchina=pchina/count; ppenglish=penglish/count; ppmath=pmath/count; printf("china ping jun fen:%d\n",ppchina); printf("english ping jun fen:%d\n",ppenglish); printf("math ping jun fen:%d\n",ppmath); } } main() { for(;;) { link head=NULL; link new; int key; int keynum; printf("0>exit the programm.\n"); printf("1>create list.\n"); printf("2>search chengji.\n"); printf("3>modify chengji.\n"); printf("4>delete chengji.\n"); printf("5>add chengji.\n"); printf("6>pingjunfeng.\n"); printf("7>print chengji.\n"); scanf("%d",&key); switch(key){ case 0: exit(0); case 1: head=creat_list(head); if(head!=NULL) { printf_list(head);} break; case 2: printf("please input 0 Exit.\n"); printf("please input number for search:"); scanf("%d",&keynum); if(keynum==0){ break; } search_chengji(keynum,head); break; case 3: printf("please input number for modify:"); scanf("%d",&keynum); head=modify_chengji(head,keynum); if(head!=NULL) { printf_list(head); } break; case 4: printf("please input 0 exit\n"); printf("please input number for delete:"); scanf("%d",&keynum); if(keynum==0){ break; } head=delete_chengji(head,keynum); break; case 5: if(head!=NULL){ new=(link)malloc(sizeof(node)); printf("please input number:"); scanf("%d",&new->num); if(new->num==0){ break;} printf("please input name:"); scanf("%s",&new->name); printf("please input china:"); scanf("%d",&new->china); printf("please input english:"); scanf("%d",&new->english); printf("please input math:"); scanf("%d",&new->math); printf("please input the data number for insert:"); scanf("%d",&keynum); head=insert_chengji(head,new,keynum); if(head!=NULL) { printf_list(head);} } break; case 6: pingjufen(head); break; case 7: printf_list(head); break; } } } 我这个程序的某个函数实现不了它的功能,是逻辑错误,请大家帮我改一下,谢谢