现在的位置: 首页 > 综合 > 正文

学生成绩等级统计

2013年01月05日 ⁄ 综合 ⁄ 共 1663字 ⁄ 字号 评论关闭
设有如下结构体:
struct student 
{
 int num;
 char name[10];
 int grade;
}
按学生成绩等级将学生信息添加到相应等级的链表中。
#include<stdio.h>
#include
<stdlib.h>
#include
<conio.h>
#define N 13
extern unsigned _floatconvert;    /*防止floating point formats not linked 错误发生*/
#pragma extref _floatconvert

typedef struct student    
{
    
int num;
    
char name[10];
    
int grade;
}Stu;

Stu stu[N]={{2,"Lin",92},
            {
3,"Zhang",87},
            {
4,"Zhao",72},
            {
5,"Ma",91},
            {
9,"Zhen",85},
            {
11,"Wang",100},
            {
12,"Li",86},
            {
13,"Xu",83},
            {
16,"Mao",78},
            {
17,"Hao",95},
            {
20,"Lu",82},
            {
21,"Song",76},
            {
22,"Wu",88}};
typedef 
struct node
{
    Stu 
*data;
    
struct node *next;
}Node;

void show(Node *h)
{
    Node 
*p;
    p
=h;
    
while(p->next!=NULL)
    {
        printf(
"%d\t%s\t%d\n",p->data->num,p->data->name,p->data->grade);
        p
=p->next;
    }
}

void save(Node *h,Stu *p)
{
    Node 
*s,*t;
    s
=(Node *)malloc(sizeof(Node));
    t
=h;
    
while(t->next!=NULL) t=t->next;
    s
->data=p;
    s
->next=NULL;
    t
->next=s;
}

void main()
{
    
int i,j,k,flag[4]={0};
    Node 
*h[4]={NULL},*p;
    
for(i=0;i<N;i++)
        
for(j=1;j<4;j++)
        {
            k
=10-int(stu[i].grade/10);
            
if(k==0) k++;
            
if(k==j)
                
if(flag[j]==0)
                {
                    flag[j]
=1;
                    p
=(Node *)malloc(sizeof(Node));
                    h[j]
=p;
                    p
->data=&stu[i];
                    p
->next=NULL;
                }
                
else
                    save(h[j],
&stu[i]);
        }
    
for(i=1;i<4;i++)
    {
        printf(
"The NO.%d table:\n",i);
        show(h[i]);
    }
    getch();
}

抱歉!评论已关闭.