唯美c吧 关注:165贴子:499
  • 5回复贴,共1

可以帮我看看这个怎么解吗

只看楼主收藏回复

编写一个c程序,对一个班(不多于35人)的学生成绩进行管理,其中:每个学生的数据包括学号、姓名、三门课的成绩(英语、数学、计算机)、平均成绩和总成绩。程序执行时,主界面如下:
主菜单
1.数据插入
2.数据输出
3.数据排序(按平均分)
4.数据查找(按学号)
5.数据插入
6.数据删除
7.数据统计(按平均分)
0.退出
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
struct STUDENT
{
int num;
char name[20];
float chinese, math,computer;
float avg;
struct STUDENT *next;
};
typedef struct STUDENT STU;
STU *creatList();
void printList(STU *head);
STU *querryNode(STU *head,char *name);
void deleteNode(STU *head,char *name);
void main()
{
STU *head,*result;
head = creatList();
deleteNode(head,"tom");
result = querryNode(head,"tom");
if (result != NULL)
{
printf("%4d ",result->num);
puts(result->name);
}
else
{
printf("\n no records found!");
}
printList(head);
}
STU *creatList()
{
STU *head,*curNode,*preNode;
head = (STU *)malloc(sizeof(STU));
head->next = NULL;
preNode = head;
while (1)
{
curNode = (STU *)malloc(sizeof(STU));
curNode->next = NULL;
printf("\ninput record:");
printf("input num:\n");
scanf("%d",&curNode->num);
if (curNode->num==-1)
{
break;
}
fflush(stdin);
printf("input name:\n");
gets(curNode->name);
printf("grade:");
scanf("%f%f%f",&curNode->chinese,&curNode->math,&curNode->computer);
curNode->avg=(curNode->chinese+curNode->math+curNode->computer)/3;
preNode->next = curNode;
preNode = curNode;
}
return head;
}
void printList(STU *head)
{
STU *curNode;
curNode = head->next;
while (curNode != NULL)
{
printf("%4d ",curNode->num);
puts(curNode->name);
printf("%4f%4f%4f\n",curNode->chinese,curNode->math,curNode->computer);
printf("%f\n",curNode->avg);
curNode = curNode->next;
}
}
STU *querryNode(STU *head,char *name)
{
STU *curNode;
curNode = head->next;
while (curNode != NULL)
{
if (strcmp(curNode->name,name)==0)
{
return curNode;
}
else
{
curNode = curNode->next;
}
}
return NULL;
}
void deleteNode(STU *head,char *name)
{
STU *curNode,*preNode;
curNode = head->next;
preNode = head;
while (curNode != NULL)
{
if (strcmp(curNode->name,name)==0)
{
preNode->next = curNode->next;
free(curNode);
curNode = preNode->next;
}
else
{
curNode = curNode->next;
preNode = preNode->next;
}
}


IP属地:云南1楼2014-01-06 13:09回复
    同学,程序比较长的时候要学着加上注释,这样才方便查找bug啊,你这完全看的眼花呢


    本楼含有高级字体2楼2014-01-06 13:35
    收起回复