⑴ c語言學生管理系統
C 語言學生成績管理系統 
#include<stdio.h> 
#include<malloc.h>
#include<conio.h>
#include<string.h> 
typedef struct STUDENT 
{ 
char studentNumber[20];/*學生學號*/ 
char studentName[20];/*學生姓名*/ 
char className[20];/*班級名稱*/ 
float mark1;/*第1門成績*/ 
float mark2;/*第2門成績*/ 
float mark3;/*第3門成績*/ 
struct STUDENT *next; 
}STUDENT; 
STUDENT *headLink; /*鏈表表頭指針*/ 
/*函數聲明*/ 
void ReadInfoFormFile(); 
void Menu(); 
void CreateHeadLink(); 
STUDENT *MallocNode(); 
void GetInformation(STUDENT *t); 
void OutputInformation(); 
void DesplayInfoBystudentName(); 
void DesplayInfoBystudentNumber(); 
void DesplayOneNode(STUDENT *t); 
void InsertOneNode(STUDENT *t); 
void DeleteNodeBystudentNumber(); 
void ChangeMarkByName(); 
void ChangeMarkByNumber(); 
void SaveLinkToFile();
void paixu();
void DesplayMarkSegment(); 
int choose;/*用於接受用戶的選擇*/ 
/*主函數*/ 
main() 
{
system("color 2a");
printf("\n\t\t歡迎進入***學院***班學生成績管理系統\n\n\n");
printf("\t\t\t\tO(∩_∩)O\n\n\n\n");
printf("\t\t\t^_^\t\t\t^_^\n\n");
printf("\n\t\t    注意:請按照要求輸入相應信息,謝謝!\n\n\n\n\n");
printf("\t\t\t\t\t\t\t\t製作人:***\n\n\n");
printf("\t\t\t  按任意鍵進入…………");
getch();
system("cls");
CreateHeadLink();
ReadInfoFormFile();
Menu();
  
} 
/*從文件中讀學生信息到鏈表中*/ 
void ReadInfoFormFile(void) 
{ 
FILE *fp; 
STUDENT *p; 
fp=fopen("student.txt","r"); 
if(!fp) 
{ 
printf("\n"); 
return; 
} 
p=MallocNode(); 
while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3))>0) 
{ 
InsertOneNode(p); 
p=MallocNode(); 
} 
fclose(fp); 
} 
/*顯示菜單,根據用戶的輸入完成相應的功能*/ 
void Menu(void) 
{ 
STUDENT *p; 
printf("\t\t     (^o^)歡迎使用學生成績管理系統(^o^)\n\n");
printf("\t   ※--------------------請選擇相應功能---------------------※\n\n"); 
printf("\t    1: 顯示所有學生的信息 |"); 
printf(" \t       2: 按姓名查詢 |\n\n"); 
printf("\t    3: 按學號查詢 |"); 
printf(" \t\t       4: 增加學生 |\n\n"); 
printf("\t    5: 刪除學生 |"); 
printf(" \t\t       6: 按姓名修改學生成績 |\n\n"); 
printf("\t    7: 按學號修改學生成績 |"); 
printf(" \t       8: 保存所有學生信息 |\n\n"); 
printf("\t    9: 按成績輸出學生信息 |"); 
printf("\t       10: 顯示不及格及優秀學生 |\n\n");
printf("\t    11: 返回主菜單 |"); 
printf("\t\t       12: 退出 |\n\n");
printf("\t   ※----------------------O(∩_∩)O------------------------※\n\n");
printf("\t      請輸入對應數字:");
scanf("%d",&choose);/*取得用戶的選擇*/ 
switch(choose) 
{ 
case 1:system("cls");
OutputInformation();/*顯示所有學生的信息*/ 
break; 
case 2: system("cls");
DesplayInfoBystudentName(); 
break; 
case 3: system("cls");
DesplayInfoBystudentNumber();/*根據用戶輸入的學號顯示該學生的信息*/ 
break; 
case 4: system("cls");
p=MallocNode();/*先申請一個新結點*/ 
GetInformation(p);/*要求用戶輸入信息到新結點中*/ 
InsertOneNode(p);/*將新結點加到鏈表中*/ 
break; 
case 5: system("cls");
DeleteNodeBystudentNumber();/*根據用戶輸入的學號刪除該學生*/ 
break; 
case 6: system("cls");
ChangeMarkByName();/*根據用戶輸入的姓名修改學生成績*/ 
break; 
case 7: system("cls");
ChangeMarkByNumber();/*根據用戶輸入的學號修改學生成績*/ 
break; 
case 8: system("cls");
SaveLinkToFile();/*保存數據*/ 
break;
case 9: system("cls");
paixu();break;
case 10: system("cls");
DesplayMarkSegment();break;
case 11: system("cls");
break;
case 12: system("cls");
SaveLinkToFile();/*保存數據後再退出*/ 
free(headLink); 
exit(1); 
break; 
default: system("cls"); break;
} 
Menu();/*遞歸調用*/
} 
/*建立鏈表表頭*/ 
void CreateHeadLink(void) 
{
STUDENT *p; 
p=(STUDENT*)malloc(sizeof(STUDENT)); 
headLink=p; 
p->next=NULL; 
} 
/*申請一個新結點,並將其初始化*/ 
STUDENT *MallocNode(void) 
{ 
STUDENT *p; 
int i; 
p=(STUDENT*)malloc(sizeof(STUDENT)); 
if(p==NULL) 
return NULL; 
for(i=0;i<10;i++) 
p->studentNumber='\0'; 
for(i=0;i<20;i++) 
p->studentName='\0'; 
for(i=0;i<20;i++) 
p->className='\0'; 
p->mark1=0.0; 
p->mark2=0.0; 
p->mark3=0.0; 
p->next=NULL; 
return p; 
} 
/*取得用戶輸入的學生信息*/ 
void GetInformation(STUDENT *t) 
{ 
printf("請輸入學生學號:"); 
scanf("%s",t->studentNumber); 
printf("請輸入學生姓名:"); 
scanf("%s",t->studentName); 
printf("請輸入該生所在班級:"); 
scanf("%s",t->className); 
printf("請輸入第1門成績:"); 
scanf("%f",&(t->mark1)); 
printf("請輸入第2門成績:"); 
scanf("%f",&(t->mark2)); 
printf("請輸入第3門成績:"); 
scanf("%f",&(t->mark3)); 
} 
/*在鏈表的結尾處增加一個結點*/ 
void InsertOneNode(STUDENT *t) 
{ 
STUDENT *p; 
p=headLink; 
while(p->next) 
{ 
p=p->next; 
} 
p->next=t; 
} 
/*根據用戶輸入的學生姓名顯示該學生的信息*/ 
void DesplayInfoBystudentName(void) 
{ 
STUDENT *p; 
char studentName[20]; 
char flag=0; 
p=headLink->next; 
printf("請輸入學生姓名:"); 
scanf("%s",studentName); 
while(p) 
{ 
if(strcmp(p->studentName,studentName)==0) 
{system("cls");
printf("\t學號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n"); 
DesplayOneNode(p); 
flag=1; 
break; 
} 
p=p->next; 
} 
if(!flag) {system("cls"); 
printf("\t   對不起,不存在姓名為 %s 的學生\n",studentName);} 
} 
/*根據用戶輸入的學號顯示該學生的信息*/ 
void DesplayInfoBystudentNumber(void) 
{ 
STUDENT *p; 
char studentNumber[20]; 
char flag=0; 
p=headLink->next; 
printf("請輸入學生學號:"); 
scanf("%s",studentNumber); 
while(p) 
{ 
if(strcmp(p->studentNumber,studentNumber)==0) 
{ system("cls");
printf("\t學號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n"); 
DesplayOneNode(p); 
flag=1; 
break; 
} 
p=p->next; 
} 
if(!flag) {system("cls");
printf("\t   對不起,不存在學號為 %s 的學生\n",studentNumber); 
}} 
/*輸出一個結點的信息*/ 
void DesplayOneNode(STUDENT *t) 
{ 
printf("\t%s\t",t->studentNumber); 
printf("%s\t",t->studentName); 
printf("%s\t",t->className); 
printf("%.2f\t",t->mark1); 
printf("%.2f\t",t->mark2); 
printf("%.2f\t",t->mark3); 
printf("%.2f\t",t->mark1+t->mark2+t->mark3); 
printf("%.2f\t\n",(t->mark1+t->mark2+t->mark3)/3); 
} 
/*根據用戶輸入的學號刪除該學生*/ 
void DeleteNodeBystudentNumber(void) 
{ 
char studentNumber[10]; 
STUDENT *p,*q; 
char flag=0; 
printf("請輸入要刪除的學生學號:"); 
scanf("%s",studentNumber); 
p=headLink; 
q=headLink->next; 
while(q) 
{ 
if(strcmp(q->studentNumber,studentNumber)==0) 
{ 
p->next=q->next; 
free(q); 
flag=1; 
break; 
} 
p=p->next; 
q=q->next; 
} 
if(!flag) 
{ system("cls");
printf("\t   不存在該學號的學生\n"); 
return; 
} 
system("cls");
printf("\t   成功刪除\n"); 
} 
/*顯示所有學生的信息*/ 
void OutputInformation(void) 
{ 
STUDENT *p; 
p=headLink->next; 
if(p==NULL) 
{ 
printf("\t    現在沒有學生信息,請先輸入學生信息\n\n"); 
return; 
} 
printf("\t學號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n"); 
while(p) 
{ 
DesplayOneNode(p); 
p=p->next; 
} 
} 
/*根據輸入的姓名修改成績*/ 
void ChangeMarkByName(void) 
{ 
STUDENT *p; 
char studentName[20]; 
char flag=0; 
float mark1,mark2,mark3; 
p=headLink->next; 
printf("請輸入學生姓名:"); 
scanf("%s",studentName); 
while(p) 
{ 
if(strcmp(p->studentName,studentName)==0) 
{ 
printf("請輸入新的第1門成績:\n"); 
scanf("%f",&mark1); 
printf("請輸入新的第2門成績:\n"); 
scanf("%f",&mark2); 
printf("請輸入新的第3門成績:\n"); 
scanf("%f",&mark3); 
p->mark1=mark1; 
p->mark2=mark2; 
p->mark3=mark3; 
flag=1; 
printf("修改成功\n"); 
break; 
} 
p=p->next; 
} 
if(!flag) {system("cls");
printf("\t   對不起,不存在姓名為 %s 的學生\n",studentName); 
} }
/*根據輸入的姓名修改成績*/ 
void ChangeMarkByNumber(void) 
{ 
STUDENT *p; 
char studentNumber[20]; 
char flag=0; 
float mark1,mark2,mark3; 
p=headLink->next; 
printf("請輸入學生學號:"); 
scanf("%s",studentNumber); 
while(p) 
{ 
if(strcmp(p->studentNumber,studentNumber)==0) 
{ 
printf("請輸入新的第1門成績:\n"); 
scanf("%f",&mark1); 
printf("請輸入新的第2門成績:\n"); 
scanf("%f",&mark2); 
printf("請輸入新的第3門成績:\n"); 
scanf("%f",&mark3); 
p->mark1=mark1; 
p->mark2=mark2; 
p->mark3=mark3; 
flag=1; 
printf("修改成功\n"); 
break; 
} 
p=p->next; 
} 
if(!flag){system("cls");
printf("\t   對不起,不存在學號為 %s 的學生\n",studentNumber); 
}} 
/*保存鏈表數據到文件中*/ 
void SaveLinkToFile(void) 
{ 
STUDENT *p; 
FILE *fp; 
p=headLink->next; 
if(p==NULL) 
{ 
printf("\t   現在沒有學生信息,請先輸入學生信息\n\n"); 
return; 
} 
fp=fopen("student.txt","w+"); 
if(!fp) 
{ 
printf("文件不存在\n"); 
return; 
} 
while(p) 
{ 
fprintf(fp,"%s %s %s %f %f %f\n",p->studentNumber,p->studentName,p->className,p->mark1,p->mark2,p->mark3); 
p=p->next; 
} 
fclose(fp); 
} 
/*顯示優秀和不及格學生成績*/ 
void DesplayMarkSegment(void) 
{ 
STUDENT *p; 
int count=0; 
p=headLink->next; 
printf("\t60分以下(不及格)的學生成績如下:\n"); 
printf("\t學號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n\n"); 
while(p) 
{ 
if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10))))/*只要有一科不及格就認為該生不及格*/ 
{ 
count++; 
DesplayOneNode(p); 
} 
p=p->next; 
} 
printf("\t不及格的學生一共有%d人\n",count); 
p=headLink->next; 
printf("\t成績優秀的學生成績如下:\n"); 
printf("\t學號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n\n"); 
count=0; 
while(p) 
{ 
if((8<=((int)(p->mark1/10)))&&(8<=((int)(p->mark2/10)))&&(8<=((int)(p->mark3/10)))) 
{ 
count++; 
DesplayOneNode(p); 
} 
p=p->next; 
} 
printf("\t成績優秀的學生一共有%d人\n",count); 
} 
/*按總成績排序*/ 
void paixu(void) 
{ 
STUDENT exchange,*r,*p,*q; 
r=headLink->next; 
if(r==NULL) 
{ 
printf("\t   現在還沒學生信息,請先輸入學生信息\n"); 
return; 
} 
while(r)/*兩層while循環實現排序*/ 
{ 
p=r; 
q=r->next; 
while(q) 
{ 
if((q->mark1+q->mark2+q->mark3)>(p->mark1+p->mark2+p->mark3)) 
{ 
strcpy(exchange.studentNumber,q->studentNumber);/*先復制q結點信息到exchange*/ 
strcpy(exchange.studentName,q->studentName); 
strcpy(exchange.className,q->className); 
exchange.mark1=q->mark1; 
exchange.mark2=q->mark2; 
exchange.mark3=q->mark3; 
strcpy(q->studentNumber,p->studentNumber);/*再復制p結點信息到q*/ 
strcpy(q->studentName,p->studentName); 
strcpy(q->className,p->className); 
q->mark1=p->mark1; 
q->mark2=p->mark3; 
q->mark3=p->mark3; 
strcpy(p->studentNumber,exchange.studentNumber);/*最後復制exchange結點信息到p*/ 
strcpy(p->studentName,exchange.studentName); 
strcpy(p->className,exchange.className); 
p->mark1=exchange.mark1; 
p->mark2=exchange.mark2; 
p->mark3=exchange.mark3; 
} 
q=q->next; 
} 
r=r->next; 
} 
OutputInformation(); 
}
⑵ C語言編程 有100個學生,試編程出按總分排名的名次表,列印出形式為:名次,學號,總分.
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
const int Size = 100;   // 學生人數
struct Student
{
 int score;
 int num;
 inline friend bool operator < ( const Student &s1, const Student &s2 )
 {
  return s1.score > s2.score;
 }
};
Student Stu[ Size ];
void init( )
{
 int i;
 for ( i = 0; i < Size; i++ )
 {
  cout << "請輸入第" << i + 1 << "個學生的學號和成績:";
  cin >> Stu[ i ].num >> Stu[ i ].score;
 }
}
void print( )
{
 int i;
 cout << setw( 6 ) << "名次" << setw( 6 ) << "學號" << setw( 6 ) << "總分" << endl;
 for ( i = 0; i < Size; i++ )
  cout << setw( 6 ) << i + 1
   << setw( 6 ) << Stu[ i ].num
    << setw( 6 ) << Stu[ i ].score << endl; 
}
int main( )
{
 init( );
 sort( Stu, Stu + Size );
 print( );
 return 0;
}
⑶ c語言 學生成績排名
 #include<stdio.h>
#include<stdio.h>
voidsetList(int*a,intlen);
voidprintfList(int*a,intlen);
voidpxList(int*a,intlen);
voidinsertList(int*a,intlen);
voidfanList(int*a,intlen);
intmain()
{
inta[11];//1.定義一個數組a[11],用以存放學生的成績。
setList(a,10);//2.從鍵盤輸入10個學生成績。
pxList(a,10);//3.採用選擇法,將學生成績按照從高到低進行排序。
printfList(a,10);
insertList(a,10);//4.再輸入一個學生的成績,將此成績按照排序規律插入原學生成績數組。
printfList(a,11);
fanList(a,11);//5.將排好序的成績單進行反序存放,即原來是從高到低,現在改為從低到高排列
printfList(a,11);
return0;
}
voidsetList(int*a,intlen)//輸入
{
inti;
printf("請輸入%d個學生成績
",len);
for(i=0;i<len;i++)
scanf("%d",&a[i]);
}
voidprintfList(int*a,intlen)//列印數組
{
inti;
printf("
---列印數組---
");
for(i=0;i<len;i++)
printf("%d",a[i]);
}
voidpxList(int*a,intlen)//選擇排序
{
inti,j;
printf("
---從大到小排序---
");
for(i=0;i<len-1;i++)
for(j=i+1;j<len;j++)
if(a[i]<a[j])
{
a[j]^=a[i];
a[i]^=a[j];
a[j]^=a[i];
}
}
voidinsertList(int*a,intlen)//插入數組
{
printf("
---插入數組---
");
printf("輸入要插入的數:");
scanf("%d",&a[len]);
pxList(a,11);
}
voidfanList(int*a,intlen)//數組反向存儲
{
int*p0,*p1;
p0=a;
p1=&a[len-1];
while(p0<p1)
{
*p0^=*p1;
*p1^=*p0;
*p0^=*p1;
p0++;
p1--;
}
}
⑷ 學生成績名次表c語言代碼
#include <stdio.h>
#include <stdlib.h>
typedef struct 
{
 int num;
 int score;
 int order;
}stu;
void classorder(stu s[], int total, int m, int n);
void gradeorder(stu s[], int total);
int main()
{
 stu s[10000], p[10000];
 int i, j, k, count;
 int n, m;
 printf("輸入班級數 m 和每班人數 n\n");
 scanf("%d%d",&m,&n);
 k = 0, count = 1;
 for (i = 0; i < m; i++)
 {
  for (j = 0; j < n; j++)
  {
   s[k].num = count++;
   s[k].score = rand()%100+1;
   k++;
  }
 }
 for (i = 0; i < k; i++)
  p[i] = s[i];
 classorder(s,k,m,n);
 gradeorder(p,k);
 return 0;
}
void gradeorder(stu s[], int total)
{
 int i, j;
 stu temp;
 for (i = 0; i < total-1; i++)
 {
  for (j = i+1; j < total; j++)
  {
   if (s[i].score  < s[j].score )
   {
    temp = s[i];
    s[i] = s[j];
    s[j] = temp;
   }
  }
 }
 s[0].order = 1;
 for (i = 1; i < total; i++)
 {
  if (s[i].score == s[i-1].score)
   s[i].order = s[i-1].order ;
  else
   s[i].order = s[i-1].order +1;
 }
 printf ("年級總排名:\n學號\t成績\t名次\n");
 for (i = 0; i < total; i++)
  printf("%4d\t%4d\t%4d\n",s[i].num ,s[i].score ,s[i].order );
}
void classorder(stu s[], int total, int m, int n)
{
 int i, k, h;
 stu temp;
 for (i = 0; i < m; i++)
 {
  k = i*n;
  for (;k < (i+1)*n-1; k++)
  {
   for (h = k+1; h < (i+1)*n; h++)
   {
    if (s[k].score < s[h].score )
    {
     temp = s[k];
     s[k] = s[h];
     s[h] = temp;
    }
   }
  }
  k = i*n;
  s[k].order = 1;
  for (k = i*n+1; k < (i+1)*n; k++)
  {
   if (s[k].score == s[k-1].score )
    s[k].order = s[k-1].order ;
   else
    s[k].order = s[k-1].order + 1;
  }
  printf ("%d 班排名:\n學號\t成績\t名次\n",i+1);  
  for (k = i*n; k < (i+1)*n; k++)
   printf("%4d\t%4d\t%4d\n",s[k].num ,s[k].score ,s[k].order );
  printf ("\n");
 }
}
⑸ c語言中排名問題
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#definestatusint
#defineNAME30/*各類名稱字數上限*/
#defineSTU100/*學生人數上限*/
#defineSUB10/*課程數上限*/
typedefstructrecord{
floatscore;/*成績分數*/
}record;
typedefstructstudent{
intid;/*索引性質的id*/
intno;/*學號*/
charname[NAME];/*姓名*/
recordscores[SUB];/*各門課成績分數*/
floattotalScore;/*總分*/
floataverageScore;/*平均分*/
intranking;/*名次*/
}student;
intsubNum=3;/*課程數*/
charsubject[SUB][NAME]={"數學","英語","計算機"};/*課程名稱*/
/**********************以下為函數聲明**********************/
intstuInfoEmpty(studentstu[],intstuNum);/*學生信息判空*/
statusinputStuInfo(studentstu[],intstuIndex,intsubNum);/*錄入單個學生信息*/
statusinputAllStuInfo(studentstu[],int*stuNum,intsubNum);/*錄入全部學生信息*/
statuscalcStuInfo(studentstu[],intstuIndex,intsubNum);/*計算處理單個學生信息*/
statuscalcAllStuInfo(studentstu[],intstuNum,intsubNum);/*計算處理全部學生信息*/
statusprintStuInfo(studentstu[],intstuIndex,intsubNum,intinclRanking);/*輸出單個學生信息*/
statusprintAllStuInfo(studentstu[],intstuNum,intsubNum,intinclRanking);/*輸出全部學生信息*/
statusdescSort(studentstu[],intstuNum,intsubNum);/*按總分降序排列並錄入名次*/
intgetCommand(void);/*輸入命令編號*/
statusprintMeunText(void);/*列印菜單文本*/
statusrunMeun(studentstu[],intstuNum,intsubNum);/*調出菜單*/
/**********************以上為函數聲明**********************/
intmain(void){
studentstu[STU]={-1};/*學生結構體數組*/
intstuNum;
inti;
runMeun(stu,stuNum,subNum);
return0;
}
/*學生信息判空*/
/*為空返回1;不空返回0*/
intstuInfoEmpty(studentstu[],intstuNum){
inti;
if(stuNum==0)
return1;
for(i=0;i<stuNum;i++)
if(stu[i].id==-1)
return1;
return0;
}
/*錄入單個學生信息*/
statusinputStuInfo(studentstu[],intstuIndex,intsubNum){
inti;
scanf("%d",&stu[stuIndex].no);/*學號*/
if(stu[stuIndex].no==-1){/*學號錄入-1以結束*/
stu[stuIndex].id=-1;
return-1;/*本次未錄入*/
}
scanf("%s",&stu[stuIndex].name);/*姓名*/
for(i=0;i<subNum;i++){
scanf("%f",&stu[stuIndex].scores[i].score);
}/*各門課成績分數*/
for(i=0;i<subNum;i++)
if(stu[stuIndex].scores[i].score>100||stu[stuIndex].scores[i].score<0)
return0;/*本次錄入錯誤*/
return1;/*本次錄入成功*/
}
/*錄入全部學生信息*/
statusinputAllStuInfo(studentstu[],int*stuNum,intsubNum){
inti,inputStatus,count;
puts("======================================================");
puts("錄入學生信息");
puts("======================================================");
putchar(' ');
if(*stuNum!=0){
printf("已有%d名學生信息! ",*stuNum);
putchar(' ');
puts("繼續錄入以新增(學號錄入-1以結束)↓↓");
putchar(' ');
}
else{
puts("請錄入學生信息(學號錄入-1以結束)↓↓");
putchar(' ');
}
/*錄入信息之表頭*/
puts("------------------------------------------------------");
printf(" 學號 姓名 ");
for(i=0;i<subNum;i++)
printf("%s ",subject[i]);
putchar(' ');
puts("------------------------------------------------------");
/*錄入信息*/
count=0;
i=*stuNum;
while(1){
printf("第%d名學生 ",i+1);
stu[i].id=i+1;
inputStatus=inputStuInfo(stu,i,subNum);
if(inputStatus==1){
i++;
count++;
}
elseif(inputStatus==0){
putchar(' ');
puts("成績輸入錯誤!請重新輸入↓");
continue;
}
elseif(inputStatus==-1)
break;
}
*stuNum+=count;
puts("------------------------------------------------------");
putchar(' ');
putchar(' ');
if(count!=0)
printf("本次%d名學生信息錄入完畢!即將返回主菜單。 ",count);
else
printf("您本次未輸入學生信息!即將返回主菜單。 ");
putchar(' ');
puts("按任意鍵繼續...");
putchar(' ');
fflush(stdin);
getch();
return1;
}
/*計算處理單個學生信息*/
statuscalcStuInfo(studentstu[],intstuIndex,intsubNum){
inti;
stu[stuIndex].totalScore=stu[stuIndex].averageScore=0;
/*計算總分*/
for(i=0;i<subNum;i++){
stu[stuIndex].totalScore+=stu[stuIndex].scores[i].score;
}
stu[stuIndex].averageScore=stu[stuIndex].totalScore/subNum;/*計算平均分*/
return1;
}
/*計算處理全部學生信息*/
statuscalcAllStuInfo(studentstu[],intstuNum,intsubNum){
inti;
/*計算總分、平均分等*/
for(i=0;i<stuNum;i++)
calcStuInfo(stu,i,subNum);
return1;
}
/*輸出單個學生信息*/
statusprintStuInfo(studentstu[],intstuIndex,intsubNum,intinclRanking){
inti;
if(inclRanking)
printf("%d ",stu[stuIndex].ranking);/*名次*/
printf("%d ",stu[stuIndex].no);/*學號*/
printf("%s ",stu[stuIndex].name);/*姓名*/
for(i=0;i<subNum;i++)/*各門課成績分數*/
printf("%.2f ",stu[stuIndex].scores[i].score);
printf("%.2f ",stu[stuIndex].totalScore);/*總分*/
printf("%.2f ",stu[stuIndex].averageScore);/*平均分*/
putchar(' ');
return1;
}
/*輸出全部學生信息*/
statusprintAllStuInfo(studentstu[],intstuNum,intsubNum,intinclRanking){
inti;
if(stuInfoEmpty(stu,stuNum)){
puts("尚未錄入學生信息!即將返回主菜單。");
putchar(' ');
puts("按任意鍵繼續...");
putchar(' ');
fflush(stdin);
getch();
return0;
}
puts("======================================================");
puts("全部學生信息");
puts("======================================================");
putchar(' ');
if(inclRanking)
printf("%d名學生信息如下,按總分由高到低排列名次↓↓ ",stuNum);
else
printf("%d名學生信息如下↓↓ ",stuNum);
putchar(' ');
/*輸出信息之表頭*/
puts("------------------------------------------------------");
if(inclRanking)
printf("名次 ");
printf("學號 ");
printf("姓名 ");
for(i=0;i<subNum;i++)
printf("%s ",subject[i]);
printf("總分 ");
printf("平均分 ");
putchar(' ');
puts("------------------------------------------------------");
/*輸出信息*/
for(i=0;i<stuNum;i++)
printStuInfo(stu,i,subNum,inclRanking);
puts("------------------------------------------------------");
putchar(' ');
putchar(' ');
puts("學生信息輸出完畢!即將返回主菜單。");
putchar(' ');
puts("按任意鍵繼續...");
putchar(' ');
fflush(stdin);
getch();
return1;
}
/*按總分降序排序、錄入名次並輸出*/
statusdescSort(studentstu[],intstuNum,intsubNum){
inti,j;
studenttemp;
if(stuInfoEmpty(stu,stuNum))
return0;
/*按總分降序*/
for(i=0;i<stuNum-1;i++)
for(j=0;j<stuNum-1-i;j++)
if(stu[j].totalScore<stu[j+1].totalScore){
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
/*錄入名次*/
for(i=0;i<stuNum;i++)
stu[i].ranking=i+1;
return1;
}
/*輸入命令編號*/
intgetCommand(void){
intkey;/*命令編號*/
printf("請輸入命令編號以開啟操作:");
scanf("%d",&key);
returnkey;
}
/*列印菜單文本*/
statusprintMeunText(void){
puts("======================================================");
puts("學生信息管理");
puts("------------------------------------------------------");
printf("%4c 功能詳情 ",'#');
puts("------------------------------------------------------");
printf("%4d 輸入學生信息 ",1);
printf("%4d 按成績由高到低排序 ",2);
printf("%4d 退出 ",7);
puts("======================================================");
putchar(' ');
return1;
}
statusrunMeun(studentstu[],intstuNum,intsubNum){
intkey;
do{
system("cls");/*清屏*/
printMeunText();/*列印菜單文本*/
key=getCommand();/*輸入命令編號*/
putchar(' ');
switch(key){
case1:system("cls");inputAllStuInfo(stu,&stuNum,subNum);calcAllStuInfo(stu,stuNum,subNum);break;
case2:system("cls");descSort(stu,stuNum,subNum);printAllStuInfo(stu,stuNum,subNum,1);break;
case7:puts("程序結束! ");break;
default:puts("輸入錯誤,請重新輸入! 按任意鍵繼續...");getch();break;
}
}while(key!=7);
getch();
return1;
}
運行結果
主菜單

⑹ c語言輸入學生成績 根據學生的總得分以降序對學生進行排名來計算他們的排名
char name[100000]這個長度有點離譜改小點,char name[100];

#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct
{
char name[100];
int chinese, math, english, computer;
int total;
} STUDENT;
void printStuArray(STUDENT array[], int num);
void sortStuArray(STUDENT array[], int num);
int main()
{
STUDENT people[10];
int num_students;
cout << "Enter how many students>";
cin >> num_students;
for (int i = 0; i < num_students; i++)
{
cout << " Student " << i+1 << "'s name>";
cin >> people[i].name;
cout << " Chinese>";
cin >> people[i].chinese;
cout << " Math>";
cin >> people[i].math;
cout << " Englis>";
cin >> people[i].english;
cout << " Computer>";
cin >> people[i].computer;
people[i].total= people[i].chinese + people[i].math + people[i].english + people[i].computer;
}
sortStuArray(people, num_students);
printStuArray(people, num_students);
system("pause");
return 0;
}
void printStuArray(STUDENT array[], int num)
{
cout << "=======================================================" << endl;
cout << "Rank Chinese Math Eng Com Total Name" << endl;
for (int i = 0; i < num; i++)
{
printf("%3d %3d %3d %3d %3d %3d %s ", i + 1, array[i].chinese, array[i].math, array[i].english, array[i].computer, array[i].total, array[i].name);
}
cout << "=======================================================" << endl;
}
void sortStuArray(STUDENT array[], int num)
{
for (int i = 0; i < num; i++)
{
for(int j=i+1;j<num;j++)
{
if (array[i].total<array[j].total)
{
STUDENT temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
⑺ C語言成績排名次。
#include<stdio.h>
#include<stdlib.h>
typedefintunit;//可改為double型
intcmp(constvoid*a,constvoid*b)
{
unitA=*(unit*)a;
unitB=*(unit*)b;
if(A<B)return1;
if(A>B)return-1;
return0;
}
inti,j,k,m,n;
unit*data;
intmain()
{
scanf("%d",&n);//輸入人數
data=(unit*)malloc(n*sizeof(unit));
for(i=0;i<n;i++)
{
if(sizeof(unit)==sizeof(int))scanf("%d",&data[i]);
elseif(sizeof(unit)==sizeof(double))scanf("%lf",&data[i]);
}
qsort(data,n,sizeof(data[0]),cmp);
for(i=0;i<n;i++)
{
if(sizeof(unit)==sizeof(int))printf("%d",data[i]);
elseif(sizeof(unit)==sizeof(double))printf("%lf",data[i]);
}
}
從高到低排分數
