您好,欢迎来到画鸵萌宠网。
搜索
您的当前位置:首页学生信息的那些操作:(5)添加记录

学生信息的那些操作:(5)添加记录

来源:画鸵萌宠网

有一学生成绩表,包括学号、姓名、3门课程成绩。已知该成绩表按学号升序排序。请编程实现,添加一个新的学生信息,且使成绩表仍按学号有序;若待添加的学号与已有学号重复,则输出错误信息,拒绝添加。

输入格式:

首先输入一个整数n(1<=n<=100),表示学生人数;

然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。

最后一行输入一个待添加的学生信息,包括学号、姓名和3门课成绩

输出格式:

若待添加的学号与已有学号重复,则输出只有一行“error!”;否则,输出n+1行,即添加后的成绩单信息。

输入样例:

在这里给出一组输入。例如:

3
202016040201 Zhangling 78 95 55
202016040202 Wangli 87 99 88
202016040204 Fangfang 68 76 75
202016040203 Lilei 68 79 82

输出样例:

在这里给出相应的输出。例如:

202016040201 Zhangling 78 95 55
202016040202 Wangli 87 99 88
202016040203 Lilei 68 79 82
202016040204 Fangfang 68 76 75
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
struct STU{
	char num[13];
	char name[20];
	int a,b,c;
	struct STU *next;
};
struct STU *head,*tail;
void input(int n)
{
	int x;
	struct STU *p;
	p=(struct STU *)malloc(sizeof(struct STU));
	tail=p;
	for(x=0;x<n;x++)
	{
	    scanf("%s %s %d %d %d",p->num,p->name,&p->a,&p->b,&p->c);
	    if(head==NULL)
	        head=p;
	    else
	        tail->next=p;
	    tail=p;
	    p=(struct STU *)malloc(sizeof(struct STU));
	}
	tail->next=NULL;
}
void addandput(struct STU adt)
{
	struct STU *p,*p1=head,*p2=head;
	int flag=0;
	p=(struct STU *)malloc(sizeof(struct STU));
	strcpy(p->num,adt.num);
	strcpy(p->name,adt.name);
	p->a=adt.a,p->b=adt.b,p->c=adt.c,p->next=NULL;
	while(p1!=NULL)
	{
		if(strcmp(p->num,p1->num)==0)
		{
			flag=1;
			break;
		}
		p1=p1->next;  
	}
	if(flag==0)
	{
		p1=head;
		while(p1!=NULL&&(strcmp(p->num,p1->num)>0))
		{
			p2=p1;
			p1=p1->next;
		}
		if(p1==NULL)//此时p1指向空,p2指向链表末尾 
			p2->next=p;
		else if(strcmp(p->num,p1->num)<0)
		{
			if(head==p1)//如果p->num小于head->num 
			{
				head=p;
				p->next=p1; 
			}
			else//插在中间 
			{
				p2->next=p;
				p->next=p1;
			}
		}
    }
	if(flag==0)
		for(p=head;p!=NULL;p=p->next)
		    printf("%s %s %d %d %d\n",p->num,p->name,p->a,p->b,p->c);
	else 
	    printf("error!");
}
int main()
{
	struct STU *p,adt;
	int n;
	scanf("%d",&n);
	head=NULL,tail=NULL;
	input(n);
	scanf("%s %s %d %d %d",adt.num,adt.name,&adt.a,&adt.b,&adt.c);
	addandput(adt);
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo8.com 版权所有 湘ICP备2023022238号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务