當前位置:首頁 » 考試成績 » 學生成績結構

學生成績結構

發布時間: 2020-11-30 01:57:16

『壹』 定義學生結構類型,包含:學號,姓名,平時成績,期中成績,期末成績,總成績。編寫主函數和3個子函定義


這就是一個結構體數組的遍歷問題,代碼如下:

#include<stdio.h>
#defineN5
typedefstruct
{
intsno;
charname[32];
doubledaily;
doublemiddle;
doublefinal;
}Student;
intmain(void)
{
inti;
Studentstus[N];
for(i=0;i<N;++i)
{
scanf("%d%s%lf%lf%lf",&stus[i].sno,stus[i].name,
&stus[i].daily,&stus[i].middle,&stus[i].final);
printf("%d,%s,%.2lf ",stus[i].sno,stus[i].name,
stus[i].daily*0.1+stus[i].middle*0.2+stus[i].final*0.7);
}
return0;
}



『貳』 建立一個學生的結構記錄,包括學號,姓名和成績.

你沒有建立學生的結構體類型的變數。不符合題意要求。

『叄』 用結構體完成N個學生M名課程的成績排序 用C語言編寫

這里是4名學生一門成績的排序,不過中間還有生日,希望能給你帶來點靈感吧!源代碼如下:
#include <stdio.h>
struct student_record
{
char name[8];
struct birth
{
int year;
int month;
int day;
}date;
int score;
}student[4];

void main()
{
struct student_record student[4];
struct student_record stu;
int i,j;
printf("please input date:\n");
for(i=0;i<4;i++)
scanf("%s%d%d%d%d",student[i].name,&student[i].date.year,
&student[i].date.month,&student[i].date.day,&student[i].score);
printf("OUTPUT:\n");
printf("NAME BIRTH SCORE\n");
for(j=1;j<=3;j++)
for(i=0;i<4-j;i++)
{

if(student[i].score<student[i+1].score)
{
stu=student[i];
student[i]=student[i+1];
student[i+1]=stu;
}

}
for(i=0;i<4;i++)
printf("%s %d,%d,%d %d\n",student[i].name,student[i].date.year,
student[i].date.month,student[i].date.day,student[i].score);
}

『肆』 定義一個結構體類型的結構體數組stud,輸入學生三門課成績,然後按總分成績排序後輸出學生成績

#include"stdio.h"
#include"string.h"
struct student
{ int num;
char name[20];
float yingyu;
float shuxue;
float cc;
float sum;
};
struct student stud[100];
int main()
{ int i,n,k,j,z=1;
float t;
char m[20];
printf("輸入有N個學生數");
scanf("%d",&n);
printf("學號 姓名 英語 數學 c++\n");
for(i=0;i<n;i++)
{
scanf("%d%s%f%f%f",&stud[i].num,&stud[i].name,&stud[i].yingyu,&stud[i].shuxue,&stud[i].cc);
stud[i].sum=stud[i].yingyu+stud[i].shuxue+stud[i].cc;
}
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if(stud[i].sum>stud[i+1].sum)
{ t=stud[i].sum;
stud[i].sum=stud[i+1].sum;
stud[i+1].sum=t;
strcpy(m,stud[i].name);
strcpy(stud[i].name,stud[i+1].name);
strcpy(stud[i+1].name,m);
k=stud[i].num;
stud[i].num=stud[i+1].num;
stud[i+1].num=k;
}
printf("學號 姓名 總分 名次 \n");
for(i=0;i<n;i++)
{
printf(" %d %s %.2f %d\n",stud[i].num,stud[i].name,stud[i].sum,z);
z++;}

return 0;

}

『伍』 數據結構線性表的操作,學生成績管理

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 學號 */
char name[20];
char sex[4];
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
char neartime[10];/* 最近更新時間 */
}; typedef struct node
{
struct student data;
struct node *next;
}Node,*Link; void menu()
{
printf("********************************************************************************");
printf("\t1登記學生資料\t\t\t\t\t2刪除學生資料\n");
printf("\t3查詢學生資料\t\t\t\t\t4修改學生資料\n");
printf("\t5保存學生資料\t\t\t\t\t6作者介紹\n");
printf("\t0退出系統\n");
printf("********************************************************************************\n");
} void printstart()
{
printf("-----------------------------------------------------------------------\n");
}
void Wrong()
{
printf("\n=====>提示:輸入錯誤!\n");
} void Nofind()
{
printf("\n=====>提示:沒有找到該學生!\n");
} void printc() /* 本函數用於輸出中文 */
{
printf(" 學號\t 姓名 性別 英語成績 數學成績 C語言成績 總分 平均分\n");
} void printe(Node *p)/* 本函數用於輸出英文 */
{
printf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->data.name,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);
} Node* Locate(Link l,char findmess[],char nameornum[]) /* 該函數用於定位連表中符合要求的接點,並返回該指針 */
{
Node *r;
if(strcmp(nameornum,"num")==0) /* 按學號查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /* 按姓名查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
} void Add(Link l) /* 增加學生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 將指針置於最末尾 */
while(1)
{
printf("請你輸入學號(以'0'返回上一級菜單:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:學號為'%s'的學生已經存在,若要修改請你選擇'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
} p=(Node *)malloc(sizeof(Node)); strcpy(p->data.num,num);
printf("請你輸入姓名:");
scanf("%s",p->data.name);
getchar();
printf("請你輸入性別:");
scanf("%s",p->data.sex);
getchar();
printf("請你輸入c語言成績:");
scanf("%d",&p->data.cgrade);
getchar();
printf("請你輸入數學成績:");
scanf("%d",&p->data.mgrade);
getchar();
printf("請你輸入英語成績:");
scanf("%d",&p->data.egrade);
getchar();
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle / 3;
/* 信息輸入已經完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1; }
} void Qur(Link l) /* 查詢學生 */
{
int sel;
char findmess[20];
Node *p; if(!l->next)
{
printf("\n=====>提示:沒有資料可以查詢!\n");
return;
}
printf("\n=====>1按學號查找\n=====>2按姓名查找\n");
scanf("%d",&sel);
if(sel==1)/* 學號 */
{
printf("請你輸入要查找的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 姓名 */
{
printf("請你輸入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong(); } void Del(Link l) /* 刪除 */
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以刪除!\n");
return;
}
printf("\n=====>1按學號刪除\n=====>2按姓名刪除\n");
scanf("%d",&sel);
if(sel==1)
{
printf("請你輸入要刪除的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("請你輸入要刪除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
} void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以修改!\n");
return;
}
printf("請你輸入要修改的學生學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("請你輸入新學號(原來是%s):",p->data.num);
scanf("%s",p->data.num);
printf("請你輸入新姓名(原來是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("請你輸入新性別(原來是%s):",p->data.sex);
scanf("%s",p->data.sex);
printf("請你輸入新的c語言成績(原來是%d分):",p->data.cgrade);
scanf("%d",&p->data.cgrade);
getchar();
printf("請你輸入新的數學成績(原來是%d分):",p->data.mgrade);
scanf("%d",&p->data.mgrade);
getchar();
printf("請你輸入新的英語成績(原來是%d分):",p->data.egrade);
scanf("%d",&p->data.egrade);
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle/3;
printf("\n=====>提示:資料修改成功!\n");
shoudsave=1;
}
else
Nofind(); } void Disp(Link l)
{
int count=0;
Node *p;
p=l->next; if(!p)
{
printf("\n=====>提示:沒有資料可以顯示!\n");
return;
}
printf("\t\t\t\t顯示結果\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
} void Tongji(Link l)
{
Node *pm,*pe,*pc,*pt,*pa; /* 用於指向分數最高的接點 */
Node *r=l->next;
if(!r)
{
printf("\n=====>提示:沒有資料可以統計!\n");
return ;
}
pm=pe=pc=pt=pa=r;
while(r!=NULL)
{
if(r->data.cgrade>=pc->data.cgrade)
pc=r;
if(r->data.mgrade>=pm->data.mgrade)
pm=r;
if(r->data.egrade>=pe->data.egrade)
pe=r;
if(r->data.totle>=pt->data.totle)
pt=r;
if(r->data.ave>=pa->data.ave)
pa=r;
r=r->next;
}
printf("------------------------------統計結果--------------------------------\n");
printf("總分最高者:\t%s %d分\n",pt->data.name,pt->data.totle);
printf("平均分最高者:\t%s %d分\n",pa->data.name,pa->data.ave); printf("英語最高者:\t%s %d分\n",pe->data.name,pe->data.egrade);
printf("數學最高者:\t%s %d分\n",pm->data.name,pm->data.mgrade);
printf("c語言最高者:\t%s %d分\n",pc->data.name,pc->data.cgrade);
printstart();
}
void Writer()
{
printf(" 我就是傳說中的SDDF.啊哈哈\n\n");
}
void Sort(Link l)
{
Link ll;
Node *p,*rr,*s; ll=(Link)malloc(sizeof(Node)); /* 用於做新的連表 */
ll->next=NULL; if(l->next==NULL)
{
printf("\n=====>提示:沒有資料可以排序!\n");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); /* 新建接點用於保存信息 */
s->data=p->data;
s->next=NULL; rr=ll;
while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("\n=====>提示:排序已經完成!\n");
} void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打開文件時發生錯誤!\n");
exit(1);
}
p=l->next; while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:文件保存成功.(有%d條記錄已經保存.)\n",count);
shoudsave=0;
}
fclose(fp);
} void main()
{
Link l;/* 連表 */
FILE *fp; /* 文件指針 */
int sel;
char ch;
char jian; int count=0;
Node *p,*r;
printf("\t\t\t\t學生成績管理系統\n\t\t\t\t\n");
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l; fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件還不存在,是否創建?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("\n=====>提示:文件已經打開,正在導入記錄......\n"); while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) /* 將文件的內容放入接點中 */
{
p->next=NULL;
r->next=p;
r=p; /* 將該接點掛入連中 */
count++;
}
} fclose(fp); /* 關閉文件 */
printf("\n=====>提示:記錄導入完畢,共導入%d條記錄.\n",count); while(1)
{
menu();
printf("請你選擇操作:");
scanf("%d",&sel); if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("\n=====>提示:資料已經改動,是否將改動保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("\n=====>提示:你已經退出系統,再見!\n");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加學生 */
case 2:Del(l);break;/* 刪除學生 */
case 3:Qur(l);break;/* 查詢學生 */
case 4:Modify(l);break;/* 修改學生 */
case 5:Save(l);break;/* 保存學生 */
case 6:Writer();break;/*作者介紹*/
case 9:printf("\t\t\t==========幫助信息==========\n");break;
default: Wrong();getchar();break;
}
}
}
/* */

『陸』 C語言考試試題:定義一個100位學生的結構體數組,按成績從高到低進行排序

我現寫的一個,簡潔明了,應該是符合你的口味的,測試完全通過
#include <stdio.h>
#define N 100
typedef struct student
{
int id; //學號
char name[20]; //姓名
int gender; //性別(0代表男生,1代表女生)
float score; //成績
}stu;
stu s[N];
int main()
{
int i;
for(i=0;i<N;i++)
{
printf("請輸入第%d個學生的學號:",i+1);
scanf("%d",&s[i].id);
printf("請輸入第%d個學生的姓名:",i+1);
scanf("%s",&s[i].name);
printf("請輸入第%d個學生的性別:",i+1);
scanf("%d",&s[i].gender);
printf("請輸入第%d個學生的成績:",i+1);
scanf("%f",&s[i].score);
}
stu ss[N];
stu* p=ss;
for(i=0;i<N;i++)
ss[i]=s[i];
for(i=0;i<N-1;i++)
{
for(int j=i+1;j<N;j++)
{
if(ss[i].score<ss[j].score)
{
stu temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
printf("所有學生的信息按成績由高到低排名如下:\n");
printf("學號\t姓名\t性別\t成績\n");
for(i=0;i<N;i++)
{
printf("%d\t%s\t%d\t%.1f\n",(p+i)->id,(p+i)->name,(p+i)->gender,(p+i)->score);
}
return 0;
}

『柒』 c語言 輸入2個學生姓名 和成績 ,然後輸出他們的平均成績 用結構體怎麼寫

#include<stdio.h>
#include<string.h>
structStu{
charname[20];
intscore;
}stu[2];
intmain()
{

printf("請輸入第一個學生的姓名和成績:專 ");
scanf("%s%d",&stu[0].name,&stu[0].score);
printf("請輸入第二個學生的姓名和成績: ");
scanf("%s%d",&stu[1].name,&stu[1].score);
floataverage=(stu[0].score+stu[1].score)/2;
printf("平均分是屬%f ",average);
return0;
}

『捌』 建立一個有3個學生成績的結構記錄,包括學號,姓名和3門課程成績。(網上都是有計算平均分的,我這道題

#include<stdio.h>

constintMAXSIZE=3;

structstudent{
intnum;
charname[20];
doublescores[5];
};

intmain(){
inti,j;
structstudentarr[MAXSIZE];
for(i=0;i<MAXSIZE;++i){
scanf("%d%s",&arr[i].num,arr[i].name);
arr[i].scores[3]=0;//總成績
for(j=0;j<3;++j){
scanf("%lf",&arr[i].scores[j]);
arr[i].scores[3]+=arr[i].scores[j];
}
arr[i].scores[4]=arr[i].scores[3]/3;//平均成績
}
for(i=0;i<MAXSIZE;++i){
printf("%d %s ",arr[i].num,arr[i].name);
for(j=0;j<5;++j)
printf("%.2lf ",arr[i].scores[j]);
printf(" ");
}
return0;
}

『玖』 完成一個學生成績管理信息系統。要求:(1)使用結構體數組存儲學生的學號、姓名、性別、C語言成績;(

#include<stdio.h> /*引用庫函數*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定義結構體數組*/
{
char num[10]; /*學號*/
char name[20]; /*姓名*/
int score; /*成績*/
}Student;
Student stu[80]; /*結構體數組變數*/
int menu_select() /*菜單函數*/
{
char c;
do{
system("cls"); /*運行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜單選擇*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*讀入選擇*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回選擇*/
}
int Input(Student stud[],int n) /*輸入若干條記錄*/
{int i=0; char sign,x[10]; /*x[10]為清除多餘的數據所用*/ while(sign!='n'&&sign!='N') /*判斷*/ { printf("\t\t\tstudent's num:"); /*交互輸入*/ scanf("\t\t\t%s",stud[n+i].num); printf("\t\t\tstudent's name:"); scanf("\t\t\t%s",stud[n+i].name); printf("\t\t\tstudent's score:"); scanf("\t\t\t%d",&stud[n+i].score); gets(x); /*清除多餘的輸入*/ printf("\t\t\tany more records?(Y/N)"); scanf("\t\t\t%c",&sign); /*輸入判斷*/ i++; }
return(n+i);
}
void Display(Student stud[],int n) /*顯示所有記錄*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式頭*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循環輸入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十個暫停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/ printf("\t\t\t"); system("pause"); printf("\t\t\t-----------------------------------\n"); }
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按學號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num); strcpy(stud[j+1].num,stud[j].num); strcpy(stud[j].num,t); strcpy(t,stud[j+1].name); strcpy(stud[j+1].name,stud[j].name); strcpy(stud[j].name,t); p=&stud[j+1].score; q=&stud[j].score; s=*p; *p=*q; *q=s; }
}
int Insert_a_record(Student stud[],int n) /*插入一條記錄*/
{char x[10]; /*清除多餘輸入所用*/ printf("\t\t\tstudent's num:"); /*互動式輸入*/ scanf("\t\t\t%s",stud[n].num); printf("\t\t\tstudent's name:"); scanf("\t\t\t%s",stud[n].name); printf("\t\t\tstudent's score:"); scanf("\t\t\t%d",&stud[n].score); gets(x); n++; Sort_by_num(stud,n); /*調用排序函數*/ printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/ return(n); }
int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*互動式問尋*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失敗信息*/
return(n);
}
for(j=i;j<n-1;j++) /*刪除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找並顯示一個記錄*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*輸入失敗信息*/
return;

}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*輸出該學生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,輸出統計信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成績平均值*/
for(i=0;i<n;i++) /*循環輸入判斷*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*總共記錄數*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*從文件中讀入數據*/
{ int i=0,num;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*輸入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打開文件*/
{ printf("\t\t\tcann't open the file\n"); /*打開失敗信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*讀入總記錄量*/
while(i<num) /*循環讀入數據*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*關閉文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/
{
int i=0;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*輸入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打開文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循環寫入數據*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*關閉文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函數*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*選擇判斷*/
{
case 1:
printf("\t\t\tInput Records\n"); /*輸入若干條記錄*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*顯示所有記錄*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按學號排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找並顯示一個記錄*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,輸出統計信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,輸出統計信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循環寫入數據*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*結束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}

『拾』 c語言編程,用結構體編學生成績系統

#include <stdio.h>
#include <string.h>

#define STU_NUM 10//學生數
#define SCORE_NUM 6//每個學生的科目數

typedef struct /*定義結構體數組*/
{
char num[20]; /*學號*/
char name[20]; /*姓名*/
float score[SCORE_NUM]; /*成績*/
float total;//總分
float average;//平均分
} Student;

Student stu[STU_NUM];

//輸入學生信息
void input()
{
int i,j;

printf("請輸入%d個學生的信息:\n",STU_NUM);
for(i=0;i<STU_NUM;i++)
{
printf("學號:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d的成績:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
}

//輸出學生信息
void output()
{
int i,j;

//列印表頭
printf("學號\t姓名\t");
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d\t",j+1);
}
printf("總分\t平均分\n");

//列印所有學生信息
for(i=0;i<STU_NUM;i++)
{
printf("%s\t%s\t",stu[i].num,stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("%3.2f\t",stu[i].score[j]);
}
printf("%3.2f\t%3.2f\n",stu[i].total,stu[i].average);
}
}

//計算總分和平均分
void process()
{
int i,j;

for(i=0;i<STU_NUM;i++)
{
stu[i].total=0;
for(j=0;j<SCORE_NUM;j++)
{
stu[i].total+=stu[i].score[j];
}
stu[i].average=stu[i].total/SCORE_NUM;
}
}

//排序並輸出
void sort()
{
Student tStu;
int i,j;

for(i=0;i<STU_NUM;i++)
{
for(j=STU_NUM-1;j>i;j--)
{
if(stu[j].total>stu[j-1].total)
{
tStu=stu[j];
stu[j]=stu[i];
stu[i]=tStu;
}
}
}
}

void main()
{
input();
process();
sort();
output();
}
經供參考,具體自己調試。

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919