当前位置:首页 » 考试成绩 » c语言删除学生成绩记录

c语言删除学生成绩记录

发布时间: 2021-03-06 20:01:48

⑴ 求用C语言中的结构体编写的《学生成绩管理系统》中的删除学生信息程序段。

/*****************************************************************
【作者日期】test2013-06-01
【函数功能】根据学生ID删除学生信息
【输入参数】头结点指针
【输出参数】头结点指针
【函数返回】头结点指针
【算法说明】入参检查要全面及出错信息处理要完善
【修改记录】
*****************************************************************/
Link*DelInfo(Link*head)
{
//clearScreen();
Link*tail;//
Link*tmp;
Link*nhead;
intpID;

tail=NULL;
tmp=head;
nhead=head;
pID=0;
if(NULL==head)
{
printf("emptylink. ");
//WaitSys();
returnhead;
}

tail=head->next;
printf("PleaseinputtheID(whichyouwanttodel): ");
scanf("%d",&pID);
getchar();
//删除的是头结点
if(tmp->ID==pID)
{
tmp=tmp->next;
nhead=tmp;
free(tmp);
if(NULL!=tmp)
tmp=NULL;
returnnhead;
}

//删除其他位置
while(tail)
{
if(tail->ID==pID)
{
tmp->next=tail->next;
free(tail);
if(NULL!=tail)
tail=NULL;
returnnhead;
}
else
{
tmp=tmp->next;
tail=tail->next;
if(NULL==tail)
{
printf("你输入的ID不存在 ");
WaitSys();
returnnhead;
}
}
}
returnnhead;
}

希望对楼主有所帮助!

⑵ c语言编写的学生成绩记录簿程序如何使输出对其,然后把乱码“屯”删除。麻烦看一下谢谢

首先插入学生成绩的时候没有初始化malloc

p是非法获取了L->next L->next是不确定的位置


其次

给分数赋值的时候

应该是&(r->eng)

⑶ 求C语言代码:如何添加,删除,修改文件中的学生信息记录

楼主解压运行下看看是不是你要的!是的话我就把代码贴上来!

⑷ 利用线性表的顺序存储结构完成一个班级的所有课程的管理c语言要求实现增加,删除,修改学生成绩记录等功

#include <stdio.h>
#include <stdlib.h>

typedef struct LNode{
int data; //链表数据
struct LNode* next; //链表指针
}LNode,*LinkList;

/*头插法-建立单链表*/
LinkList HeadCreate(LinkList la)
{
int num;
la=(LinkList)malloc(sizeof(LNode)); //建立头结点
la->next=NULL;
scanf("%d",&num);
while(num!=10)
{
LNode *p=(LinkList)malloc(sizeof(LNode));
p->data=num;
p->next=la->next;
la->next=p;
scanf("%d",&num);
}
return la;
}

/*尾插法-建立单链表*/
LinkList TailCreate(LinkList la)
{
int num;
la=(LinkList)malloc(sizeof(LNode));
la->next=NULL;
LinkList s,r=la;
scanf("%d",&num);
while(num!=10)
{
s=(LinkList)malloc(sizeof(LNode));
s->data=num;
r->next=s;
r=s;
scanf("%d",num);
}
r->next=NULL;
return la;
}

/*单链表遍历*/
void TravelList(LinkList la)
{
LinkList p=la->next;
while(p!=NULL)
{
printf("%d->",p->data);
p=p->next;
}
printf("\n");
}

/*单链表的按位查找*/
LinkList GetElem(LinkList la,int i)
{
int j=1;
LNode* p=la->next;
if(i<1)
return NULL;
while(p && j<i)
{
p=p->next;
j++;
}
return p;
}

/*单链表的按值查找*/
LinkList LocalElem(LinkList la,int e)
{
LNode* p=la->next;
while(p!=NULL && p->data!=e)
p=p->next;
return p;
}

/*单链表插入操作*/
bool InsertList(LinkList la,int i,int e)
{
//在la链表中的i位置插入数值e
int j=1;
LinkList p=la,s;
while(p && j<i)
{
p=p->next;
j++;
}
if(p==NULL)
return false;
if((s=(LinkList)malloc(sizeof(LNode)))==NULL)
return false;
s->data=e;
s->next=p->next;
p->next=s;
return true;
}

/*单链表删除操作*/
bool DeleteList(LinkList la,int i)
{
int j=1;
LinkList p=la,q;
while(p && j<i) //p指向第i-1个元素
{
p=p->next;
j++;
}
if(p==NULL || p->next==NULL) //表示不存在第i-1个和第i的元素
return false;
q=p->next;
p->next=q->next;
free(q);
return true;
}

/*单链表的表长*/
int LengthList(LinkList la)
{
int nLen=0;
LinkList p=la->next;
while(p)
{
p=p->next;
nLen++;
}
return nLen;
}

/*单链表逆置*/
LinkList Reserve(LinkList la)
{
if(la==NULL || la->next==NULL)
return la;
LinkList p=la->next,q=p->next,r=q->next;
la->next=NULL;
p->next=NULL;
while(r!=NULL)
{
q->next=p;
p=q;
q=r;
r=r->next;
}
q->next=p;
la->next=q;
return la;
}

int main()
{
LNode la;
LinkList p;
p=HeadCreate(&la); //头插法创建单链表
TravelList(p);
printf("%p\n",GetElem(p,1)); //获得第1个结点地址
InsertList(p,2,10); //在链表的第2个位置插入元素10
TravelList(p);
DeleteList(p,3); //删除链表的第3个元素
TravelList(p);
printf("%d\n",LengthList(p)); //获得链表长度
p=Reserve(p);
TravelList(p);
return 0;
}

//运行结果
//5 6 12 7 8 14 9 3 2 5 14 10 头插法创建链表
//14->5->2->3->9->14->8->7->12->6->5-> 显示链表
//00382490 第一个结点的地址
//14->10->5->2->3->9->14->8->7->12->6->5-> 插入元素值为10的结点
//14->10->2->3->9->14->8->7->12->6->5-> 删除第三个结点
//11 获得链表长度
//5->6->12->7->8->14->9->3->2->10->14-> 链表逆置
//Press any key to continue

这是我写的一个线性表链式存储的综合程序,包含了你所要的创建、删除、插入、按值查找的功能,还有一些额外的功能。下面加注释的是程序运行结果,你可以参考试着改改程序,让程序更加完美。希望对你有帮助,呵呵!

⑸ c语言编写的学生成绩记录簿程序如何使输出对其,然后把乱码“屯”删除。


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#defineM100
#defineN10
#defineNU20

typedefstructnode{
charxuehao[N];
charname[N];
charsex[N];
inteng,math,ds;
charjianjie[NU];
structnode*next;
}node;
/*1信息输入*/
node*createdatabase(){
node*head,*p;
inti,n;
head=p=(node*)malloc(sizeof(node));
p->next=NULL;
printf("请输入要创建的学生总数 ");
scanf("%d",&n);
for(i=1;i<=n;i++){
("第%d个学生的基本信息 ",i);
p->next=(node*)malloc(sizeof(node));
printf("请输入学号:");
scanf("%s",p->next->xuehao);
printf("请输入姓名:");
scanf("%s",p->next->name);
printf("请输入性别:");
scanf("%s",p->next->sex);
printf("请输入科目一成绩:");
scanf("%d",&p->next->eng);
printf("请输入科目二成绩:");
scanf("%d",&p->next->math);
printf("请输入科目三成绩:");
scanf("%d",&p->ds);
/*printf("请输入注释 ");
scanf("%s",p->next->jianjie);*/
p=p->next;
}
p->next=NULL;
returnhead;
}

voidxs(node*p){
printf("%10s",p->xuehao);
printf("%8s",p->name);
printf("%3s",p->sex);
printf("%3d",p->eng);
printf("%3d",p->math);
printf("%5d",p->ds);
//printf("%s ",p->jianjie);
}
/*2信息输出*/
voidout(node*head){
node*p=head->next;
printf(" 学号 姓名 性别 科目一 科目二 科目三在此添加注释 ");
while(p){
xs(p);
printf(" ");
p=p->next;
}
}
/*3按照姓名查找学生*/
voidsearch_name(node*head){
node*p=head->next;
intflag=1;
charname[N];
printf("输入要查询的姓名: ");
scanf("%s",name);
while(p){
if(strcmp(p->name,name)==0){
xs(p);
flag=0;
}
p=p->next;
}
if(flag)printf("没有此学生! ");
}

intmain(){
node*head=createdatabase();
search_name(head);
out(head);
return0;
}

⑹ 用C语言设计一学生成绩管理系统,要求: 1、加入一个学生的成绩 2、删除一个学生的成绩 3、求各学生的总分

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#define MAXLEN 100

#define Null 0

typedef struct node {

int num; // 学号

char name[MAXLEN]; // 姓名

int score; // 分数

struct node *next; // 指针域
}list;

list *creat() // 新增成绩
{
list *head,*p,*r;

int i,n; // n 为学生人数

head=(list *)malloc(sizeof(list));

head->next=Null;

r=head;

printf("请输入学生人数.\n");

scanf("%d",&n);

for(i=1;i<=n;i++) {

p=(list *)malloc(sizeof(list));

printf("请输入学生学号:\n");

scanf("%d",&p->num);

printf("请输入学生姓名:\n");

scanf("%s",&p->name);

printf("请输入学生成绩:\n");

scanf("%d",&p->score);

p->next=Null;

r->next=p;

r=r->next;
}

return (head);

}

list *del (list *h) // 删除成绩
{
int k; // 要删除的学生学号

list *p,*q; // 为什么要两个指针呢?

q=h;

p=h->next;

printf("请输入待删除的学生学号:\n");

scanf("%d",&k);

while (p && p->num!=k) {

q=p;

p=p->next;
}

if(p) {

q->next=p->next;

free(p);
}

else

printf("没有此学生的记录,无法删除!\n");

return (h);

}

void output(list *h) // 输出成绩
{
list *p;

printf("学号\t姓名\t成绩\n");

p=h->next;

while (p!=NULL) {

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

p=p->next;
}
}

void main()
{
list *p;

int k; // 控制循环的标志

while (1) {

printf(" ---------------------------------------\n");

printf(" | 学生成绩管理系统 |\n");

printf(" ---------------------------------------\n");

printf(" | 1. 登记成绩 |\n");

printf(" | 2. 删除成绩 |\n");

printf(" | 3. 输出所有学生成绩 |\n");

printf(" | 0. 退出系统 |\n");

printf(" ---------------------------------------\n");

printf("请输入你的选择:\n");

scanf("%d",&k);

switch(k) {

case 1: p=creat(); break;

case 2: p=del(p); break;

case 3: output(p); break;

case 0: exit(0);

default : printf("选择错误,重新开始!\n");
}

}
}

⑺ C语言:学生成绩添加、修改、删除怎么做

XX wo c YUYANBUHAO

⑻ 如何用c语言程序设计实现学生成绩的录入,查询,排序,删除等操作。

录入的话,可以直接从文件里面导入。

查询,最简单的方法就是for循环一个一个查,当然,想要更快的话,可以用二分搜索。

排序嘛~~~快排就行了。

删除,这个比较麻烦,必须看你的数据结构。如果是数组的话,把后面每一个元素前移。如果是链表的话,就直接将next指针往下连就行了。

⑼ c语言的 学生成绩记录薄

⑽ C语言 学生成绩的删除。

数组里面第一个元素是stu[0]但此时的位置它是第一个,也就是第一个同学,所以如果要表示第一个同学就要stu[0+1],好直观的看

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919