function [alpha,N,U]=youxianchafen2(r1,r2,up,under,num,deta) %[alpha,N,U]=youxianchafen2(a,r1,r2,up,under,num,deta) %該函數(shù)用有限差分法求解有兩種介質(zhì)的正方形區(qū)域的二維拉普拉斯方程的數(shù)值解 %函數(shù)返回迭代因子、迭代次數(shù)以及迭代完成后所求區(qū)域內(nèi)網(wǎng)格節(jié)點處的值 %a為正方形求解區(qū)域的邊長 %r1,r2分別表示兩種介質(zhì)的電導率 %up,under分別為上下邊界值 %num表示將區(qū)域每邊的網(wǎng)格剖分個數(shù) %deta為迭代過程中所允許的相對誤差限 n=num+1; %每邊節(jié)點數(shù) U(n,n)=0; %節(jié)點處數(shù)值矩陣 N=0; %迭代次數(shù)初值 alpha=2/(1+sin(pi/num));%超松弛迭代因子 k=r1/r2; %兩介質(zhì)電導率之比 U(1,1:n)=up; %求解區(qū)域上邊界第一類邊界條件 U(n,1:n)=under; %求解區(qū)域下邊界第一類邊界條件 U(2:num,1)=0;U(2:num,n)=0; for i=2:num U(i,2:num)=up-(up-under)/num*(i-1);%采用線性賦值對上下邊界之間的節(jié)點賦迭代初值 end G=1; while G>0 %迭代條件:不滿足相對誤差限要求的節(jié)點數(shù)目G不為零 Un=U; %完成第n次迭代后所有節(jié)點處的值 G=0; %每完成一次迭代將不滿足相對誤差限要求的節(jié)點數(shù)目歸零 for j=1:n for i=2:num U1=U(i,j); %第n次迭代時網(wǎng)格節(jié)點處的值 if j==1 %第n+1次迭代左邊界第二類邊界條件 U(i,j)=1/4*(2*U(i,j+1)+U(i-1,j)+U(i+1,j)); end if (j>1)&&(j U2=1/4*(U(i,j+1)+ U(i-1,j)+ U(i,j-1)+ U(i+1,j)); U(i,j)=U1+alpha*(U2-U1); %引入超松弛迭代因子后的網(wǎng)格節(jié)點處的值 end if i==n+1-j %第n+1次迭代兩介質(zhì)分界面(與網(wǎng)格對角線重合)第二類邊界條件 U(i,j)=1/4*(2/(1+k)*(U(i,j+1)+U(i+1,j))+2*k/(1+k)*(U(i-1,j)+U(i,j-1))); end if j==n %第n+1次迭代右邊界第二類邊界條件 U(i,n)=1/4*(2*U(i,j-1)+U(i-1,j)+U(i+1,j)); end end end N=N+1 %顯示迭代次數(shù) Un1=U; %完成第n+1次迭代后所有節(jié)點處的值 err=abs((Un1-Un)./Un1);%第n+1次迭代與第n次迭代所有節(jié)點值的相對誤差 err(1,1:n)=0; %上邊界節(jié)點相對誤差置零 err(n,1:n)=0; %下邊界節(jié)點相對誤差置零 G=sum(sum(err>deta))%顯示每次迭代后不滿足相對誤差限要求的節(jié)點數(shù)目G end
標簽: 有限差分
上傳時間: 2018-07-13
上傳用戶:Kemin
設(shè)有n=2k個運動員要進行網(wǎng)球循環(huán)賽。現(xiàn)要設(shè)計一個滿足以下要求的比賽日程表:⑴每個選手必須與其他n-1個選手各賽一次;⑵每個選手一天只能賽一次;⑶循環(huán)賽一共進行n-1天。按此要求可將比賽日程表設(shè)計-成有n行和n-l列的一個表。在表中第i行和第j列處填入第i個選手在第j天所遇到的選手。用分治法編寫為該循環(huán)賽設(shè)計一張比賽日程表的算法并運行實現(xiàn)、對復雜度進行分析。
標簽: 算法 實驗指導書 設(shè)計與分析
上傳時間: 2019-06-04
上傳用戶:594551562
#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);//輸入總函數(shù) 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);//按照數(shù)學成績排序 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);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學號查詢學生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數(shù) void delete_student2(int,int);//刪除學生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計成績 void input_score1(void);//統(tǒng)計成績總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) 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," 學號 姓名 數(shù)學成績 英語成績 計算機成績 平均成績\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)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學生數(shù)為%d人\n學生信息保存在D盤根目錄下,保存文件為“學生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計成績總函數(shù) { 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)//統(tǒng)計成績 { printf("數(shù)學新成績:"); 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("數(shù)學成績:%.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)//修改總函數(shù) { 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)//刪除總函數(shù) { 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)//查詢總函數(shù) { 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)//菜單調(diào)度總函數(shù) { print_menu(); choosemenu(); } void sort_student1(void)//排序總函數(shù) { printf("1、按數(shù)學成績排序\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(" 學號 姓名 數(shù)學成績 英語成績 計算機成績 平均成績\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("======歡迎來到學生信息管理系統(tǒng)======\n"); printf(" 1、輸入學生資料\n"); printf(" 2、刪除學生資料\n"); printf(" 3、查詢學生資料\n"); printf(" 4、修改學生資料\n"); printf(" 5、顯示學生資料\n"); printf(" 6、統(tǒng)計學生成績\n"); printf(" 7、排序?qū)W生成績\n"); printf(" 8、保存學生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統(tǒng)\n"); printf("====================================\n"); printf("請選擇:"); } void input_student2(void)//輸入總函數(shù) { char end; printf("請輸入學生信息(在最后一個學生信息錄入完成后以“/”結(jié)束錄入):\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("數(shù)學成績:"); 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)//按照數(shù)學成績排序 { 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; } } 運行結(jié)果: 源文件下載地址: http://115.com/file/clnq138g#一個簡單的學生成績管理系統(tǒng).rar (請將此地址復制到瀏覽器地址欄中訪問下載頁面)
標簽: 成績查詢系統(tǒng)
上傳時間: 2019-06-08
上傳用戶:啊的撒旦
#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);//輸入總函數(shù) 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);//按照數(shù)學成績排序 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);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學號查詢學生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數(shù) void delete_student2(int,int);//刪除學生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計成績 void input_score1(void);//統(tǒng)計成績總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) 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," 學號 姓名 數(shù)學成績 英語成績 計算機成績 平均成績\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)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學生數(shù)為%d人\n學生信息保存在D盤根目錄下,保存文件為“學生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計成績總函數(shù) { 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)//統(tǒng)計成績 { printf("數(shù)學新成績:"); 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("數(shù)學成績:%.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)//修改總函數(shù) { 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)//刪除總函數(shù) { 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)//查詢總函數(shù) { 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)//菜單調(diào)度總函數(shù) { print_menu(); choosemenu(); } void sort_student1(void)//排序總函數(shù) { printf("1、按數(shù)學成績排序\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(" 學號 姓名 數(shù)學成績 英語成績 計算機成績 平均成績\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("======歡迎來到學生信息管理系統(tǒng)======\n"); printf(" 1、輸入學生資料\n"); printf(" 2、刪除學生資料\n"); printf(" 3、查詢學生資料\n"); printf(" 4、修改學生資料\n"); printf(" 5、顯示學生資料\n"); printf(" 6、統(tǒng)計學生成績\n"); printf(" 7、排序?qū)W生成績\n"); printf(" 8、保存學生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統(tǒng)\n"); printf("====================================\n"); printf("請選擇:"); } void input_student2(void)//輸入總函數(shù) { char end; printf("請輸入學生信息(在最后一個學生信息錄入完成后以“/”結(jié)束錄入):\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("數(shù)學成績:"); 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)//按照數(shù)學成績排序 { 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; } } 運行結(jié)果: 源文件下載地址: http://115.com/file/clnq138g#一個簡單的學生成績管理系統(tǒng).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);//輸入總函數(shù) 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);//按照數(shù)學成績排序 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);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學號查詢學生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數(shù) void delete_student2(int,int);//刪除學生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計成績 void input_score1(void);//統(tǒng)計成績總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) 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," 學號 姓名 數(shù)學成績 英語成績 計算機成績 平均成績\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)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學生數(shù)為%d人\n學生信息保存在D盤根目錄下,保存文件為“學生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計成績總函數(shù) { 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
上傳用戶:啊的撒旦
排序算法的性能比較 對不同類型的問題規(guī)模,測試各種介紹的排序算法的性能。統(tǒng)計他們的鍵值比較次數(shù),鍵值移動次數(shù)以及運行時間并分析結(jié)果。 小型問題:N≈20 中型問題:N≈2000 大型問題:N≈200000. C 語言的32關(guān)鍵字如下: 實驗原理: 線性表的排序,快速,起泡,選擇,插入。
上傳時間: 2013-12-20
上傳用戶:lingzhichao
%電影動畫: %1.首先調(diào)用moviein函數(shù)對內(nèi)存初始化.創(chuàng)建一個足夠大的矩陣來容納一系列指定的圖形(幀) %2.調(diào)用getframe函數(shù)生成每一幀.該函數(shù)返回一個矢量,利用這個矢量創(chuàng)建一個電影動畫矩陣 %3.調(diào)用movie函數(shù)按照指定速度進行指定次數(shù)的播放 %例子2:演示如何實現(xiàn)快速傅立葉變換(exp(j*2*pi/n))的可視化過程
標簽: getframe moviein 函數(shù) 幀
上傳時間: 2015-06-30
上傳用戶:zsjzc
1、 了解系統(tǒng)調(diào)用pipe()的功能和實際原理 2、 編寫一段程序,使用管道實現(xiàn)父子進程之間的通信 a) 使用系統(tǒng)調(diào)用fork()創(chuàng)建一個子進程 b) 子進程調(diào)用函數(shù)write()向父進程發(fā)送自己的進程ID和字符串” s sending a message to parent.\n”。 c) 父進程調(diào)用函數(shù)read()通過管道讀出子進程發(fā)來的消息,將消息輸出屏幕,然后終止
標簽: pipe 系統(tǒng)調(diào)用 程序 編寫
上傳時間: 2013-12-16
上傳用戶:古谷仁美
This book is the most accurate and up-to-date source of information the STL currently available. ... It has an approach and appeal of its own: it explains techniques for building data structures and algorithms on top of the STL, and in this way appreciates the STL for what it is - a framework. Angelika Langer, Independent Consultant and C++ Report Columnist "A superbly authored treatment of the STL......an excellent book which belongs in any serious C++ developer s library." Jim Armstrong, President 2112 F/X, Texas. \n The C++ Standard Template Library (STL) represents a breakthrough in C++ programming techniques. With it, software developers can achieve vast improvements in the reliability of their software, and increase their own productivity.
標簽: information up-to-date available currently
上傳時間: 2015-10-31
上傳用戶:CHINA526
我用matlab寫的一個corner detector, 效果比現(xiàn)在流行的harris,susan,CSS等效果要好。 Algorithm is derived from: X.C. He and N.H.C. Yung, Curvature Scale Space Corner Detector with Adaptive Threshold and Dynamic Region of Support , Proceedings of the 17th International Conference on Pattern Recognition, 2:791-794, August 2004. Improved algorithm has been included in A Corner Detector based on Global and Local Curvature Properties and submitted to Optical Engineering.
標簽: detector matlab corner harris
上傳時間: 2013-12-30
上傳用戶:569342831
g a w k或GNU awk是由Alfred V. A h o,Peter J.We i n b e rg e r和Brian W. K e r n i g h a n于1 9 7 7年為U N I X創(chuàng)建的a w k編程語言的較新版本之一。a w k出自創(chuàng)建者姓的首字母。a w k語言(在其所有的版本中)是一種具有很強能力的模式匹配和過程語言。a w k獲取一個文件(或多個文件)來查找匹配特定模式的記錄。當查到匹配后,即執(zhí)行所指定的動作。作為一個程序員,你不必操心通過文件打開、循環(huán)讀每個記錄,控制文件的結(jié)束,或執(zhí)行完后關(guān)閉文件。
上傳時間: 2014-01-02
上傳用戶:hwl453472107
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1