新手 发现个问题 死活看不出来 急死了
c语言吧
全部回复
仅看楼主
level 11
左手soul 楼主
#include<stdio.h>
#include<string.h>
struct data
{
long int num;
char name[10];
char sub[10][10];
int subsco[10];
}student[10];
double ave(int *a,int n)
{
int i;
double _ave=0;
for(i=0;i<n;i++)_ave=_ave+(double)(*(a+i))/n;
return _ave;
}
int max(int *a,int n)
{
int i,_max;
for(i=0;i<n;i++)
{
if(a[i]>a[i+1])_max=a[i];
else _max=a[i+1];
}
return _max;
}
int min(int *a,int n)
{
int i,_min;
for(i=0;i<n;i++)_min=(*(a+i))<(*(a+i+1))?(*(a+i)):(*(a+i+1));;
return _min;
}
void main()
{
int i,j,m,n,_max=0,_min=0,a[10][10],b[10];
double _ave;
char c;
for(i=0;i<10;i++)
{
printf("Please enter the data of student %d:\n",i);
printf("student number:");
scanf("%d",&student[i].num);
printf("student name:");
getchar();
gets(student[i].name);
for(j=0;j<10;j++)
{
printf("subject:");
if(j!=0)getchar();
gets(student[i].sub[j]);
printf("The scores of it is:");
scanf("%2d",&student[i].subsco[j]);
printf("\nIs there any other subject?(Please enter Y/N)");
getchar();
c=getchar();
if(c!='Y'&&c!='y')break;
}
printf("The average scores of student %d is:%5.2f",i,ave(student[i].subsco,j+1));
printf("\nAdd more students?(Please enter Y/N)\n");
getchar();
c=getchar();
if(c!='Y'&&c!='y')break;
}
{
n=i+1;
m=j+1;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
a[j][i]=student[i].subsco[j];
}
printf("\nThe average scores of each subject:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)b[j]=a[i][j];
_ave=ave(b,n);
printf("subject:%s\taverage scores:%5.2f\n",student[0].sub[i],_ave);
}
printf("\nThe max scores of each subject:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)b[j]=a[i][j];
_max=max(b,n);
printf("subject:%s\tmax scores:%2d\n",student[0].sub[i],_max);
}
printf("\nThe min scores of each subject:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)b[j]=a[i][j];
_min=min(b,n);
printf("subject:%s\tmin scores:%2d\n",student[0].sub[i],_min);
}
}
}
最后的最大值最小值函数老不对,求大神帮助
2013年11月24日 11点11分 1
level 13
int max(int *a,int n)
{
int i,_max;
for(i=0;i<n;i++)
{
if(a[i]>a[i+1])_max=a[i];
else _max=a[i+1];
}
return _max;
}
数组a用3,2,1试一下就知道函数写错了
2013年11月25日 04点11分 2
@- 哪儿的问题?请明示啊
2013年11月25日 04点11分
回复 左手soul :说的这么明白了, 兰州不能自己去试试,[喷]
2013年11月25日 04点11分
@- 我中午睡觉时候弄懂了 ,貌似是一个低级错误,多谢费心
2013年11月25日 07点11分
level 11
太长不看[滑稽]
2013年11月25日 04点11分 3
正解
2013年11月25日 12点11分
2013年11月25日 13点11分
level 4
二楼已经说很清楚了,你代入3,2,1。循环一次a[0]是3大于a[1]的2。第二次a[1]大于a[1+1]就是2大于1。然后2就是最大了。
2013年11月25日 04点11分 4
@此生必定无憾 我弄明白了,多谢费心
2013年11月25日 07点11分
level 11
明白了,那我混点经验
   --→_→我带你走吧,地球已经不需要你了。
2013年11月25日 08点11分 5
@我叫雷峰雷锋 经验都浮云的
2013年11月25日 10点11分
level 9
留名 如果有一天我变成了大水比,请告诉贴吧的朋友们,我也曾单纯过 ,也曾认认真真的回复过。
2013年11月25日 13点11分 6
1