c语言利用指针进行成绩排名,c语言实现学生成绩录入,主要是对指针的运用

今儿,有同僚讨论一个源程序,是关于“学生分数的录入的”。

其中用到了链表,涉及到的就是链表的增删改查功能。

我在原来的基础上修改了一些,基本功能已经调试通过。

功能如下:

1、输入type类型

2、type为1,是增加一个学生

为2,删除输入学号的学生

为3,删除输入成绩的学生(暂时为实现)

为4,修改输入的学号的学生分数

为5,查找目标学号的学生成绩

为0, 直接打印所有学生的学号和成绩

源代码如下:

#include #include #include #define FLUSH  \     do{\         int c;\         while( (c = getchar()) != '\n' && c != EOF)\             ;\     }while(0) typedef struct _student{     int num;     float score;     struct _student *next; }*studentList, studentNode; studentList createListNode() {     studentList p = NULL;     p = (studentList)malloc(sizeof(studentNode));     p->num = 0;     p->score = 0;     p->next = NULL;     return p; } int listLenGet(studentList list) {     int len = 0;     studentList p = list;     while (p->next)         len++;     return len; } int insertNode(studentList list, studentNode* student) {     studentList p = list;     while (p->next)         p = p->next;     p->next = student;     return 0; } int delNumNode(studentList list, int num) {     studentList p = list;     studentList q = NULL;     int deleteCount = 0;     while (p->next){         if (p->next->num != num)             p = p->next;         else {             q = p->next;             p->next = q->next;             free(q);             deleteCount++;         }     }     return deleteCount; } float delScoreNode(studentList list, float score) {     studentList p = list;     studentList q = p->next;     while (p->next){         if (q->score== score){             p->next = q->next;             free(q);             q = p->next;             continue;         } else             p = p->next;     }     return 0; } int changeNumNodeScore(studentList list, int num, float score) {     studentList p = list;     studentList q = p->next;     while (p->next){         if (q->num == num){             q->score = score;             return 0;         }         p = p->next;         q = p;     }     return 0; } int checkStudentNum(studentList list, int num) {     studentList p = list;     studentList q = p->next;     while (p->next){         if (q->num == num)             return -1;         p = p->next;         q = p->next;     }     return 0; } float numNodeScoreGet(studentList list, int num) {     studentList p = list;     studentList q = p->next;     while (p->next){         if (q->num == num)             return q->score;     }     return -1; } void printList(studentList list) {     studentList p = list;     studentList q = p->next;     //system("clear");     printf("****************************************\n");     while (p->next){         printf("student num = %d, score = %f\n", q->num, q->score);         p = p->next;         q = p->next;     }     printf("****************************************\n"); } void printfInfo() {     //printf("") } void doInsertStudent(studentList list) {     int num = -1;     float score = 0;     studentNode* student = createListNode();     printf("student num = ");     scanf("%d", &num);     printf("score = ");     scanf("%f", &score);     if (checkStudentNum(list, num)){         printf("We have the same num\n");         return ;     }     student->num = num;     student->score = score;     insertNode(list, student); } void doDelStudentByNum(studentList list) {     int num = -1;     int ret = -1;     printf("num = ");     scanf("%d", &num);     ret = delNumNode(list, num);     if (ret <= 0)         printf("Not found the num\n"); } void doDelStudentByScore(studentList list) { } void doChangeStudentScore(studentList list) {     int num = -1;     float score = 0;     printf("change score\n");     printf("num = ");     scanf("%d", &num);     printf("score = ");     scanf("%f", &score);     if (checkStudentNum(list, num))         changeNumNodeScore(list, num, score);     else         printf("student dose not exist\n"); } void doFindStudentScore(studentList list) {     int num = -1;     float score = 0;     printf("change score\n");     printf("num = ");     scanf("%d", &num);     if (checkStudentNum(list , num))         score = numNodeScoreGet(list, num);     else         printf("student dose not exist\n");     printf("student[%d]'s score is %f\n", num, score); } int main() {     int type = -1;     studentList list = createListNode();     while (1){         printf("Please input type \n");         scanf("%d", &type);         FLUSH;         //system("clear");         if (type < 0 || type > 5){             printf("Please in put the right type\n");             //system("clear");             continue;         }         switch (type){             //system("clear");         case 1://insert             doInsertStudent(list);             break;         case 2://del num             doDelStudentByNum(list);             break;         case 3://del score             doDelStudentByScore(list);             break;         case 4://change             doChangeStudentScore(list);             break;         case 5://look up             doFindStudentScore(list);             break;         case 0:         default:             printList(list);             break;         }     }     return 0; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用文件来存储学生成绩,可以方便地实现成绩的长期存储和管理,下面是一个简单的C语言代码示例: 1. 首先,我们需要定义一个结构体来存储学生的信息,包括学号、姓名和成绩等信息,例如: ``` struct student { char id[20]; // 学号 char name[20]; // 姓名 int score; // 成绩 }; ``` 2. 接下来,我们可以使用fopen函数来打开一个文件,并将学生的信息写入到文件中。使用fprintf函数来将学生的信息按照一定的格式写入到文件中,例如: ``` FILE *fp; // 定义文件指针 struct student stu; // 定义学生信息结构体 char filename[20]; // 文件名 printf("请输入文件名:"); scanf("%s", filename); // 打开文件,以写入方式("w")打开 fp = fopen(filename, "w"); // 输入学生信息,并将信息写入文件中 while (scanf("%s%s%d", stu.id, stu.name, &stu.score) != EOF) { fprintf(fp, "%s %s %d\n", stu.id, stu.name, stu.score); } // 关闭文件 fclose(fp); ``` 3. 使用fscanf函数从文件中读取学生的信息,并将其存储到数组中。我们可以先通过fopen函数打开文件,然后使用fscanf函数从文件中读取数据,例如: ``` FILE *fp; // 定义文件指针 struct student stu[50]; // 定义学生信息数组 char filename[20]; // 文件名 int i = 0; printf("请输入文件名:"); scanf("%s", filename); // 打开文件,以读取方式("r")打开 fp = fopen(filename, "r"); // 从文件中读取学生信息,并存储到数组中 while (fscanf(fp, "%s%s%d", stu[i].id, stu[i].name, &stu[i].score) != EOF) { i++; } // 关闭文件 fclose(fp); ``` 希望这个简单的C语言代码示例能够帮助您理解如何使用文件来存储和读取学生成绩

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值