zoukankan      html  css  js  c++  java
  • 结构变量输入不正确的顺序可能会导致不正确的操作结果

    写一个程序,需求:由...制作3单向动态列表学生数据节点配置,输入学生数据向每个节点

    (每个学生的数据包含学号、全名、成就)。每个节点然后逐个输出数据。

    正确的程序,如下面的:

    #include<stdio.h>
    #include<malloc.h>
    #define LEN sizeof(struct student)


    struct student
    {
     int num;
     char name[20];
     float score;
     struct student *next;
    } ;


    void main()
    {
     struct student *head,*p,*q;
     head=p=(struct student*) malloc(LEN);
     scanf("%d,%f,%s",&p->num,&p->score,p->name);
     p=(struct student*) malloc(LEN);
     scanf("%d,%f,%s",&p->num,&p->score,p->name);
     q=(struct student*) malloc(LEN);
     scanf("%d,%f,%s",&q->num,&q->score,q->name);
     head->next=p;
     p->next=q;

    q->next=NULL;




     p=head;
     printf(" 结点 1:%d,%5.1f,%s",p->num,p->score,p->name);
     p=p->next;
     printf(" 结点 2:%d,%5.1f,%s",p->num,p->score,p->name);
     q=p->next;
     printf(" 结点 3:%d,%5.1f,%s ",q->num,q->score,q->name);


    }

    执行结果为:

    输入:

    10101,98,li
    10102,87,wang
    10103,76,qi
    输出:

    结点 1:10101, 98.0,li
    结点 2:10102, 87.0,wang
    结点 3:10103, 76.0,qi

    错误的程序例如以下:

    #include<stdio.h>
    #include<malloc.h>
    #define LEN sizeof(struct student)


    struct student
    {
     int num;
     char name[2];
     float score;
     struct student *next;
    } ;


    void main()
    {
     struct student *head,*p,*q;
     head=p=(struct student*) malloc(LEN);
     scanf("%d,%s,%f",&p->num,p->name,&p->score);
     p=(struct student*) malloc(LEN);
     scanf("%d,%s,%f",&p->num,p->name,&p->score);
     q=(struct student*) malloc(LEN);
     scanf("%d,%s,%f",&q->num,q->name,&p->score);
     head->next=p;
     p->next=q;

    q->next=NULL;




     p=head;
     printf(" 结点 1:%d,%5.1f,%s",p->num,p->score,p->name);
     p=p->next;
     printf(" 结点 2:%d,%5.1f,%s",p->num,p->score,p->name);
     q=p->next;
     printf(" 结点 3:%d,%5.1f,%s ",q->num,q->score,q->name);


    }
    执行结果为:

    输入:

    10101,wang,,98
    10102,wani,,87
    10103,wangx,,76

    输出:
    结点 1:10101,  0.0,wang,,98 p�
    结点 2:10102,  0.0,wani,,878p�
    结点 3:10103,  0.0,wangx,,7

    想要得到的结果应该为

    结点 1:10101,  98.0,wang,
    结点 2:10102,  87.0,wani,
    结点 3:10103,  76.0,wangx,


    假设将想要输入的字符串数组放在输入的中间,就极有可能导致

    在输入完字符串之后,还会将接下来输入的内容输入到字符串中,

    会导致输出值发生混乱,得不到想要的结果,因而,最好将字符串

    输入參数放在參数列表的最后,这样它有可能避免输出错误。


    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    SharePoint 2013 商务智能报表发布
    sharepoint designer web 服务器似乎没有安装microsoft sharepoint foundation
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 入门教程之创建及修改母版页
    SharePoint 2013 入门教程之创建页面布局及页面
    SharePoint 2010 级联下拉列表 (Cascading DropDownList)
    使用SharePoint Designer定制开发专家库系统实例!
    PL/SQL Developer 建立远程连接数据库的配置 和安装包+汉化包+注册机
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4653771.html
Copyright © 2011-2022 走看看