| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 609 人关注过本帖
标题:结构体问题,自知有很多错误,求各位帮忙找一下
取消只看楼主 加入收藏
地方黑发
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-12-6
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
结构体问题,自知有很多错误,求各位帮忙找一下
//定义10个学生的数据(包括学号、姓名、年龄、性别、语文成绩、数学成绩、英语成绩),要求:
//1.输出每个学生的三科平均成绩;
//2.分别输出单科最高分的学生的信息;
//3.依据数学单科成绩对学生进行排序,按从高到低的顺序输出学生信息;
//4.统计英语成绩超过90分的学生人数,分别输出其中的男生人数和女生人数。

#include <stdio.h>
#define N 10
struct student
 {int num;
  char name[20];
  int age;
  char sex;
  float score[3];
  float aver;
 };

int main()
 {void input(struct student stu[]);
  struct student max1(struct student stu[]);
  void print(struct student stu);
  struct student max2(struct student stu[]);
  struct student chao(struct student stu[]);
  struct student stu[N],*p=stu;
  input(p);
  print(max1(p));
  print(max2(p));
  chao(p);
  return 0;
 }

void input(struct student stu[])//输入信息并求平均值
  {int i;
   printf("请输入各学生的信息:学号、姓名、年龄、性别、三门课成绩:\n");
   for(i=0;i<N;i++)
   {scanf("%d %s %d %s %f %f %f",&stu[i].num,stu[i].name,
           &stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
    stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
   }
  }

struct student max1(struct student stu[])//求三科成绩最高的人
{int i,j,t1,t2,t3,i1,i2,i3;
    for(j=0;j<N;j++)
     for(i=0;i<N-j;i++)
       if(stu[i].score[0]>stu[i+1].score[0])
         {t1=stu[i].score[0];stu[i].score[0]=stu[i+1].score[0];stu[i+1].score[0]=t1;}i=i1;
       if(stu[i].score[1]>stu[i+1].score[1])
         {t2=stu[i].score[1];stu[i].score[1]=stu[i+1].score[1];stu[i+1].score[1]=t2;}i=i2;
       if(stu[i].score[2]>stu[i+1].score[2])
         {t3=stu[i].score[2];stu[i].score[2]=stu[i+1].score[2];stu[i+1].score[2]=t3;}i=i3;
  return stu[i1];stu[i2];stu[i3];
}

struct student max2(struct student stu[])//求数学并顺序输出
{int i,j,t,k;
    for(j=0;j<N;j++)
     for(i=0;i<N-j;i++)
      if(stu[i].score[1]>stu[i].score[1])
      {t=stu[i].score[1];stu[i].score[1]=stu[i+1].score[1];stu[i+1].score[1]=t;}
      i=k;
      for(k=0;k<N;k++)
 return stu[k];
}
struct student chao(struct student stu[])
{int i,j,t;
    for(j=0;j<9;j++)
     for(i=0;i<9-j;i++)
       if(stu[i].score[1]>stu[i+1].score[1])
         {t=stu[i].score[2];stu[i].score[2]=stu[i+1].score[2];stu[i+1].score[2]=t;}
    for(i=0;i<10;i++)
 return stu[i];
}   
void print(struct student stu)
 {  printf("\n成绩最高的学生是:\n");
    printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n",
      stu.num,stu.name,stu.age,stu.sex,stu.score[0],stu.score[1],stu.score[2],stu.aver);
 }
搜索更多相关主题的帖子: 英语成绩 include 结构体 数学 统计 
2013-12-06 17:56
地方黑发
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-12-6
收藏
得分:0 
我一运行,电脑就告诉我出问题了,我这也没办法
那谁能告诉我,一个函数里如何输出三个结果
就像我程序的《求三科成绩最高的人》那个函数一样
2013-12-07 16:19
地方黑发
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-12-6
收藏
得分:0 
非常感谢你很耐心的看了一遍,我在发表之后也改了自己的程序,不过只能做到软件不报错,一运行就出错这种程度。
  for(i=0;i<N;i++)
    {
       scanf("%d %s %d %c %f %f %f",
           &stu[i].num,
           stu[i].name,//地址???
           &stu[i].age,
           &stu[i].sex,
           &stu[i].score[0],
           &stu[i].score[1],
           &stu[i].score[2]);
可以告诉我为什么这地方可以不用加地址
2013-12-08 11:16
快速回复:结构体问题,自知有很多错误,求各位帮忙找一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016594 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved