关于函数的调用,程序出错
本题这样的:某班有5个学生,考了三门课。求每个学生的总成绩和平均成绩,并按成绩由高到低排序。程序错误在于 指针转换后指向其它类型在 sort 函数中
#include "Stdio.h"
#include "string.h"
char st[6][15];
float cj[6][4];
float tacj[6][3]; /* tacj[i][1]为总成绩 tacj[i][2]为平均成绩*/
main()
{ void input();
void count();
void sort();
void output();
input();
count();
sort();
output();
getch();
}
void input( )
{
int i,j;
for(i=1;i<6;i++)
{
printf("input the %dth name and score:\n",i);
scanf("%s",st[i]);
for(j=1;j<4;j++)
scanf("%f",&cj[i][j]);
}
}
void count()
{ int i,j;
for(i=1;i<6;i++)
{ tacj[i][1]=0;
for(j=1;i<4;j++)
{ tacj[i][1]+=cj[i][j];
tacj[i][2]=tacj[i][1]/3;
}
}
}
void sort()
{ int flag;
int i,j;
char ts[15];
float t;
do
{
flag=0;
for(i=1;i<6;i++)
if(tacj[i+1][1]>tacj[i][1])
{
strcpy(ts,st[i]);strcpy(st[i],st[i+1]);strcpy(st[i+1],st); /*交换姓名*/
for(j=1;j<4;j++) /*交换8门课程*/
{
t=cj[i][j];cj[i][j]=cj[i+1][j];cj[i+1][j]=t;
}
t=tacj[i][1];tacj[i][1]=tacj[i+1][1];tacj[i+1][1]=t; /*交换总成绩*/
t=tacj[i][2];tacj[i][2]=tacj[i+1][2];tacj[i+1][2]=t; /*交换平均成绩*/
flag=1;
}
}while(flag);
}
void output()
{ int i,j;
printf("the students' scores show as fellow:\n");
printf("name calss1 calss2 calss3 sum average order\n");
for(i=1;i<6;i++)
{ printf("%8s",st[i]);
for(j=1;j<4;j++)
printf("%7.2f",cj[i][j]);
printf("%7.2f,%7.2f,%5d",tacj[i][1],tacj[i][2],i);
printf("\n");
}
}