C语言结构体题目,我哪里错了
/* Note:Your choice is C IDE */
#include "stdio.h"
int math();
struct student
{
char name[10];
int
num;
int
score[3];
}s[10];
int math()
{
int k[10],i,*p=k,*q,b;
//这里的*q每必要声明指针吧。。
for(i=0;i<10;i++)
{
k[i]=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3;
if(k[i]>*p)
{p=&k[i];q=&i;}
}
b=(k[0]+k[1]+k[2]+k[3]+k[4]+k[5]+k[6]+k[7]+k[8]+k[9])/10;
printf("三门课总平均分:%d",b);
printf("最高分学生信息:%s
%d
%d
%d",s[*q].name,s[*q].num,s[*q].score[0],s[*q].score[1],s[*q].score[2]);
//首先这里少了个%d...
return 0;
}
void main()
{
int i;
for(i=0;i<10;i++)
scanf("%s,%d,%d,%d,%d",s[i].name,&s[i].num,&s[i].score[0],&s[i].score[1],&s[i].score[2]);
//其次这里的,不要。当然输入时也不然加 , 。。看看运行是不是你要的。。
math();
getch();
//这里stdio.h好像不包含。改getchar()
}
复制的程序如下。看看是不是你要的:
#include "stdio.h"
int math();
struct student
{
char name[10];
int
num;
int
score[3];
//其实这里最好用float类型,这样用 / 等不会截止 后面的小数点了。更精确点
}s[10];
int math()
{
int k[10],i,*p=k,q,b;
for(i=0;i<10;i++)
{
k[i]=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3;
if(k[i]>*p)
{p=&k[i];q=i;}
}
b=(k[0]+k[1]+k[2]+k[3]+k[4]+k[5]+k[6]+k[7]+k[8]+k[9])/10;
printf("三门课总平均分:%d",b);
printf("最高分学生信息:%s
%d
%d
%d
%d",s[q].name,s[q].num,s[q].score[0],s[q].score[1],s[q].score[2]);
return 0;
}
int main(void)
{
int i;
for(i=0;i<10;i++)
scanf("%s%d%d%d%d",s[i].name,&s[i].num,&s[i].score[0],&s[i].score[1],&s[i].score[2]);
math();
getchar();
}
[
本帖最后由 燕强 于 2010-8-17 15:29 编辑 ]