输入若干个学生信息(学号、姓名和成绩),输入学号为0时输入结束。建立一个单向链表,再输入一个成绩值,

成绩大于该值的学生信息输出

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

struct stud_node{

int num;

char name[20];

int score;

struct stud_node *next;      /*定义结构类型变量 stud_node为全局变量*/

};

struct stud_node *Creat_Stu_Doc();

struct stud_node *DeleteDoc(struct stud_node *head,int min_score);

void Ptrint_Stu_Doc(struct stud_node *head);

void main()

{

struct stud_node *head;

int min_score;


head=Creat_Stu_Doc();

scanf("%d",&min_score);

head=DeleteDoc(head,min_score);

Ptrint_Stu_Doc(head);

}

struct stud_node *Creat_Stu_Doc()

{

struct stud_node *head,*tail, *p;

int num, score;

char name[20];

int size = sizeof(struct stud_node);


head=tail=NULL;

scanf("%d",&num);

while(num != 0){

scanf("%s%d",name,&score);

p=(struct stud_node*)malloc(size);

p->num=num;

strcpy(p->name,name);

p->score=score;

p->next=NULL;

if(head==NULL)

head=p;

else

tail->next=p;

tail=p;

scanf("%d",&num);

}

return head;

}

struct stud_node *DeleteDoc(struct stud_node *head,int min_score)

{

struct stud_node*ptr1,*ptr2;


while(head!=NULL&&head->score<min_score){

ptr2=head;

head=head->next;

free(ptr2);

}

if(head==NULL)

return NULL;

ptr1=head;

ptr2=head->next;

while(ptr2!=NULL){

if(ptr2->score<min_score){

ptr1->next=ptr2->next;

free(ptr2);

}

else

ptr1=ptr2;

ptr2=ptr1->next;

}    

return head;

}

void Ptrint_Stu_Doc(struct stud_node *head)

{

struct stud_node*ptr;


if(head==NULL){

printf("\nNo Records\n");

return;

}

for(ptr=head; ptr; ptr=ptr->next)  

printf("%d %s %d\n", ptr->num,ptr->name,ptr->score);

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-28
楼主是不是也是明天交作业啊

...姓名和成绩),输入学号为0时输入结束。建立一个单向链表,再输入一...
include<stdlib.h> include<string.h> struct stud_node{ int num;char name[20];int score;struct stud_node *next; \/*定义结构类型变量 stud_node为全局变量*\/ };struct stud_node *Creat_Stu_Doc();struct stud_node *DeleteDoc(struct stud_node *head,int min_score);void Ptrint_S...

输入若干个学生信息(学号 姓名 成绩) 输入学号为0时输入结束 建立一个...
2、定义两个student类型的变量,保存所有学生的成绩信息和临时变量。3、定义一个自定义函数,输入学生的成绩信息。4、具体实现学生信息的输入,并计算总分。5、主函数中,先定义4个整型变量,保存学生的总数,以及控制循环的变量。6、接着,输入学生总数,保存在变量n中。7、运行程序查看最后结果。注意事...

建立一个链表,记录学生的姓名,学号和成绩,
2008-06-12 输入若干个学生信息(学号 姓名 成绩) 输入学号为0时输入结... 19 2013-12-24 建立一个学生信息链表,每个结点包括:学号、姓名、成绩。实现链... 1 2015-12-12 建立一个学生数据链表,每个结点信息包括如下内容:学号,姓名,... 3 2013-01-03 编写一个实现学生信息单链表各种操作的类,学生信...

用C语言编写一个学生管理系统。
printf("[1] 输入所有学生信息\\n"); printf("[2] 输出所有学生成绩\\n"); printf("[3] 按学号查找某个学生信息\\n"); printf("[4] 按姓名查找某个学生信息\\n"); printf("[5] 按学号对学生排序\\n"); printf("[6] 按总成绩对学生排序\\n"); printf("[7] 按学号修改某个学生信息\\n"); printf...

为什么约定如果输入学号为0,则表示建立链表的过程已完成
要想停止开辟,只要输入学号为0即可.不过此时要有一点要注意的:即然有了输入,也就是说这个结点已经开辟了,但是学号为0只是一个结束条件,并不是真正的学生号,所以它不应该被链入链表中.所以应该让该结点的前一个结点的结构体指针置空.即:p2->next=NULL.此时结束了整个链表的建立.

学生成绩管理系统课程设计
printf("\\n请输入第%d名学生的学号,学号为0表示结束输入:",n+1); scanf("%d",&flag);while(getchar()!='\\n');for(;flag;) { n++; p1=(Student *)malloc(LEN); p1->num=flag; printf("请输入第%d名学生的姓名:",n); scanf("%s",p1->name); printf("请输入第%d名学生的语文成绩:",n...

C语言程序设计 链表的综合操作(急)
用C语言编写一个程序,通过链表的建立、输出、删除、插入等基本操作,实现学生成绩管理,从键盘输入学生信息,学生信息用结构体表示,包括学号、姓名、三门课成绩:语文、数学、英语。二、课程设计目标和要求必做:1. 插入功能:在学生链表中插入一个学生的信息,要求插入后仍然保持学号有序。2. 删除功能:要求输入指定的...

单向链表我设置输入学号0为终止输入条件 但在该程序中不起作用,为什么...
while中的 printf("请输入学生的学号姓名和成绩:");应为printf("请输入学生的学号姓名和成绩:",n+1);掉了n+1,其实对程序没有影响,只是为了提示当前输入的是第几条记录。。

用链表编写一个C语言程序:输入多名学生的学号,姓名和两门课的成绩,并...
C语言编程语言 用链表编写一个C语言程序:输入多名学生的学号,姓名和两门课的成绩,并实现删除和查询功能数组,链表,指针可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。c语言程序链表学生成绩

【高分】帮忙用汇编语言做一个程序:学生成绩统计
; 1、本程序定义:姓名最多个20个字符,学号最多10个字符,成绩最多3位数字; 2、输入学生信息时,各信息足位时,自动结束;不足位数时,按回车键结束; 3、输入姓名时,若直接回车,表示结束学生信息输入,进入信息处理; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。Code Segment Assume CS:Code,DS:...

相似回答