鱼C论坛

 找回密码
 立即注册
查看: 3451|回复: 2

帮菜鸟分析一下,VC的编译器。。程序编译完全正确,运行后debug error。

 关闭 [复制链接]
发表于 2011-6-28 18:08:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 xurui71 于 2011-6-30 08:02 编辑


                               
登录/注册后可看大图
Debug Error! runtime error (press retry to debug the application)。这是错误的内容。
单步调试时在scanf("%f",&p1->score)这里就出现错误。程序是这样的:
#include <stdio.h>
#include <malloc.h>
#define LEN sizeof(struct student)//结构体长度
struct student
{
    int num;
    float score;
    struct student *next;
};
struct student *creat();//创建链表
struct student *del(struct student *head);//删除链表
struct student *insert(struct student *head);//插入链表
void print(struct student *head);//打印链表
int n=0;//定义全局变量,链表单元数量
void main()
{
    struct student *stu;
    stu=creat();//创建
    print(stu);//打印
    stu=del(stu);//删除
    print(stu);//打印
    stu=insert(stu);//插入
    print(stu);//打印
}
struct student *creat()//创建链表函数
{
    struct student *head,*p1,*p2;
   
    p1=p2=head=(struct student *)malloc(LEN);
   
    printf("please enter the num: ");
    scanf("%d",&p1->num);
   
    if(0==p1->num)
    {
        p2=NULL;
    }
   
    while(0!=p1->num)
    {   
        n++;
        printf("please enter the score: ");   
        scanf("%f",&p1->score);//单步调试在这里就出错了,我用的是VC++6.0编译器。第一次遇到debug错误,无从下手。
        
        p1=p2;
        p1=(struct student *)malloc(LEN);
        p2->next=p1;
        printf("please enter the num: ");
        scanf("%d",&p1->num);
    }
    if(head!=NULL&&0==p1->num)
    {
        p2->next=NULL;
    }
    return head;
}
struct student *del(struct student *head)//删除链表
{
    struct student *p1,*p2;
    int num=1;
    p1=p2=head;
   
    while(num)
    {
        printf("please enter the delete num: ");
        scanf("%d",&num);
        if(0!=num)
        {
            n--;
            if(num==p1->num)
            {
                p1=p1->next;
            }
            else
            {
                while(num!=p1->num&&p1!=NULL)               
                {               
                    p1=p1->next;               
                    p2=p1;               
                }            
                if(num==p1->num)               
                {               
                    p2->next=p1->next;
                }
                else if(p1==NULL)
                {
                    printf("do not find the num!\n");
                }
            }
        }
    }
    return head;
}
struct student *insert(struct student *head)//插入链表函数
{
    struct student *p1,*p2,*stu_d;
   
    stu_d=(struct student *)malloc(LEN);
    stu_d->num=1;
    while(stu_d->num)
    {   
        printf("please enter the insert num: ");
        scanf("%d",&stu_d->num);
        p1=p2=head;
        while(0!=&stu_d->num)
        {   
            n++;
            printf("please enter the insert score: ");   
            scanf("%f",&stu_d->score);
            
            if(stu_d->num<head->num)
            {
                stu_d->next=head;
                head=stu_d;
            }
            else if(stu_d->num==head->num)
            {
                printf("the num is included!!\n");
            }
            else
            {
                while(stu_d->num>p1->num&&p1->next!=NULL)
                {
                    p2=p1;
                    p1=p1->next;
                }
                if(stu_d->num==p1->num)
                {
                    printf("the num is included!!\n");
                }
                else if(stu_d->num<p1->num)
                {
                    p2->next=stu_d;
                    stu_d->next=p1;
                }
                else if(stu_d->num>p1->num)
                {
                    p1->next=stu_d;
                    stu_d->next=NULL;
                }
            }
        }
    }
    return head;
}
void print(struct student *head)//打印链表函数
{
    while(head)
    {
        printf("num=%d\tscore=%5.2f\n");
        head=head->next;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-28 22:31:49 | 显示全部楼层
我也没学- - 楼主做的是链表么- -
不过帮楼主百度到了
嘿嘿 MSDN上面说是浮点数据库连接问题  这个应该是vc的问题吧  只要在scanf(“%f”)前面加个浮点运算以便告诉连接器 把浮点数据库连接起来   
MSDN可是个好地方- -   
下面是原文地址
http://topic.csdn.net/t/20050831/11/4241621.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-29 07:55:14 | 显示全部楼层
本帖最后由 xurui71 于 2011-6-29 08:45 编辑
服气 发表于 2011-6-28 22:31
我也没学- - 楼主做的是链表么- -
不过帮楼主百度到了
嘿嘿 MSDN上面说是浮点数据库连接问题  这个应该是 ...


谢谢啊。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 06:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表