C语言的一段代码 帮忙看看哪里除了问题,代码稍微长一点,但是很简单,帮忙看一下,谢谢
有n个结构体变量,内涵学生学号、姓名和3门课程门票的成绩。要求输出平均成绩最高的学生信息(包括学号、姓名、3门课程成绩和平均成绩)。#include<stdio.h>vo...
有n个结构体变量,内涵学生学号、姓名和3门课程门票的成绩。要求输出平均成绩最高的学生信息(包括学号、姓名、3门课程成绩和平均成绩)。
#include<stdio.h>
void max(struct student stu[],int n);
struct student
{
int num;
char name[5];
float grade[3];
}stu[3];
int main()
{
int i,j,n=3;
for(i=0;i<3;i++)
{printf("请输入第[%d]位学生的信息:\n",i+1);
scanf("%d%s",&stu[i].num,stu[i].name);
for(j=0;j<3;j++)
{printf("请输入第%d位学生第%d门成绩:\n",i+1,j+1);
scanf("%f",&stu[i].grade[j]);
}
}
max(stu,n);
}
void max(struct student stu[],int n)
{
int i,max=0;
float s,a[3];
struct student *p;
p=stu;
for(p=stu,i=0;p<stu+3;p++,i++)
{for(i=0;i<3;i++)
s=s+(*p).grade[i];
a[i]=s/n;
}
for(i=1;i<3;i++)
if(a[max]<a[i])
max=i;
p=stu;
printf("%d,%s,",(p+max)->num,(p+max)->name);
for(i=0;i<3;i++)
{p=stu;
printf("%d",(p+max)->grade[i]);
}
} 展开
#include<stdio.h>
void max(struct student stu[],int n);
struct student
{
int num;
char name[5];
float grade[3];
}stu[3];
int main()
{
int i,j,n=3;
for(i=0;i<3;i++)
{printf("请输入第[%d]位学生的信息:\n",i+1);
scanf("%d%s",&stu[i].num,stu[i].name);
for(j=0;j<3;j++)
{printf("请输入第%d位学生第%d门成绩:\n",i+1,j+1);
scanf("%f",&stu[i].grade[j]);
}
}
max(stu,n);
}
void max(struct student stu[],int n)
{
int i,max=0;
float s,a[3];
struct student *p;
p=stu;
for(p=stu,i=0;p<stu+3;p++,i++)
{for(i=0;i<3;i++)
s=s+(*p).grade[i];
a[i]=s/n;
}
for(i=1;i<3;i++)
if(a[max]<a[i])
max=i;
p=stu;
printf("%d,%s,",(p+max)->num,(p+max)->name);
for(i=0;i<3;i++)
{p=stu;
printf("%d",(p+max)->grade[i]);
}
} 展开
展开全部
#include<stdio.h>
void max(struct student stu[],int n);
struct student{
int num;
char name[5];
float grade[3];
}stu[3];
int main()
{
int i,j,n=3;
for(i=0;i<3;i++)
{
printf("请输入第[%d]位学生的信息:\n",i+1);
scanf("%d%s",&stu[i].num,&stu[i].name);
for(j=0;j<3;j++)
{
printf("请输入第%d位学生第%d门成绩:\n",i+1,j+1);
scanf("%f",&stu[i].grade[j]);
}
}
max(stu,n);
}
void max(struct student stu[],int n)
{
int i,j,max=0;
float s,a[3];
struct student *p;
p=stu;
for(p=stu,i=0;i<3;p++,i++)
{
s=0;
for(j=0;j<3;j++)
s=s+(*p).grade[j];
a[i]=s/n;
}
for(i=1;i<3;i++)
if(a[max]<a[i])
max=i;
p=stu;
printf("%-10d%-10s",(p+max)->num,(p+max)->name);
for(i=0;i<3;i++)
{
printf("%-10.2f",(p+max)->grade[i]);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void max(struct student stu[],int n)
{ int i,max=0;
float s,a[3];
struct student *p;
p=stu;
for(p=stu,i=0;p<stu+3;p++,i++) /*i++没有意义,错误1*/
{for(i=0;i<3;i++) s=s+(*p).grade[i]; /*s没有赋初值0,错误2*/
a[i]=s/n; /*i的变化没有考虑清楚,i始终是3,错误3*/
}
for(i=1;i<3;i++)
if(a[max]<a[i])
max=i;
p=stu;
printf("%d,%s,",(p+max)->num,(p+max)->name);
for(i=0;i<3;i++)
{p=stu;
printf("%d",(p+max)->grade[i]);
}
}
{ int i,max=0;
float s,a[3];
struct student *p;
p=stu;
for(p=stu,i=0;p<stu+3;p++,i++) /*i++没有意义,错误1*/
{for(i=0;i<3;i++) s=s+(*p).grade[i]; /*s没有赋初值0,错误2*/
a[i]=s/n; /*i的变化没有考虑清楚,i始终是3,错误3*/
}
for(i=1;i<3;i++)
if(a[max]<a[i])
max=i;
p=stu;
printf("%d,%s,",(p+max)->num,(p+max)->name);
for(i=0;i<3;i++)
{p=stu;
printf("%d",(p+max)->grade[i]);
}
}
追问
void max(struct student stu[],int n)
{
int i,j,max=0;
float s=0,a[3];
struct student *p;
p=stu;
for(p=stu,j=0;p<stu+3;p++,j++)
{for(i=0;i<3;i++)
s=s+(*p).grade[i];
a[j]=s/n;
}
改成这样得出的结果还是不对呢
追答
void max(struct student stu[],int n)
{
int i,j,max=0;
float s=0,a[3];
struct student *p;
p=stu;
for(p=stu,j=0;p<stu+3;p++,j++)
{
/*这边每次都要将s赋值0,即s=0*/
for(i=0;i<3;i++)
s=s+(*p).grade[i];
a[j]=s/n;
}
/*还有你最后的输出,记住你的grade是float型,要用%f*/
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-04
展开全部
max里面S没有赋初值
追问
赋值了 也给把a[i]的i变量换成用j来循环 还是出错 无语
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询