所编写程序的问题:
某班级12名学生分为3组,每组4名同学。按要求完成任务:
- 随机产生全部同学的成绩60~100
- 计算每组同学的平均成绩并输出
- 计算全班的平均成绩并输出
- 对每组同学成绩进行排序并输出
- 对全班成绩进行排序井输出
代码
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#define Y 3
#define X 4
void out(int a[Y][X])
{
int i,j;
for(i=0;i<Y;i++)
{
for(j=0;j<X;j++)
printf("%d",a[i][j]);
printf("\n");
}
}
double ave(int *a,int n)
{
int i,j;
double sum;
sum=0;
for(i=0;i<n;i++)
sum+=a[i];
return sum/n;
}
void BubbleSort(int a[],int n,int flag)
{
int i,j,t;
for(j=n-1;j>0;j--)
{
for(i=0;i<j;i++)
{
if(a[i]>a[i+1]&&flag||a[i]<a[i+1]&&!flag)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
}
int main()
{
int a[Y][X];
srand((unsigned)time(NULL));
int i,j;
for(i=0;i<Y;i++)
{
for(j=0;j<X;j++)
a[i][j]=rand()%41+60;
}
out(a);
for(i=0;i<Y;i++)
{
printf("第%d组的平均成绩:%lf\n",i+1,ave(a[i],X));
}
printf("全班的平均成绩:%lf\n",ave(a,Y*X));
for(i=0;i<Y;i++)
{
BubbleSort(a[i],X,0);
}
printf("各组的成绩排序为:\n");
out(a);
BubbleSort(a,Y*X,0);
printf("全班的成绩排序为:\n");
out(a);
return 0;
}
我所遇到的问题:
1,为什么define Y,X后要加3,4?且只用Y,X就能表示组和名吗?
2,第一个函数out的逻辑语言是什么?
3,为什么double ave(int a,int n)的a前要加,否则就会出现subscripted value is neither array nor pointer nor vector的字样?且为什么是return sum/n?
4,为什么字符i可以和数组Y进行比较?
5,第53行为什么rand()后要加%41+60?
6,为什么第58行调用ave的参数是(a[i],X)?第60行的参数又是(a,YX)?“”又有什么意义吗?
7,在输出结果后,又如何在各成绩之间加空格便于观看?