| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 627 人关注过本帖
标题:一个简单的程序 有几处相同的错误 希望各位能帮帮我,感激不尽
取消只看楼主 加入收藏
亚小南
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:136
注 册:2009-11-19
结帖率:83.33%
收藏
已结贴  问题点数:40 回复次数:2 
一个简单的程序 有几处相同的错误 希望各位能帮帮我,感激不尽
程序代码:
// 学生成绩管理系统.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdlib.h"

#define N 4

typedef struct
{
    char *name;  //学生的姓名
    int num;   //学生的学号
    int score;  //学生的分数
    struct *next;
}student;

int i;

//新建函数
student * initial(student * stu)
{
    student *p,*q;
    p=(student *)malloc(sizeof(student));
    stu->next=p;
   
    for(i=1;i<=4;)
    {
        q=(student *)malloc(sizeof(student));
        printf("第%d个学生的信息:姓名  学号 分数\n");
        scanf("%c%d%d",&q->name,&q->num,&q->score);
        printf("\n");
        p=q;
        p=p->next;
        p->next=NULL;
        free(q);

    }
    free(p);
    return stu;

}


//输出函数
void print(student * stu)
{
  
    student *p;
    p=stu->next;
   
    for(i=1;(i<=4)&&(p->next);i++,p=p->next)
    {
        p=(student *)malloc(sizeof(student));
        printf("第%d个学生的信息:姓名%5c  学号%5d 分数%5d\n",i,p->name,p->num,p->score);
        free(p);
    }
}

//查找函数
void find(student * stu)
{
    int n;
    printf("按学号查找!\n");
    student *p;
    p=stu->next;
    p=(student *)malloc(sizeof(student));
    printf("查找的学号:");
    scanf("%d",&n);
    for(;p->next;p=p->next)
    {
        if(p->num==n)
        {  
            printf("查找成功\n");
            printf("此学生的信息:姓名%5c  学号%5d 分数%5d\n",p->name,p->num,p->score);
        }

    }
    if(p==NULL)
        printf("无此学生!!!\n");
    free(p);
}

//插入函数
student * insert(student * stu)
{

    student *p,*q;
    p=stu->next;
    p=q=(student *)malloc(sizeof(student));
    printf("输入插入学生的信息 姓名 学号 分数\n");
    scanf("%c%d%d",&q->name,&q->num,&q->score);
    for(;p->next;p=p->next);
    p->next=q;
    p=p->next;
    q->next=NULL;
    return stu;

}

//删除函数
student *del(student * stu)
{
    student *p,*q,*r;
    int n;
    p=stu->next;
    p=q=r=(student *)malloc(sizeof(student));
    printf("输入删除学生的姓名\n");
    scanf("%c%d%d",&q->name);
    for(;p->next;p=p->next)
    {
        if(p->num==n)
        {  
            printf("此学生的信息:姓名%5c  学号%5d 分数%5d\n",p->name,p->num,p->score);
            r=q->next;
            q->next=r->next;
        }
        q=p;

    }
    if(p==NULL)
        printf("无此学生!!!\n");
    return stu;
}



int main(int argc, char* argv[])
{
    student *stu;
    stu=(student*)malloc(N*sizeof(student));
    stu->next=NULL;
    int choice,flag=1;
    do{
   
        printf("1:输入 姓名 学号 分数 名次\n 2:输出\n 3:查找\n 4:插入\n 5:删除\n");
        scanf("%d",&choice);
        switch(choice){

       
           case 1:stu=initial(stu);
               break;
       
           case 2:print(stu);
               break;
       
           case 3:find(stu);
               break;
       
           case 4:stu=insert(stu);
               break;
       
           case 5:stu=del(stu);
               break;
            printf("是否继续 1:是    0:否\n");
            scanf("%d",&flag);

        }
    }while(flag);
    printf("Hello World!\n");
    return 0;
}

本人对内存的分配不是很清楚
链表也不是很好
写了个程序  出现得都是相同的错误
希望各位能够帮帮我
我会很感激的
搜索更多相关主题的帖子: 感激不尽 
2010-04-25 21:59
亚小南
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:136
注 册:2009-11-19
收藏
得分:0 
好像问题还没有解决呢
运行的时候还是有错误啊
2010-04-26 20:58
亚小南
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:136
注 册:2009-11-19
收藏
得分:0 
回复 6楼 NOMIPS
我用的是VC6.0
运行的时候应该是出现了内存错误
我在内存这方面不是很懂
2010-04-27 10:20
快速回复:一个简单的程序 有几处相同的错误 希望各位能帮帮我,感激不尽
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022446 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved