随笔 - 56, 文章 - 0, 评论 - 0, 引用 - 0
数据加载中……

错误示例

①请看下面两段代码,区别问题所在:
条件:
struct jcb{
    
char j_name[10];
    
double j_hand;
    
double j_need_time;
    
int j_resources;
    
char j_state;
    
struct jcb *j_pnext;
}
*ready=NULL,*pjcb;
typedef 
struct jcb JCB;

代码一:
        int i=0;
    JCB 
*p;
    printf(
"请输入你要测试的作业数 :");
    scanf(
"%d",&NUM);

        p
=GETJCB(JCB);
    printf(
"请输入要测试的作业的名字(不超过10个字符) :");
    scanf(
"%s",&p->j_name);
    printf(
"请输入服务时间 :");
    scanf(
"%d",&p->j_need_time);
        
    p
->j_resources=RESOURCES;
    p
->j_state='R';
    ready
=p;
    p
->j_pnext=NULL;
        
        
if(ready!=NULL)
    
for(;i<NUM-1;i++)
    
{
        p
=GETJCB(JCB);
        printf(
"请输入要测试的作业的名字(不超过10个字符) :");
        scanf(
"%s",&p->j_name);
        printf(
"请输入服务时间 :");
        scanf(
"%d",&p->j_need_time);
        
        p
->j_resources=RESOURCES;
        p
->j_pnext=NULL;
    }

代码二:
    int i=0;
    JCB 
*p;
    printf(
"请输入你要测试的作业数 :");
    scanf(
"%d",&NUM);

    pjcb
=GETJCB(JCB);
    printf(
"请输入要测试的作业的名字(不超过10个字符) :");
    scanf(
"%s",&pjcb->j_name);
    printf(
"请输入服务时间 :");
    scanf(
"%d",&pjcb->j_need_time);
        
    pjcb
->j_resources=RESOURCES;
    pjcb
->j_state='R';
    ready
=pjcb;
    pjcb
->j_pnext=NULL;
        
   
if(ready!=NULL)
    
for(;i<NUM-1;i++)
    
{
        p
=GETJCB(JCB);
        printf(
"请输入要测试的作业的名字(不超过10个字符) :");
        scanf(
"%s",&p->j_name);
        printf(
"请输入服务时间 :");
        scanf(
"%d",&p->j_need_time);
        
        p
->j_resources=RESOURCES;
        p
->j_pnext=NULL;
        
        pjcb
->j_pnext=p;
        pjcb
=pjcb->j_pnext;
    }

如果你拿下面的代码来测试上面两段的话可以发现问题:
        while(ready!=NULL)
    
{
        printf(
"%s\n",ready);
        ready
=ready->j_pnext;
    }

问题的所在就是代码一只是把作业的内容填充到内存,但并没有把结构的j_pnext把各个单元串起来,所以当测试的时候只能显示第一个,不能显示第二个,因为
ready->j_pnext指针发现不了下一个单元格的开始位置。
而代码而就已经把各个单元的顺序都串起来了。
请看图:

                图1                                         图2               
图1对应代码1结果
图2对应代码2结果

以上出现的问题只供参考,错误难免,谢谢!

posted on 2010-04-24 16:46 八路 阅读(169) 评论(0)  编辑 收藏 引用 所属分类: C语言


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理