爱问知识人 爱问教育 医院库

求助C语言一道..555~~

首页

求助C语言一道..555~~

N名学生的不重复成绩已在main()函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun(),它的功能是:找出学生的最高分,由函数值返回。
#include "stdio.h"
#include "stdio.h"
#define N 8
struct student 
{float score;
struct student *next;
};
typedef struct student STRUS;

float fun(STRUS *h)
{
}

STRUS *creat(float *s)
{STRUS *h,*p,*q;
int i=0;
h=p=(STRUS *)malloc(sizeof(STRUS));
p->score=0;
while (i<N)
{q=(STRUS *)malloc(sizeof(STRUS));
q->score=s[i++];
p->next=q;
p=q;
}
p->next=NULL;
return h;
}

outlist(STRUS *h)
{STRUS *p;
p=(*h).next;
printf("head");
do 
{printf("->%5.1f",(*p).score);
p=(*p).next;
} 
while (p!=NULL);
printf("\n\n");
}

main()
{float s[N]={67,100,86,99.5,91.8,34,76,84},max;
STRUS *h;
h=creat(s);
outlist(h);
max=fun(h);
printf("max=%5.1f\n",max);
}

提交回答
好评回答
  • 2007-01-03 17:43:07
      #include
    #define m 8
    typedef struct ide
    {
       int score;//不知道你上面怎么是float型的;
      struct ide *next;
    }lnode;
    lnode *creat(lnode *h,int a[m])
    {
        lnode *L,*R;
        L=new lnode;
        
        L->next=NULL;
        h=L;
        for(i=0;iscore=a[i];  //本人看上面的程序好像只与分数有关,与             //人无关,否则要再定义一个结构体数组
          L=new lnode;
          R->next=L;        //令前结点指向后结点
        }
         delete L;         //明显最后多给了一个结点
         R->next=NULL;
      return h;
    }
    int fun(lnode *h)
    {   
       lnode *p;
       p=h;
       int max;
        max=p->score;
        while(p->next!=NULL)
        { 
           p=p->next;
           if(maxscore)
            max=p->score;
        }
       return max;
    }
    void main()
    {
       int a[m]={67,100,86,99。
      5,91。
      8,34,76,84},max; lnode *h; h=creat(h,int a[m]); max=fun(h); cout<

    湖***

    2007-01-03 17:43:07

其他答案

    2007-01-03 18:58:05
  • 这样也可以:
    float fun(STRUS *h)
    {
    	float m=0;
    	STRUS *p=(*h).next;
    	while(p!=NULL)
    	{
    		if(mscore) m=p->score;
    		p=p->next;
    	}
    	return m;
    }

    l***

    2007-01-03 18:58:05

  • 2007-01-03 17:35:09
  • float fun(STRUS *h){
    	STRUS *p=h;
    	float max=p->score;
    	while((p=p->next)->next) if((p->score)>max) max=p->score;
    	return max;
    }
    定义一个中间变量记录最大值就可以了.
    (p=p->next)->next 这个表达式是判断是否最后一个结点。这是最简洁的方法了

    S***

    2007-01-03 17:35:09

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 172-191
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):