#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//輸出菜單 void choosemenu(void);//菜單選擇 void input_student1(int);//輸入學生信息 void input_student2(void);//輸入總函數 void input_student3(int &,int);//判斷學號是否重復 void input_student4(int,int);//覆蓋原信息 void sort_student3(student s[],int);//按照英語成績排序 void sort_student4(student s[],int);//按照計算機成績排序 void sort_student2(student s[],int);//按照數學成績排序 void sort_student5(student s[],int);//按照平均成績排序 float input_score2(int);//計算學生平均成績 void print_student2(void);//顯示表頭 void print_student3(int);//顯示學生信息 void print_student1(int);//顯示全部學生資料 void sort_student1(void);//排序總函數 void menu(void);//菜單調度總函數 int search_student2(int);//按學號查詢學生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數 void delete_student2(int,int);//刪除學生信息 void delete_student1(void);//刪除總函數 void change_student2(int);//修改學生資料 void change_student1(void);//修改總函數 void input_score3(int);//統計成績 void input_score1(void);//統計成績總函數 void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統 void save_student(student *,int);//保存學生信息 void main() { menu(); } void save_student(student *s,int a)//保存學生信息 { FILE *fp; if((fp=fopen("d:\\學生信息.txt","wb"))==NULL) { printf("不能打開文件!\n"); } else { printf("保存信息到D盤\n"); fprintf(fp,"本班所有學生具體信息如下:\r\n"); fprintf(fp," 學號 姓名 數學成績 英語成績 計算機成績 平均成績\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系統 { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統所能容納的最大學生數為%d人\n學生信息保存在D盤根目錄下,保存文件為“學生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統計成績總函數 { int c; c=search_student2(iNumOfStu); printf("學號:%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成績錄入成功!\n"); stu[c].average=input_score2(c); } void input_score3(int a)//統計成績 { printf("數學新成績:"); scanf("%f",&stu[a].sco.math); printf("英語新成績:"); scanf("%f",&stu[a].sco.english); printf("計算機新成績:"); scanf("%f",&stu[a].sco.computer); } void change_student2(int a)//修改學生資料 { printf("學號:%d----修改為:",stu[a].number); scanf("%d",&stu[a].number); getchar(); printf("姓名:%s----修改為:",stu[a].name); gets(stu[a].name); printf("數學成績:%.2f----修改為:",stu[a].sco.math); scanf("%f",&stu[a].sco.math); printf("英語成績:%.2f----修改為:",stu[a].sco.english); scanf("%f",&stu[a].sco.english); printf("計算機成績:%.2f----修改為:",stu[a].sco.computer); scanf("%f",&stu[a].sco.computer); } void change_student1(void)//修改總函數 { int c; c=search_student2(iNumOfStu); getchar(); printf("是否要修改此學生信息?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { change_student2(c); stu[c].average=input_score2(c); printf("信息修改成功!\n"); } } void delete_student1(void)//刪除總函數 { int c; c=search_student2(iNumOfStu); getchar(); printf("是否刪除此條記錄?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { delete_student2(c,iNumOfStu); printf("記錄已刪除!\n"); } } void delete_student2(int a,int b)//刪除學生信息 { for(int i=a;i<b-1;i++) { stu[i]=stu[i+1]; } --iNumOfStu; } void search_student1(void)//查詢總函數 { printf("1、按學號查詢\n2、按平均分最高查詢\n請選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { search_student2(iNumOfStu); break; } case 2: { search_student3(iNumOfStu); break; } default: break; } } void menu(void)//菜單調度總函數 { print_menu(); choosemenu(); } void sort_student1(void)//排序總函數 { printf("1、按數學成績排序\n2、按英語成績排序\n3、按計算機成績排序\n4、按平均成績排序\n請選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { sort_student2(stu,iNumOfStu); break; } case 2: { sort_student3(stu,iNumOfStu); break; } case 3: { sort_student4(stu,iNumOfStu); break; } case 4: { sort_student5(stu,iNumOfStu); break; } default: break; } } void print_student1(int a)//顯示全部學生資料 { printf("本班所有學生具體信息如下\n"); print_student2(); for(int i=0;i<a;i++) { print_student3(i); } } void print_student3(int a)//顯示學生信息 { printf("%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[a].number,stu[a].name,stu[a].sco.math,stu[a].sco.english,stu[a].sco.computer,stu[a].average); } void print_student2(void)//顯示表頭 { printf(" 學號 姓名 數學成績 英語成績 計算機成績 平均成績\n"); } void input_student4(int a,int b)//覆蓋原信息 { stu[a]=stu[b-1]; --iNumOfStu; } void input_student3(int &a,int b)//判斷學號是否重復 { if(a!=0) { int i=0; do { if(stu[a].number==stu[i].number) { printf("此學號代表的學生已錄入\n1、覆蓋原信息\n2、重新輸入\n請選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { input_student4(i,iNumOfStu); a=iNumOfStu-1; printf("信息已替換!\n"); break; } case 2: { printf("請重新輸入學生信息:\n"); input_student1(iNumOfStu-1); break; } default: break; } break; } ++i; } while(i<b-1); } } void print_menu(void)//輸出菜單 { printf("======歡迎來到學生信息管理系統======\n"); printf(" 1、輸入學生資料\n"); printf(" 2、刪除學生資料\n"); printf(" 3、查詢學生資料\n"); printf(" 4、修改學生資料\n"); printf(" 5、顯示學生資料\n"); printf(" 6、統計學生成績\n"); printf(" 7、排序學生成績\n"); printf(" 8、保存學生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統\n"); printf("====================================\n"); printf("請選擇:"); } void input_student2(void)//輸入總函數 { char end; printf("請輸入學生信息(在最后一個學生信息錄入完成后以“/”結束錄入):\n"); for(int i=0;(end=getchar())!='/';i++) { input_student1(i); ++iNumOfStu; input_student3(i,iNumOfStu); } for(int j=0;j<iNumOfStu;j++) { stu[j].average=input_score2(j); } } void input_student1(int a)//輸入學生信息 { printf("學號:"); scanf("%d",&stu[a].number); getchar(); printf("姓名:"); gets(stu[a].name); printf("數學成績:"); scanf("%f",&stu[a].sco.math); printf("英語成績:"); scanf("%f",&stu[a].sco.english); printf("計算機成績:"); scanf("%f",&stu[a].sco.computer); } float input_score2(int a)//計算學生平均成績 { return (stu[a].sco.math+stu[a].sco.english+stu[a].sco.computer)/3; } void search_student3(int a)//按平均分最高查詢并輸出 { int max=0; for(int i=0;i<a;i++) { if(stu[max].average<stu[i].average) { max=i; } } print_student2(); print_student3(max); } void sort_student2(student s[],int a)//按照數學成績排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.math>stu[max].sco.math) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student3(student s[],int a)//按照英語成績排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.english>stu[max].sco.english) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student4(student s[],int a)//按照計算機成績排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.computer>stu[max].sco.computer) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student5(student s[],int a)//按照平均成績排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].average>stu[max].average) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } int search_student2(int a)//按照學號查找學生并輸出 { int num; int c; printf("請輸入要查詢的學號:"); scanf("%d",&num); for(int i=0;i<a;i++) { if(num==stu[i].number) { c=i; } } printf("此學生的信息是:\n"); print_student2(); print_student3(c); return c; } void choosemenu(void)//菜單選擇 { int i; scanf("%d",&i); switch(i) { case 1: { input_student2(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 2: { delete_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 3: { search_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 4: { change_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 5: { print_student1(iNumOfStu); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 6: { input_score1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 7: { sort_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 8: { save_student(stu,iNumOfStu); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 9: { print_help(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 10: { exit_student(); } default: break; } } 運行結果: 源文件下載地址: http://115.com/file/clnq138g#一個簡單的學生成績管理系統.rar (請將此地址復制到瀏覽器地址欄中訪問下載頁面) #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//輸出菜單 void choosemenu(void);//菜單選擇 void input_student1(int);//輸入學生信息 void input_student2(void);//輸入總函數 void input_student3(int &,int);//判斷學號是否重復 void input_student4(int,int);//覆蓋原信息 void sort_student3(student s[],int);//按照英語成績排序 void sort_student4(student s[],int);//按照計算機成績排序 void sort_student2(student s[],int);//按照數學成績排序 void sort_student5(student s[],int);//按照平均成績排序 float input_score2(int);//計算學生平均成績 void print_student2(void);//顯示表頭 void print_student3(int);//顯示學生信息 void print_student1(int);//顯示全部學生資料 void sort_student1(void);//排序總函數 void menu(void);//菜單調度總函數 int search_student2(int);//按學號查詢學生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數 void delete_student2(int,int);//刪除學生信息 void delete_student1(void);//刪除總函數 void change_student2(int);//修改學生資料 void change_student1(void);//修改總函數 void input_score3(int);//統計成績 void input_score1(void);//統計成績總函數 void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統 void save_student(student *,int);//保存學生信息 void main() { menu(); } void save_student(student *s,int a)//保存學生信息 { FILE *fp; if((fp=fopen("d:\\學生信息.txt","wb"))==NULL) { printf("不能打開文件!\n"); } else { printf("保存信息到D盤\n"); fprintf(fp,"本班所有學生具體信息如下:\r\n"); fprintf(fp," 學號 姓名 數學成績 英語成績 計算機成績 平均成績\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系統 { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統所能容納的最大學生數為%d人\n學生信息保存在D盤根目錄下,保存文件為“學生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統計成績總函數 { int c; c=search_student2(iNumOfStu); printf("學號:%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成績錄入成功!
標簽: c語言
上傳時間: 2019-06-09
上傳用戶:啊的撒旦
Hopfield 網——擅長于聯想記憶與解迷路 實現H網聯想記憶的關鍵,是使被記憶的模式樣本對應網絡能量函數的極小值。 設有M個N維記憶模式,通過對網絡N個神經元之間連接權 wij 和N個輸出閾值θj的設計,使得: 這M個記憶模式所對應的網絡狀態正好是網絡能量函數的M個極小值。 比較困難,目前還沒有一個適應任意形式的記憶模式的有效、通用的設計方法。 H網的算法 1)學習模式——決定權重 想要記憶的模式,用-1和1的2值表示 模式:-1,-1,1,-1,1,1,... 一般表示: 則任意兩個神經元j、i間的權重: wij=∑ap(i)ap(j),p=1…p; P:模式的總數 ap(s):第p個模式的第s個要素(-1或1) wij:第j個神經元與第i個神經元間的權重 i = j時,wij=0,即各神經元的輸出不直接返回自身。 2)想起模式: 神經元輸出值的初始化 想起時,一般是未知的輸入。設xi(0)為未知模式的第i個要素(-1或1) 將xi(0)作為相對應的神經元的初始值,其中,0意味t=0。 反復部分:對各神經元,計算: xi (t+1) = f (∑wijxj(t)-θi), j=1…n, j≠i n—神經元總數 f()--Sgn() θi—神經元i發火閾值 反復進行,直到各個神經元的輸出不再變化。
上傳時間: 2015-03-16
上傳用戶:JasonC
詞法分析程序,可對以下的C源程序進行分析:main() {int a[12] ,sum for(i=1 i<=12 i++) {for(j=1 j<=12 j++)scanf("%d",&a[i][j]) } for(i=12 i>=1 i--){ for(j=12 j>=1 j--){ if(i==j&&i+j==13)sum+=a[i][j] } } printf("%c",sum) }
上傳時間: 2013-12-26
上傳用戶:skhlm
算法介紹 矩陣求逆在程序中很常見,主要應用于求Billboard矩陣。按照定義的計算方法乘法運算,嚴重影響了性能。在需要大量Billboard矩陣運算時,矩陣求逆的優化能極大提高性能。這里要介紹的矩陣求逆算法稱為全選主元高斯-約旦法。 高斯-約旦法(全選主元)求逆的步驟如下: 首先,對于 k 從 0 到 n - 1 作如下幾步: 從第 k 行、第 k 列開始的右下角子陣中選取絕對值最大的元素,并記住次元素所在的行號和列號,在通過行交換和列交換將它交換到主元素位置上。這一步稱為全選主元。 m(k, k) = 1 / m(k, k) m(k, j) = m(k, j) * m(k, k),j = 0, 1, ..., n-1;j != k m(i, j) = m(i, j) - m(i, k) * m(k, j),i, j = 0, 1, ..., n-1;i, j != k m(i, k) = -m(i, k) * m(k, k),i = 0, 1, ..., n-1;i != k 最后,根據在全選主元過程中所記錄的行、列交換的信息進行恢復,恢復的原則如下:在全選主元過程中,先交換的行(列)后進行恢復;原來的行(列)交換用列(行)交換來恢復。
上傳時間: 2015-04-09
上傳用戶:wang5829
一個簡單的類似鋼琴的游戲,能夠發出3個8度音, 低音:1~7; 中音:Q~U或q~u; 高音:A~J或a~j;
標簽: 鋼琴
上傳時間: 2015-06-09
上傳用戶:784533221
Floyd-Warshall算法描述 1)適用范圍: a)APSP(All Pairs Shortest Paths) b)稠密圖效果最佳 c)邊權可正可負 2)算法描述: a)初始化:dis[u,v]=w[u,v] b)For k:=1 to n For i:=1 to n For j:=1 to n If dis[i,j]>dis[i,k]+dis[k,j] Then Dis[I,j]:=dis[I,k]+dis[k,j] c)算法結束:dis即為所有點對的最短路徑矩陣 3)算法小結:此算法簡單有效,由于三重循環結構緊湊,對于稠密圖,效率要高于執行|V|次Dijkstra算法。時間復雜度O(n^3)。 考慮下列變形:如(I,j)∈E則dis[I,j]初始為1,else初始為0,這樣的Floyd算法最后的最短路徑矩陣即成為一個判斷I,j是否有通路的矩陣。更簡單的,我們可以把dis設成boolean類型,則每次可以用“dis[I,j]:=dis[I,j]or(dis[I,k]and dis[k,j])”來代替算法描述中的藍色部分,可以更直觀地得到I,j的連通情況。
標簽: Floyd-Warshall Shortest Pairs Paths
上傳時間: 2013-12-01
上傳用戶:dyctj
求標準偏差 > function c=myfunction(x) > [m,n]=size(x) > t=0 > for i=1:numel(x) > t=t+x(i)*x(i) > end > c=sqrt(t/(m*n-1)) function c=myfunction(x) [m,n]=size(x) t=0 for i=1:m for j=1:n t=t+x(i,j)*x(i,j) end end c=sqrt(t/(m*n-1
標簽: gt myfunction function numel
上傳時間: 2014-01-15
上傳用戶:hongmo
求標準偏差 > function c=myfunction(x) > [m,n]=size(x) > t=0 > for i=1:numel(x) > t=t+x(i)*x(i) > end > c=sqrt(t/(m*n-1)) function c=myfunction(x) [m,n]=size(x) t=0 for i=1:m for j=1:n t=t+x(i,j)*x(i,j) end end c=sqrt(t/(m*n-1
標簽: gt myfunction function numel
上傳時間: 2013-12-26
上傳用戶:dreamboy36
求標準偏差 > function c=myfunction(x) > [m,n]=size(x) > t=0 > for i=1:numel(x) > t=t+x(i)*x(i) > end > c=sqrt(t/(m*n-1)) function c=myfunction(x) [m,n]=size(x) t=0 for i=1:m for j=1:n t=t+x(i,j)*x(i,j) end end c=sqrt(t/(m*n-1
標簽: gt myfunction function numel
上傳時間: 2016-06-28
上傳用戶:change0329
求標準偏差 > function c=myfunction(x) > [m,n]=size(x) > t=0 > for i=1:numel(x) > t=t+x(i)*x(i) > end > c=sqrt(t/(m*n-1)) function c=myfunction(x) [m,n]=size(x) t=0 for i=1:m for j=1:n t=t+x(i,j)*x(i,j) end end c=sqrt(t/(m*n-1
標簽: gt myfunction function numel
上傳時間: 2014-09-03
上傳用戶:jjj0202