日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言数据结构学生成绩 顺序表

發布時間:2023/12/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言数据结构学生成绩 顺序表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個簡單的順序表實現一組學生信息增,刪,查,取功能。其中文件導入部分的處理花費了較多時間
代碼如下:

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> #include<errno.h>#define maxsize 30 #define OVERFLOW -2 #define OK 1typedef struct{char name[8];int id;int score; }student;typedef struct{student *elem;int length ; }sqlist;

函數方法:
初始化

int InitList(sqlist *L) {L->elem=(student*)malloc(sizeof(student)*maxsize);if(!L->elem) exit(OVERFLOW);L->length=0;return OK; }void Openfile(sqlist *L){int i=0;FILE *fp;fp =fopen("mmp.txt","r"); if((fp=fopen("mmp.txt","r"))==NULL){printf("can't open the file!!!\n");printf("error:%s\n",strerror(errno));exit(0);}while(!feof(fp)){fscanf(fp,"%s%d%d",L->elem[i].name,&L->elem[i].id,&L->elem[i].score); /*fscanf()格式化讀文件函數,這個函數以空格或換行區分兩個不同的數據,如果使 用自己編寫的文本,文本每個元素之間最好保持一個空格不要多個空格以免出現不必要的錯誤*/printf("%s%d%d\n",L->elem[i].name,L->elem[i].id,L->elem[i].score);i++;L->length++;}fclose(fp); }

插入與刪除

int InsertList(sqlist *L){int j,i;student s;printf("================輸入要插入的學生信息==============\n");printf("*****姓名:"); scanf("%s",s.name);printf("*****學號:"); scanf("%d",&s.id);printf("*****成績:"); scanf("%d",&s.score);printf("輸入完成\n\n");printf("輸入要插入的位置信息:");scanf("%d",&i);if((i<1)||(i>L->length+1)) return 0;if(L->length==maxsize) return 0;for(j=L->length-1;j>=i-1;j--){L->elem[j+1]=L->elem[j];}L->elem[i-1]=s;L->length++; }int DeleteList(sqlist *L){int j,i;printf("輸入要刪除位置");scanf("%d",&i);if((i<1)||(i>L->length+1)) return 0;for(j=i-1;j<L->length-1;j++){L->elem[j]=L->elem[j+1];}L->length--;return OK; }

查找取值

int LocateElem(sqlist *L){int k,i=0;printf("輸入要查找的學號\n") ;scanf("%d",&k);for(i=0;i<L->length;i++){if(L->elem[i].id==k) printf("該生的成績為:%d\n",L->elem[i].score); }return 0 ; }int GetElement(sqlist *L){int i;student e;printf("輸入取值位置信息\n"); scanf("%d",&i);if((i<1)||(i>L->length+1)) return 0;e=L->elem[i-1];printf("********該學生的信息********\n");printf("姓名: %s\n",e.name);printf("學號: %d\n",e.id);printf("成績: %d\n",e.score);return OK; }

打印

void printList(sqlist *L){int i=0;printf("====================學生成績表==================\n");for(i=0;i<L->length;i++){printf("姓名:%s\n",L->elem[i].name);printf("學號:%d\n",L->elem[i].id);printf("成績:%d\n\n",L->elem[i].score); }printf("\n"); }

主函數:

int main(){sqlist L;InitList(&L); /*初始化*/Openfile(&L); /*導入文件*/printList(&L);InsertList(&L); /*增,刪,查,取*/printList(&L);DeleteList(&L);printList(&L);LocateElem(&L);GetElement(&L);return 0; }

總結

以上是生活随笔為你收集整理的C语言数据结构学生成绩 顺序表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。