c编程实现查看学生成绩
❶ 用C语言编程实现一个简单的学生成绩管理系统
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<memory.h>
typedefstructstudent
{
charnum[16];
charname[20];
floatscore[4];
structstudent*next;
}stu;
stu*head; //链头指针
stu*create() //创建链表,从文件读取信息
{
printf("Readingstudentinformation: ");
stu*p=NULL; //指针,指向个待插入的结点
stu*q=NULL; //指针,用于在其后插入结点
head=NULL; //一开始链表为空
FILE*r=fopen("input.dat","r");
p=(stu*)malloc(sizeof(stu));
while(fscanf(r,"%s%s%f%f%f",p->num,p->name,&p->score[0],&p->score[1],&p->score[2])!=EOF)
{
p->score[3]=(p->score[0]+p->score[1]+p->score[2])/3.0;
fprintf(stdout,"%s %s %g %g %g %.2f ",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
p->next=NULL;
if(head==NULL) //head为空,要插入第一个
{
head=p;
} //结点,让头指针指向结点p
else
{ //否则不是头结点,应将p结点
q->next=p; //插入到q结点的后面
}
q=p; //q指向当前最后一个结点
p=(stu*)malloc(sizeof(stu));
}
fclose(r);
if(head!=NULL)
{
q->next=NULL; //让q所指的最后一个结点的指针域为空说明这已是链尾了
}
returnhead; //返回头指针
}
voidsort(stu**head,intn)
{
FILE*w=NULL;
if(n==0)
{
w=fopen("sortByMath.dat","w");
}
elseif(n==1)
{
w=fopen("sortByEnglish.dat","w");
}
elseif(n==2)
{
w=fopen("sortByComputer.dat","w");
}
elseif(n==3)
{
w=fopen("sortByAvg.dat","w");
}
stu*q,*t,*p;
stu*new_head=newstu;
new_head->next=*head;
p=new_head;
t=NULL;
while(t!=new_head->next)
{
p=new_head;
q=p->next;
while(q->next!=t)
{
if((p->next->score[n])<(q->next->score[n]))
{
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
}
p=p->next;
q=p->next;
}
t=q;
}
*head=new_head->next;
p=*head;
q=p->next;
printf("学号 姓名 数学 英语 计算机 平均成绩 ");
intgrade=1;
while(p!=NULL)
{
fprintf(w,"%s %s %g %g %g %.2f %d ",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],grade);
fprintf(stdout,"%s %s %g %g %g %.2f %d ",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],grade);
if(q!=NULL&&q->score[3]<p->score[3])grade+=1;
p=p->next;
if(q!=NULL)q=q->next;
}
printf(" ");
fclose(w);
}
voidcount(stu*head)
{
floatcnt[4][8];
inti,j;
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
if(j!=2)cnt[i][j]=0;
elsecnt[i][j]=100;
}
}
stu*r=head;
while(r!=NULL)
{
r=r->next;
}
}
intmain()
{
head=create();
printf("Sortingbyaveragescore: ");
sort(&head,3);
system("pause");
return0;
}
❷ 用C语言编程实现一个简单的学生成绩管理系统
#include<stdio.h>#include<string.h>typedefstructstudent{charname[20]; /*姓名*/intcode; /*学号*/intkor,eng,math; /*3门课程的成绩*/}STUDENT;/*返回输入数据*/STUDENTInput();/*输出所有输入的数据*/voidOutput(STUDENTinfo[],intcnt);/*将输入分数转换为A-F*/chargrade(intscore);intmain(){STUDENTS[10];intcnt=0,select;inti,j;intcode;while(1){printf(" 学生信息管理系统 ");printf(" 1 添加 ");printf(" 2 删除 ");printf(" 3 查询 ");printf(" 0 结束 ");printf(" 您的选择[0-3]:");scanf("%d",&select);if(select<0||select>3)continue;if(select==0){printf("退出系统! ");break;}if(select==1) /*添加*/{S[cnt++]=Input();}elseif(select==2) /*删除*/{printf(" 待删除学生的学号:");scanf("%d",&code);for(i=0;i<cnt;i++)if(S[i].code==code)break;if(i>=cnt){printf("学号不存在,删除失败! ");}else{for(j=i+1;j<cnt;j++){strcpy(S[j-1].name,S[j].name);S[j-1].code=S[j].code;S[j-1].kor=S[j].kor;S[j-1].eng=S[j].eng;S[j-1].math=S[j].math;}cnt--;printf("删除成功! ");}}else /*查询*/{printf(" 待查找学生的学号:");scanf("%d",&code);for(i=0;i<cnt;i++)if(S[i].code==code)break;if(i>=cnt){printf("学号不存在,查找失败! ");}else{printf(" 查询结果: ");Output(S,i);}}}return0;}/*返回输入数据*/STUDENTInput(){STUDENTstu;printf(" 新学生信息 ");printf(" 学号:");scanf("%d",&stu.code);printf(" 姓名:");getchar();gets(stu.name);printf(" 3门课程成绩(以空格分隔):");scanf("%d%d%d",&stu.kor,&stu.eng,&stu.math);returnstu;}/*输出所有输入的数据*/voidOutput(STUDENTinfo[],intcnt){printf("学号:%d ",info[cnt].code);printf("姓名:");puts(info[cnt].name);printf("成绩:%c%c%c ",grade(info[cnt].kor),grade(info[cnt].eng),grade(info[cnt].math));}/*将输入分数转换为A-F*/chargrade(intscore){if(score<0||score>100)return'F';if(score>=90)return'A';if(score>=80)return'B';if(score>=70)return'C';if(score>=60)return'D';elsereturn'E';}
运行测试:
❸ 用C语言编程实现学生成绩管理程序,要求可以根据选择实现以下功能:(90分) 1、输入5个学生的姓名
//仅作参考
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
#include"string.h"
intstudentNum=0;
#defineMAXSTUDENT(1024)
#defineCheckData()
{
if(!studentNum)
{
printf("没有学生数据,按任意键返回…… ");
getch();
return;
}
}
typedefstructStudent
{
intid;
intcScore;
intmathScore;
}Student;
voidClearStudent(Student*student)
{
memset((void*)student,0,sizeof(*student));
}
voidShowMainMenu()
{
system("cls");
printf("1.增加记录 2.计算每个学生的总成绩 3.计算每门课程的平均成绩 4.按座号查询学生的成绩 5.按总分排名 6.输出前n名的学生的成绩 7.修改成绩 0.退出 ");
}
voidShowCountScore(constStudent*student)
{
system("cls");
CheckData();
for(inti=0;i<studentNum;i++)
printf("学生%04d的总成绩:%d ",(student+i)->id,(student+i)->cScore+(student+i)->mathScore);
printf(" 按任意键继续……");
getch();
}
voidShowClassAvg(constStudent*student)
{
system("cls");
CheckData();
doublesumc=0;
doublesummath=0;
for(inti=0;i<studentNum;i++)
{
sumc+=(student+i)->cScore;
summath+=(student+i)->mathScore;
}
printf("C语言平均成绩为:%lf ",sumc/studentNum);
printf("数学平均成绩为:%lf ",summath/studentNum);
printf(" 按任意键继续……");
getch();
}
voidAddStudent(Student*student)
{
system("cls");
if(studentNum==MAXSTUDENT)
{
printf("人数已满,按任意键返回…… ");
getch();
}
printf("分别录入座号、C语言成绩、数学成绩: ");
intid=0;
intcScore=0;
intmathScore=0;
scanf("%d%d%d",&id,&cScore,&mathScore);
for(inti=0;i<studentNum;i++)
if((student+i)->id==id)
{
printf("座号重复,按任意键返回…… ");
getch();
return;
}
(student+studentNum)->id=id;
(student+studentNum)->cScore=cScore;
(student+studentNum)->mathScore=mathScore;
studentNum++;
}
voidSelectFromID(constStudent*student)
{
system("cls");
CheckData();
printf("输入查询ID: ");
intid=0;
scanf("%d",&id);
printf("查询结果: ");
for(inti=0;i<studentNum;i++)
if(id==(student+i)->id)
{
printf("C语言成绩为:%d 数学成绩为:%d ",(student+i)->cScore,(student+i)->mathScore);
break;
}
printf(" 按任意键继续……");
getch();
}
voidSortForCount(Student*student)
{
system("cls");
CheckData();
for(inti=0;i<studentNum;i++)
{
for(intj=studentNum-1;j>i;j--)
if(((student+j)->cScore+(student+j)->mathScore)>((student+j-1)->cScore+(student+j-1)->mathScore))
{
Studentstu;
stu=*(student+j);
*(student+j)=*(student+j-1);
*(student+j-1)=stu;
}
}
}
voidSortForN(Student*student,intn)
{
SortForCount(student);
if(!studentNum)
return;
n=n>studentNum?studentNum:n;
for(inti=0;i<n;i++)
printf("第%d名: ID:%d C语言成绩为:%d 数学成绩为:%d 总分为:%d ",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf(" 按任意键继续……");
getch();
}
voidUpdateScore(Student*student)
{
system("cls");
CheckData();
printf("输入修改ID: ");
intid=0;
scanf("%d",&id);
inti=0;
for(;i<studentNum;i++)
if(id==(student+i)->id)
break;
if(i==studentNum)
printf(" 查无此人,按任意键继续……");
else
{
printf("输入欲修改的C语言成绩、数学成绩: ");
intcScore=0;
intmathScore=0;
scanf("%d%d",&cScore,&mathScore);
(student+i)->cScore=cScore;
(student+i)->mathScore=mathScore;
printf(" 按任意键继续……");
}
getch();
}
voidRunStudent(Student*student)
{
while(1)
{
ShowMainMenu();
charchGet=getch();
switch(chGet)
{
case'1':
AddStudent(student);
break;
case'2':
ShowCountScore(student);
break;
case'3':
ShowClassAvg(student);
break;
case'4':
SelectFromID(student);
break;
case'5':
SortForCount(student);
for(inti=0;i<studentNum;i++)
printf("第%d名: ID:%d C语言成绩为:%d 数学成绩为:%d 总分为:%d ",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf(" 按任意键继续……");
getch();
break;
case'6':
{
intn=0;
printf("输入N: ");
scanf("%d",&n);
SortForN(student,n);
}
break;
case'7':
UpdateScore(student);
break;
case'0':
return;
default:
break;
}
}
}
intmain()
{
Student*allStudent=(Student*)malloc(MAXSTUDENT*sizeof(Student));
memset((void*)allStudent,0,MAXSTUDENT*sizeof(Student));
RunStudent(allStudent);
return0;
}
❹ 编程C语言 输入n个学生成绩,计算他们的平均值并输出所有高于平均的学生成绩。 求解 !!
1 指针来
#include<stdio.h>
#define N 10
main()
{int i,num=0,max=0;float s=0,v,score[N],*p;
for(p=score,i=0;i<N;i++)
{scanf("%f",p+i);
if(*(p+i)>=score[max])
max=i;
s+=*(p+i);
}
v=s/N;
for(p=score,i=0;i<N;i++)
if(*(p+i)>v)
num++;
printf("average=%.1f,num=%d,%.1f\n",v,num,score[max]);
}
2.
#include<stdio.h>
#define N 10
main()
{int i,max=0,g=0,s=0,a[N];double v;
for(i=0;i<N;i++)
{scanf("%d",a+i);s=s+a[i];if(a[i]>=a[max])max=i;}
v=s/N;
for(i=1;i<=N;i++)
if(a[i]>v)
g++;
printf("大于自平均成绩%.2lf有%d人其中最高分%d",v,g,a[max]);
}
❺ 用C语言编程实现学生基本信息管理系统
以前做过的类似的一个你拿去看看改改
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineBUFSIZE1024
#defineWORDSIZE32
#defineDESTSIZE512
#defineNR26
structnode_st{
structnode_st*arr[NR];
char*str;
};
staticintpos_hash(charch)
{
returnch-'a';
}
staticintread_file(FILE*fp,char*word,char*dest)
{
charbuf[BUFSIZE]={};
if(fgets(buf,BUFSIZE,fp)==NULL)
return-1;
buf[strlen(buf)-1]=0;
sscanf(buf,"%s%s",word,dest);
return0;
}
staticvoidtree_insert(structnode_st**root,constchar*word,constchar*dest)
{
structnode_st*new;
inti;
if(*root==NULL){
new=malloc(sizeof(*new));
//iferror
for(i=0;i<NR;i++)
(new->arr)[i]=NULL;
new->str=NULL;
*root=new;
}
if(*word=='