读书人

帮小弟我看看如何改多谢

发布时间: 2013-07-04 11:45:32 作者: rapoo

帮我看看怎么改,,,,,谢谢
#include<stdio.h>
#include<stdlib.h>
#define N 6
#define M 5
void sum(float (*p)[N],float sum1[])
{
int i,j,k;
float t;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
if(*(*(p+i)+j)>*(*(p+i)+j+1))
{
t=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+i)+j+1);
*(*(p+i)+j+1)=t;
}
sum1[i]=0;
for(k=1;k<M-1;k++)
sum1[i]+=*(*(p+i)+k);
}
for(i=0;i<N;i++)
if(sum1[i]<sum[i+1])
{
t=sum1[i];
sum1[i]=sum1[i+1];
sum1[i+1]=t;
}
}
int main()
{
float (*p)[N],sumsore[N];
int i,j;
printf("请输入%d个选手的成绩:",N);
p=(float (*)[N])calloc(M,sizeof(float));
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%f",*(p+i)+j);
sum(p,sumsore);
for(i=1;i<=N;i++)
{
if(i%5==0)
printf("\n");
printf("%5.2f",sumsore[i-1]);
}
printf("\n");
printf("第一名:%5.2f",sumsore[0]);
printf("\n");
printf("第二名:%5.2f,%5.2f",sumsore[1],sumsore[2]);
printf("\n");
printf("第三名:%5.2f,%5.2f,%5.2f",sumsore[3],sumsore[4],sumsore[5]);
printf("\n");
return 0;
}


错误提示:
-------------------Configuration: 1qq - Win32 Debug--------------------
Compiling...
1qq.cpp
J:\c语言设计代码\qqqqqq\1qq.cpp(23) : error C2109: subscript requires array or pointer type
J:\c语言设计代码\qqqqqq\1qq.cpp(23) : error C2446: '<' : no conversion from 'void (__cdecl *)(float (*)[6],float [])' to 'float'
There is no context in which this conversion is possible
J:\c语言设计代码\qqqqqq\1qq.cpp(23) : error C2115: '<' : incompatible types
执行 cl.exe 时出错.

1qq.obj - 1 error(s), 0 warning(s)

[解决办法]
if(sum1[i]<sum[i+1])
这里的 sum[i+1] 是什么? sum 是个函数, 如果想递归调用它, 用 () 而不是 []

读书人网 >C语言

热点推荐