链表-C语言关于学生管理系统的题,麻烦帮我看看哪里出错了,谢谢!

问题描述

C语言关于学生管理系统的题,麻烦帮我看看哪里出错了,谢谢!

代码如下:

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define OK 1
#define ERROR 0
struct Score
{
    int score;
}s[3];//课程及对应成绩

typedef struct LNode
{
    char name[3];
    struct Score s[3];
    struct LNode *next;
}LNode,*LinkList;//链表结点

void CreateList(LinkList &L,int n)
{
    int i;
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    for(i=n;i>0;i--)
    {
        LinkList p=(LinkList)malloc(sizeof(LNode));
        printf("请输入该学生的姓名:n");
        scanf("%s",p->name);
        printf("请依次输入该学生语文、数学、英语成绩:(用逗号分隔数据)n");
        scanf("%d,%d,%d",&p->s[0].score,&p->s[1].score,&p->s[2].score);//用逗号分隔数据
        p->next=L->next;
        L->next=p;
    }
}//逆位序建立链表L

int ListDelete(LinkList &L,int i)
{
    int j=0;
    LinkList p=L;
    LinkList q;
    while(p->next&&j<i-1)
    {
        p=p->next;
        j++;
    }
    if(!p->next||j>i-1)
    {
        return ERROR;
    }
    q=p->next;
    p->next=q->next;
    free(q);
    return OK;
}//删除第i个学生的信息

int ListInsert(LinkList &L,int i)
{
    int j=0;
    LinkList p=L;
    LinkList a;
    while(p&&j<i-1)
    {
        p=p->next;
        j++;
    }
    if(!p||j>i-1)
    {
        return ERROR;
    }
    a=(LinkList)malloc(sizeof(LNode));
    printf("须增加的学生姓名:");
    scanf("%s",a->name);
    printf("依次输入该生语文、数学、英语的成绩:(用逗号分隔数据)");
    scanf("%d,%d,%d",&a->s[0].score,&a->s[1].score,&a->s[2].score);//逗号分隔数据
    a->next=p->next;
    p->next=a;
    return OK;
}//在第i位插入一名学生的信息

int ModifyList(LinkList &L,int Chinese,int Math,int English)
{
    LinkList p=L->next;
    char changename[3];
    printf("请输入需要修改的学生的姓名:");
    scanf("%s",changename);
    for(;(strcmp(changename,p->name)==0);p=p->next)
    {
        p->s[0].score=Chinese;
        p->s[1].score=Math;
        p->s[2].score=English;
    }
    return OK;
}//修改某生成绩

int ShowList(LinkList &L)
{
    LinkList p=L->next;
    while(p!=NULL)
    {
        printf("%s的语文成绩为:%d数学成绩为:%d英语成绩为:%dn",p->name,p->s[0].score,p->s[1].score,p->s[2].score);
        p=p->next;
    }
    return OK;
}//输出链表

void main()
{
    LinkList L;
    int Chinese=99,Math=85,English=70;//修改的学生的成绩
    CreateList(L,3);
    ShowList(L);
    ListInsert(L,2);
    ShowList(L);
    ListDelete(L,2);
    printf("删除后的学生信息:n");
    ShowList(L);
    ModifyList(L,Chinese,Math,English);
    ShowList(L);
}

前面运行出来都是对的,就只有最后修改的那个函数有问题,麻烦帮忙看一下,谢谢!

解决方案

int ModifyList(LinkList &L,int Chinese,int Math,int English)
{
LinkList p=L->next;
char changename[3];
printf("请输入需要修改的学生的姓名:");
scanf("%s",changename);
for(; p ! = NULL ; p=p->next)
{
//strcmp返回0代表两个字符串相同
if(strcmp(changename,p->name)==0)
{
p->s[0].score=Chinese;
p->s[1].score=Math;
p->s[2].score=English;
return OK;
}
}
return ERROR;
}//修改某生成绩

解决方案二:

太感谢了!!
还想问一下为什么运行的时候名字打英文就是对的,打中文就会错呢?

时间: 2024-12-10 18:05:51

链表-C语言关于学生管理系统的题,麻烦帮我看看哪里出错了,谢谢!的相关文章

c语言-C语言十进制转换成二进制(可转换小数)哪里出错了?

问题描述 C语言十进制转换成二进制(可转换小数)哪里出错了? //#include #include#define decimalnum 8//小数二进制位数 void main(){char Integerbuffer[100];//整数char decimalbuffer[20];//小数float number;double decimalnumbera;long value;int i;printf(""请输入需要转换成二进制的十进制数:"");scanf(

c语言-请高手看一段C程序代码不知道哪里出错了

问题描述 请高手看一段C程序代码不知道哪里出错了 解决方案 另外printf你又拼错了. 解决方案二: 第14行 应为printf 解决方案三: 你的那个所谓的山寨编译器,也不知道有没有windows.h,估计没有. 建议你使用VC++ 解决方案四: 这本书其实我也看过,作者自己做了一个所谓的开发环境,其实用的是GNU C++,它并不包含windows的api函数的头和库. 解决方案五: 出错信息呢,贴出来呗 解决方案六: 你第14行的 printf 写错了 解决方案七: 第14行的printf

C++基础学生管理系统_C 语言

本文实例为大家分享了C++基础学生管理系统的实现代码,供大家参考,具体内容如下 适用于c++6.0,codeblocks等常用工具 1. 链表处理部分     #include<stdio.h> #include<string.h> #include<stdlib.h> #include"linklist.h" #include"elem.h" void dispnode(linklist h) { node *p; p=h-&g

指针-c语言链表学生管理系统相关问题请教

问题描述 c语言链表学生管理系统相关问题请教 要做课程作业了,就学着网上模版写了个链表学生信息系统,但我想分成老师-学生两个登陆模块.思路如下: mian()中设置ahead结构体指针. 老师模块完成学生成绩的增删改查排序(借鉴网上的已完成)..老师模块结束后返回处理后的链表头指针,传递给学生模块,学生模块通过这个传递过来的指针进行访问信息链表,输入自己学号查询本人成绩. 结果,编译通过,老师模块成功了,学生模块没法用.所以想请教下这种思路对吗? 解决方案 思路是对的,只要老师建立的链表没错误,

C++实现简单的学生管理系统_C 语言

C++实现简单的学生管理系统 //Student.cpp #include<iostream> using namespace std; struct Stu { char no[10]; char name[16]; int math; int chi; double ave; }; class Student { public: Stu st; Student * next; public: Student(){} Student(Stu s) { st=s; next=NULL; st.

c语言 数据结构-关于“学生管理系统”这个程序编程的一些问题

问题描述 关于"学生管理系统"这个程序编程的一些问题 #include #include typedef struct student { int num; int score; struct student *next; }student; void add(student *s)//全局的增加函数 { printf("请输入学生学号与分数:n"); scanf("%d %d",&s->num,&s->score);

验证码-c语言,学生信息管理系统。看不懂错误提示??

问题描述 c语言,学生信息管理系统.看不懂错误提示?? #include #include #include #include #include #define N 100 typedef struct student { int num; //学号,姓名,年龄,性别,出生年月,地址,电话, char name[18]; char sex; int age; int y, m; int tel; char add[30]; char mail[20]; int res; int stu; } S

c语言-C语言实现学生宿舍管理系统

问题描述 C语言实现学生宿舍管理系统 对于C语言还有点基础,.NET和Java不太懂. 假期培训了iOS开发,才一个多月,本想用OC来做毕业设计的,现在要做开题报告了,不知道怎么写.所以决定用C来编写程序. 问题1:C语言怎么连接数据库,或是保证下次运行程序内容不会重置. 问题2:怎么用C语言构建图形界面(太难的话,就不用给我讲了) 解决方案 C语言过于原始和简陋,要学的东西很多.比如说,你用.net画画鼠标,界面就做好了.做网页也是一样.但是C语言必须手工去调用api创建界面. 好歹也得用下C

对象-@C语言大神:此题不用C++能做吗?求算法思路??【不要求代码】

问题描述 @C语言大神:此题不用C++能做吗?求算法思路??[不要求代码] 求:同日出生的人的总个数,请使用面向对象的方法,找出若干同学中,生日相同的学生总数. 提示: 1.定义类表示日期,包含私有属性年月日,重载等于操作符,用于大小比较 2.定义类表示学生,包含私有属性姓名.生日(日期类型) 输入:四个学生对象的信息,分别是姓名,年,月,日 比如 XiaoZhang 1994 5 1 XiaoWang 1994 5 1 XiaoLi 1994 6 3 XiaoChen 1994 6 3 输出