c語言刪除學生成績記錄
⑴ 求用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],好直觀的看