RT,实验报告上的一题我纠结了一天了
我是这样写的
sub1.c
#include <stdio.h>
int i,j,k,m,n,s,t,f=1,avg;
int a[5][5],b[5];
int e=1;
char c[5];
extern void sort(),average();
void main()
{ printf("输入选手姓名:");
for (k=0;k<5;k++)
scanf ("%s",&c[k]);
for (i=0;i<5;i++)
{
printf("输入第%d位选手的成绩,(用逗号隔开)",e);
scanf("%d,%d,%d,%d,%d",&a[0],&a[1],&a[2],&a[3],&a[4]);
e++;
}
average();
sort();
printf("Name Ref1 Ref2 Ref3 Ref4 Ref5 Average 排名\n");
for (i=0;i<5;i++,f++)
printf("%4c %4d %4d %4d %4d %4d %4d %4d\n",c,a[0],a[1],a[2],a[3],a[4],b,f);
}
sub2.c
extern void average()
{int b[5];
int i,j,k,m,n,s,t,avg;
extern int a[5][5];
for (i=0;i<5;i++)
{
for (m=0;m<4;m++)
for(j=0;j<4-m;j++)
if (a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
b=(a[1]+a[2]+a[3])/3;
}
}
sub3.c
extern void sort()
{int i,j;
int b[5];
char c[5];
int t=0;
char s=0;
for (j=0;j<4;j++)
for(i=0;i<4-j;i++)
if(b>b[i+1])
{
t=b;b=b[i+1];b[i+1]=t;
s=c;c=c[i+1];c[i+1]=s;
}
}
我运行的时候发现不管怎样,算出的平均值都是0,我觉得可能是sub1.c里算出的数组a[5][5]的值没有带进sub2.c,同样,sub2.c算出的数组b[5]也没有带进sub3.c里面
这该怎么改?还有再输入“选手姓名”的时候应该是输入字符串,但是我的方法太麻烦了,我现在还是用a,b,c,d代替书上的人名,不知道谁知道简单的方法,帮我改一下,
题目是这样的,参加我校大学生英语演讲比赛决赛阶段的同学有N位,决赛中共有M位评委,假设所有选手的成绩存放在一个二维数组中,根据平分规则计算每位选手的平均分,并按成绩的逆序打印(评分规则:去掉一个最高分和最低分对剩下的分数求平均值)假设N=4,M=5,要求有以下两个函数:A:求平均分的函数 B:排序函数(排序时注意分数和姓名的对应关系,名字可以使用拼音)
我是把主程序,平均值函数,排序函数分开写的,然后加在一个工程里面
额...看半天还是不懂...我们还没学这东东
追答那好吧,我就在你原程序上修改下,你程序里错误很多哦,我给你精简了很多,整理成下面的代码,已经运行成功了,你可以试一试,有问题再问我。
#include
#include
int i,j,k,t;
char s[15];
int a[5][5],b[5];
char c[5][15];
extern void sort(),average();
void main()
{ printf("输入选手姓名:");
for (k=0;ka[i][j+1])
{
t=a[i][j];
a[i][j]=a[i][j+1];
a[i][j+1]=t;
}
b[i]=(a[i][1]+a[i][2]+a[i][3])/3;
}
}
extern void sort()
{
for (j=1;jb[i+1])
{
t=b[i];
b[i]=b[i+1];
b[i+1]=t;
strcpy(s,c[i]);
strcpy(c[i],c[i+1]);
strcpy(c[i+1],s);
}
}
这不知道是怎么回事,我的程序里都是 b[i]或者b[5]不知道怎么复制的时候出错了
追答汗~~~b[5]是不能引用的,会使数组越界的。。肯定也报错。。
追问不知道怎么回事,复制上来[i]全都不见了
不好意思,第一次在网上求救
追答暂时没看出来是哪里的问题
我是个初学者,写程序经常会犯啰嗦的毛病,请多多包涵
追答你把你每个题目的目的。。做什么的都标出来。这样大家也好看。也好分析