标题:指向结构体指针变量做形参
取消只看楼主
浅暗花璃
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2016-3-31
结帖率:77.78%
已结贴  问题点数:10 回复次数:0 
指向结构体指针变量做形参
#include <stdio.h>
#include <stdlib.h>
struct student
{
    char num[9];
    char name[50];
    char sex;
    double score[4];
    double aver;
}stu[2];
    void input(struct student stu[]);

    void f(struct student stu[]);
     void output(struct student *p);

void main()
{
    struct student stu[2];
     
    input(stu);
    f(stu);
   
   
    output(stu);

}

    void input(struct student stu[])
    {
        int i,j;
        printf("plase input the information:\n");
    for(i=0;i<2;i++)
    {
        printf("plase input the %d num:",i);
        scanf("%s",&stu[i].num );
        printf("plase input the %d name:",i);
        scanf("%s",&stu[i].name);
          fflush(stdin);
        printf("plase input the %d sex  m-女,n-男:",i);
        scanf("%c",&stu[i].sex);
         fflush(stdin);
      
        for(j=0;j<4;j++)
        {
            printf("plase input the %d score:",i);
              scanf("%lf",&stu[i].score[j]);
        }
    }
    }
    void f(struct student stu[] )
    {   int i,j,k;   
        double sum=0;
        struct student t;

        for(i=0;i<2;i++)
        {
            for(j=0;j<4;j++)
                sum+=stu[i].score[j];
            stu[i].aver=sum/4.0;
            printf("%lf",stu[i].aver);
        }
        for(i=0;i<2;i++)
        {
            k=i;
            for(j=i+1;j<2;j++)
                if(stu[k].aver>stu[j].aver)
                    k=j;
            
               
                if(k!=i)
                {  
                    t=stu[k];
                    stu[k]=stu[j];
                    stu[j]=t;
                }
            
        }
    }
        void output(struct student *p)
        {
            
            int j;
            //int struct student stu[2];
               p=malloc(sizeof(struct student));
            for(p=stu;p<stu+2;p++)
            
            {   
             printf("%s\n",p->num);
             printf("%s\n",p->name);
             printf("%c\n",p->sex);
             for(j=0;j<4;j++)
                printf("%lf\n",p->score[j]);
               printf("%lf\n",p->aver);
            }
        }
         
求指教,输出函数哪里不对了

[此贴子已经被作者于2016-5-22 16:05编辑过]

搜索更多相关主题的帖子: include double 结构体 
2016-05-22 16:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-465129-1-1.html




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

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