| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 901 人关注过本帖
标题:C的指针真的是号难用啊.老是出错.
只看楼主 加入收藏
新人学习
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:145
专家分:187
注 册:2017-10-26
结帖率:66.67%
收藏
 问题点数:0 回复次数:1 
C的指针真的是号难用啊.老是出错.
//总是提示断点 内存冲突
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Dangan
{
    char name[20];
    char xingbie[4];
    char ban;
    char ji;
    unsigned int chengji[3];
    unsigned int zongfen;
    double pingjun;
    unsigned int mingci;
    struct Dangan *next;
};

void zhuce(struct Dangan* &_head,struct Dangan* &_p1,struct Dangan* &_p2)
{
    int i,m;
    _p1 = (struct Dangan*)malloc(sizeof(struct Dangan));
    if(_head == NULL)
    {
        _head = _p1;
        _head->next = NULL;
        _p2 = _p1;
    }
    else
    {
        _p2->next = _p1;          //好像断点在这里
        _p2 = _p1;
        _p2->next = NULL;
    }
    printf("输入学生姓名:");          //学生姓名输入
    fgets(_p1->name,19,stdin);
    i = 1;
    while(_p1->name[i-1] != '\0')
    {
        if(_p1->name[i] == '\n')
            _p1->name[i] = '\0';
        i++;
    }
   

    printf("输入学生性别(男或女):");    //学生性别输入
    scanf("%s",_p1->xingbie);
    while(getchar()!='\n');
    while(strcmp(_p1->xingbie,"男")!=0 && strcmp(_p1->xingbie,"女")!=0)
    {
        printf("输入学生性别(男或女):");
        scanf("%s",_p1->xingbie);
        while(getchar()!='\n');
    }
    printf("%s在几年级:",_p1->name);  //学生上几年级
    scanf("%c",&_p1->ji);
    while(getchar()!='\n');
    printf("%s在%c年级几班:",_p1->name,_p1->ji);  //学生在几班
    scanf("%c",&_p1->ban);
    while(getchar()!='\n');
    printf("%s在%c年级%c班.\n",_p1->name,_p1->ji,_p1->ban);

    printf("输入%s同学的语文成绩:",_p1->name);                //语文 数学 英语 三门课程
    while((m = scanf("%d",&_p1->chengji[0])) != 1 && _p1->chengji[0] < 0 || _p1->chengji[0] > 100)
    {
        if(m != 1)
            scanf("%*s");
        printf("请输入0-100之间的整形类型的数字:");
    }
    printf("输入%s同学的数学成绩:",_p1->name);
    while((m = scanf("%d",&_p1->chengji[1])) != 1 && _p1->chengji[1] < 0 || _p1->chengji[1] > 100)
    {
        if(m != 1)
            scanf("%*s");
        printf("请输入0-100之间的整形类型的数字:");
    }
        printf("输入%s同学的英语成绩:",_p1->name);
    while((m = scanf("%d",&_p1->chengji[2])) != 1 && _p1->chengji[2] < 0 || _p1->chengji[2] > 100)
    {
        if(m != 1)
            scanf("%*s");
        printf("请输入0-100之间的整形类型的数字:");
    }
    _p1->zongfen = _p1->chengji[0] + _p1->chengji[1] + _p1->chengji[2];  //学生总分
    _p1->pingjun = (double)_p1->zongfen / 3.0;              //学生平均分数

    printf("%s是%s同学,在%c年级%c班,语文成绩是%d,\n数学成绩是%d,英语成绩是%d,总分是%d,平均分数是%.2lf.\n",
           _p1->name,_p1->xingbie,_p1->ji,_p1->ban,_p1->chengji[0],_p1->chengji[1],_p1->chengji[2],_p1->zongfen,_p1->pingjun);


   

}

void Display(struct Dangan *_p1)     //显示档案所有内容
{
   
    while(_p1->next != NULL)
    {
            printf("%s是%s同学,在%c年级%c班,语文成绩是%d,\n数学成绩是%d,英语成绩是%d,总分是%d,平均分数是%.2lf.\n",
           _p1->name,_p1->xingbie,_p1->ji,_p1->ban,_p1->chengji[0],_p1->chengji[1],_p1->chengji[2],_p1->zongfen,_p1->pingjun);
           _p1 = _p1->next;
    }


}

void Display1(struct Dangan *p)
{
    while(p->next != NULL)
    {
            printf("%p\n",p);
            p = p->next;
    }
}
int main()
{
    struct Dangan *head,*p1,*p2;
    zhuce(head,p1,p2);
    Display(head);



    system("pause");
    return 0;
}
搜索更多相关主题的帖子: struct name printf 输入 while 
2018-01-31 21:45
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
主函数中修改

struct Dangan *head=NULL, *p1=NULL, *p2=NULL;


图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2018-1-31 23:23编辑过]


早知做人那么辛苦!  当初不应该下凡
2018-01-31 23:22
快速回复:C的指针真的是号难用啊.老是出错.
数据加载中...
 
   



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

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