參加運動會有n個學校,學校編號為1……n。比賽分成m個男子專案,和w個女子專案。專案編號為男子1……m,女子m+1……m+w。不同的專案取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學生自己設定。(m<=20,n<=20)
經過兩天的艱苦奮戰,我終於完成了這項工作,排錯和輸入等方面做了很多改進,使用者輸入的時候會有很大的容錯和拍錯空間。
第二次選擇1的時候就可以輸入0--x(x=20-【已經錄入的學校個數】)不再是5了
**如下:
注意:文章可能會出現 intint file 重複的情況 如果出現了 直接改為 int file 即可 這是網頁的問題
有問題qq群:1037814669
目錄如下:
excel實戰技巧精粹:excel模板大全1000例
# include //程式介面函式jiemian()有控制台寬度高度設定**(第190行左右)
# include # define n 12 //大學和專案名稱的長度=漢字個數*sizeof(char)
# define m 20 //大學的數量
# define q 20 //專案的數量
# define h 5 //調整每一行輸出的學校或專案數量 現在一行輸出5個
# define min(a,b) (a)
const char wenjian="out.bin";//檔名
typedef struct link
aa,*aa;
typedef struct head
head;
char ***[3]= ;
int power[5]= ,}; //積分
char ss[5]= ;
int gainchar(char a,int min,int max); //輸入字串的位元組範圍[min,max]
int gainint(int *p,int a,int b);//輸入int *p直至滿足[a,b]輸入結束,並返回*p的位數
int bf(char a,char b);//bf演算法 a為主串,b為被檢驗的串`返回b在a中的第乙個下標 若無返回0
void record(char school[n+1],char game[n+1],int b,head *temp);//記錄資料最重要的乙個函式,a為專案陣列,b為記錄,c為學校,temp結構體
int jiemian();//使用者顯示介面
int jianyan(char b,int t);//檢驗b是否符合實際,t=0檢驗當前字串是否全為漢字 t=1檢驗學校,t=2檢驗比賽 檢驗符合返回0
void xuanzepai(head *temp,int select);//選擇排序
/*下面是檢查用的陣列 用在jianyan 函式中*/
char key[3]= ;
char school[5]= ;
char program[3]= ;
int du(head *head)
}fread(head,sizeof(head), 1, fp);
fclose(fp);
// free(fp);
return 0;
}int xie(head *head)
int main()
,*head=&sg;
int i,j,k,select,choice,now,next;
if(du(head))
doprintf("\n");
}printf("\n");}}
else if(select==6)
printf("\n\n");}}
else //儲存檔案
}if(xie(head))return 0;
du(head);}}
printf("\n請按任意鍵繼續…\n");
getchar();
}while(select!=8);
return 0;
}int bf(char a,char b)//bf演算法 a為主串,b為被檢驗的串`返回b在a中的第乙個下標 若無返回0
int gainint(int *p,int a,int b)//輸入int *p直至滿足[a,b]輸入結束,並返回*p的值
while((temp->power[i])==4); //只錄入3和5
}while(pan); //當輸入不滿足要求時重新輸入
system("cls");
for(k=0; k***[i]],temp->power[i]);
for(j=0; jpower[i]; j++) //每次錄入的專案個數=temp->power[i]
while(pan);
choice=power[(temp->power[i])/4][j];
man=temp->***[i];
(temp->spot+cun)->gram[man][i]=choice;//把choice積分存入第cun個學校的第i個專案 的gram[man][i]裡
(temp->spot+cun)->gram[2][i]+=choice;//修改第cun個學校的該專案總分
(temp->spot+cun)->sum[man]+=choice;//修改第cun個學校的m男女團體總積分
(temp->spot+cun)->sum[2]+=choice;//修改學校的總積分}}
b[1]+=q-scope[1][1];//修改錄入的專案的總數量
}int jianyan(char b,int t)//檢驗b是否符合實際,t=1檢驗學校,t=2檢驗比賽
if(t==1)//檢驗學校的名稱
if(!d)return printf("學校名稱太奇葩!");
}if(t==2)//檢驗比賽的名稱
if(!d)return printf("專案名稱太奇葩!");
}return 0;//沒問題返回0
}void xuanzepai(head *temp,int select)//選擇排序
; n=temp->b[0];
printf("公升序請按0 降序請按1:");
gainint(&b,0,1);
for(i=0; ispot+i)->sum[select];
}printf("%s排名如下\t《以第%d列分數為準》:\n\n",ss[select],select+1);
for(i=0; ischool[0][k]:school[0][j]xuexiao[j],(temp->spot+j)->sum[0],(temp->spot+j)->sum[1],(temp->spot+j)->sum[2]);}}
複製** 直接執行即可:
/*資料結構結業課程設計*/
/* 參加運動會有n個學校,學校編號為1……n。比賽分成m個男子專案,和w個女子專案。專案編號為男子1……m,女子m+1……m+w。不同的專案取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學生自己設定。(m<=20,n<=20)
【基本要求】
(1)可以輸入各個專案的前三名或前五名的成績;
(2)能統計各學校總分,
(3)可以按學校編號或名稱、學校總分、男女團體總分排序輸出;
(4)可以按學校編號查詢學校某個專案的情況;可以按專案編號查詢取得前三或前五名的學校。
(5)儲存結構自選,但要求運動會的相關資料存入並能隨時查詢
(6)規定:輸入資料形式和範圍:可以輸入學校的名稱,運動專案的名稱
(7)輸出形式:有中文提示,各學校分數為整形
詳解資料結構課程設計 運動會分數統計
include include include include include define schnum 6 school 個數 define pronum 6 project 個數 define n 3 前n名 define m 5 前m名 void intzoom int a,int b vo...
資料結構 運動會分數統計
include include include include using namespace std int n n個學校 int m m個男子專案 int w w個女子專案 struct pro 表示專案的結構體 p 21 struct school 表示學校的結構體 sch 21 int qi...
資料結構習題集之運動會分數統計
運動會分數統計 include include include typedef struct scorescore typedef struct matchmatch,event typedef struct recordrecord typedef struct schoolschool,scho...