c新手吧 关注:8,577贴子:48,081
  • 2回复贴,共1

小型的成绩管理代码,max就出错了,实在看不出来什么情况,求

只看楼主收藏回复

小型的成绩管理代码,max就出错了,实在看不出来什么情况,求大神看看可以吗*
代码段如下:
#include <stdio.h>
#include <conio.h>
#define N 35
// statement of five submodule
void input(int score[],int n);
void output(int score[],int n);
void sort(int score[],int n);
int max(int score[],int n);
float average(int score[],int n);
void stat(int score[],int n);
void main()
{
int n;
int score[N],choice;
printf("number of students=");
scanf("%d",&n);
input(score,n);
do
{
printf(" 1.max \n");
printf(" 2.average \n");
printf(" 3.sort \n");
printf(" 4.statistic analysis \n");
printf(" 0.exit \n");
printf(" your choice is (0-4):");
scanf("%d",&choice);
switch(choice)
{
case 0: printf("----exit!!----");break;
case 1: printf("----max=%d----\n",max(score,n));break;
case 2: printf("----average=%4.2f----\n",average(score,n));break;
case 3: sort(score,n);
printf("sorted:");
output(score,n);
break;
case 4: stat(score,n);break;
default: printf("----error choice, try again ----\n");
}
}while(choice!=0);
}
//store n values in a one-dimensional array
void input(int score[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d:",i+1);
scanf("%d",&score[n]);
}
}
//output every elements of the one-dimensional array
void output(int score[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%5d",score[i]);
}
printf("\n");
}
//sequence elements of the one-dimensional array from big to small
void sort(int score[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(score[j]<score[j+1])
{
t=score[j];
score[j]=score[j+1];
score[j+1]=t;
}
}
//return the maximum of the one-dimensional array
int max(int score[],int n)
{
int i,m=score[0];
for(i=1;i<n;i++)
if(m<score[i])
{
m=score[i];
}
return m;
}
//return the average of the one-dimensional array
float average(int score[],int n)
{
int i,sum=0;
for(i=0;i<n;i++)
sum+=score[i];
return (float)sum/n;
}
//display the percentage of statistic numbers of each class
void stat(int score[],int n)
{
int i;
int A,B,C,D;
A=B=C=D=0;
for(i=0;i<n;i++)
{
if(score[i]>=85)
A++;
else if(score[i]>=70)
B++;
else if(score[i]>=60)
C++;
else
D++;
}
printf(" Class: A(>=85) B(>=70) C(>=60) D(<60)\n");
printf("-------------------------------------------------------\n");
printf(" People: %2d %2d %2d %2d\n",A,B,C,D);
printf(" percentage: %4.14f%% %4.14f%% %4.14f%% %4.14f%%\n",(float)A/n*100,(float)B/n*100,(float)C/n*100,(float)D/n*100);
}


1楼2017-11-26 16:19回复
    input()中输入函数取地址出问题了,应为&score[i]


    IP属地:安徽来自Android客户端2楼2017-11-28 13:06
    收起回复