学生成绩管理系统(小白快要炸了)
#include <stdio.h>#include <stdlib.h>
#define N 30
int Menu(void);
void ReadScore(long num[],float score[],int n);
void Average(float score[],int n);
void PrintScore(long num[],float score[],int n);
void DataSort(float score[],int n);
void StuID(long num[],float score[],int n);
void BinSearch(long num[],float score[],int n);
void FenJi(float score[],int n);
main()
{
int n;
char op;
printf("Welcome to student achievement management system 1.0!\n");
printf("please input how many students(n<%d):",N);
scanf("%d",&n);
printf("\n");
long num;
float score;
while(1)
{
op=Menu();
switch(op)
{
case 1:
ReadScore(num,score,n);
printf("\n");
break;
case 2:
Average(score,n);
printf("\n");
break;
case 3:
DataSort(score,n);
PrintScore(num,score,n);
printf("\n");
break;
case 4:
StuID(num,score,n);
PrintScore(num,score,n);
printf("\n");
break;
case 5:
BinSearch(num,score,n);
printf("\n");
break;
case 6:
FenJi(score,n);
printf("\n");
break;
case 7:
Average(score,n);
PrintScore(num,score,n);
case 0:
printf("End of program!\n");
exit(0);
default:printf("input error!\n");
}
}
return 0;
}
int Menu(void)
{
int m;
printf("1.Input record and stuid:\n");
printf("2.Caculate total and average score of course:\n");
printf("3.Sort in descending order by score:\n");
printf("4.Sort in ascending order by number:\n");
printf("5.Search by number:\n");
printf("6.Statistic analysis:\n");
printf("7.List records:\n");
printf("0.Exit\n");
printf("\n");
printf("please enter your choice:");
scanf("%d",&m);
return m;
}
/*函数功能:录入学生学号和成绩*/
void ReadScore(long num[],float score[],int n)
{
int j;
printf("input student's ID and score:\n");
for(j=0;j<n;j++)
{
scanf("%ld %f",&num,&score);
}
}
/*函数功能:按成绩高低排出成绩表*/
void DataSort(float score[],int n)
{
int i,j;
float temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(score>score)
{
temp=score;
score=score;
score=temp;
}
}
}
}
/*函数功能:按学号由小到大排出成绩表*/
void StuID(long num[],float score[],int n)
{
int i,j;
long temp1;
float temp2;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(num<num)
{
temp1=num;
num=num;
num=temp1;
temp2=score;
score=score;
score=temp2;
}
}
}
}
/*按学号查询学生排名和成绩*/
void BinSearch(long num[],float score[],int n)
{
int i;
long j;
printf("please input the number you want to watch:");
scanf("%ld",&j);
for(i=0;i<n;i++)
{
if(num==j)
{
printf("the student's ranging and score are %d\t%f\n",j,score);
}
}
printf("Not found!\n");
}
/*函数功能:按成绩进行分级*/
void FenJi(float score[],int n)
{
int i,YX=0,LH=0,ZD=0,JG=0,BJG=0;
for(i=0;i<n;i++)
{
if(score>=90&&score<=100)
{
YX++;
}
if(score>=80&&score<90)
{
LH++;
}
if(score>=70&&score<80)
{
ZD++;
}
if(score>=60&&score<70)
{
JG++;
}
if(score>=0&&score<60)
{
BJG++;
}
}
printf("优秀(90-100)人数为%d\n",YX);
printf("优秀率为%.1d%%\n",(100*YX)/n);
printf("良好(80-89)人数为%d\n",LH);
printf("良好率为%.1d%%\n",(100*LH)/n);
printf("中等(70-79)人数为%d\n",ZD);
printf("中等率为%.1d%%\n",(100*ZD)/n);
printf("及格(60-69)人数为%d\n",JG);
printf("及格率为%.1d%%\n",(100*JG)/n);
printf("不及格(0-59)人数为%d\n",BJG);
printf("不及格率为%.1d%%\n",(100*BJG)/n);
}
/*函数功能:计算课程总分和平均分*/
void Average(float score[],int n)
{
int j;
float aver,SUM=0;
for(j=0;j<n;j++)
{
SUM+=score;
}
aver=SUM/n;
printf("%f %f\n",SUM,aver);
}
/*函数功能:输出学生的学号和成绩*/
void PrintScore(long num[],float score[],int n)
{
int j;
for(j=0;j<n;j++)
{
printf("%10ld\t%.1f\n",num,score);
}
}
这个成绩管理系统只有第六个按成绩分级能用,其它的选项都有问题(我感觉学号的录入出了问题)o(╥﹏╥)o
ps:第一次发帖,有什么弄得不好的地方还请指正! 我知道问题所在了,长整型数据上限是2147483647,而我输入的学号都比这个大,所以只是单纯的数据溢出
自己回答自己。。。。。 数据读取完了要清理一下输入流的信息
在循环最后加上getchar();
还有main函数中的scanf函数后面也加上getchar() BngThea 发表于 2017-12-21 17:29
数据读取完了要清理一下输入流的信息
在循环最后加上getchar();
还有main函数中的scanf函数后面也加上get ...
我试了一下,结果没什么变化啊 我的天,每人帮忙吗?{:10_243:}(一个不太清楚的表情) 我也是这题,很烦,不打算做了 不要放弃,加油 高手如云 龍三少 发表于 2017-12-28 08:40
不要放弃,加油
这么久没人回答,别人还看得到我这个帖子吗?
感觉像是数据溢出
页:
[1]