| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 457 人关注过本帖
标题:第一轮输入数据没问题,但是第二轮就跳过前两个直接到第三个了,求高手帮忙
只看楼主 加入收藏
mcf0419
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2010-5-26
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
第一轮输入数据没问题,但是第二轮就跳过前两个直接到第三个了,求高手帮忙
程序代码:
#include<stdio.h>
#include<malloc.h>
#include <stdlib.h> 

typedef struct student
{
    int mum;
    char name[20];
    int age;
    char sex[5];//w and M
//   int birthday[2];
//    char address[50];
//    int photo;
//    char Email[20];
    struct student *next;
}st;

int n;

st *creat(void)
{
    void scan(st *q);
    st *head;
    st *p1,*p2;
    p1=p2=(st *)malloc(sizeof(st));
    scan(p1);
    head=NULL;
    while((*p1).mum!=0)
    {
        n=n+1;
        if(n==1)head=p1;
            else p2->next=p1;
            p2=p1;
            p1=(st *)malloc(sizeof(st));
            scan(p1);
    }
    p2->next=NULL;
    return(head);
}

void scan(st *q)
{
    printf("请输入学号");
    scanf("%d",&(*q).mum);

    printf("输入姓名");
    scanf("%s",(*q).name);
   
    printf("请输入年龄");
    scanf("%d",&(*q).age);
   
    printf("请输入性别");
    scanf("%c",(*q).sex);

/*    printf("请输入出生年月(年-月-日)");
    scanf("%d-%d-%d",(*q).birthday[0],(*q).birthday[1],(*q).birthday[2]);
    printf("请输入家庭住址");
    scanf("%f",(*q).address);
    printf("请输入电话号码");
    scanf("%d",(*q).photo);
    printf("请输入E-mail");
    scanf("%f",(*q).Email); */
}

void print(st *m)
{
    printf("mum   name   age  sex   ");
    printf( "%4d  %s    %2d    %s ",(*m).mum,(*m).name,(*m).age,(*m).sex);
}

void print1(st *head)
{
   
    st *k;
    k=head;
    if(head!=NULL)
        do
        {
            print(k);
            k=k->next;
        }while(k!=NULL);

}

void main()
{
    st *head;
    head=creat();
    print1(head);
}

第一轮输入数据没问题,但是第二轮就跳过前两个直接到第三个了。。有人知道是怎么回事吗?帮忙指正一下谢谢
 
 

[ 本帖最后由 mcf0419 于 2010-5-27 09:34 编辑 ]
搜索更多相关主题的帖子: 数据 输入 
2010-05-26 23:00
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:20 
程序代码:
    printf("请输入年龄");
    scanf("%d",&(*q).age);

    fflush(stdin);

    printf("请输入性别");
    scanf("%c",(*q).sex);
输入年龄时,一般是敲进数字加一个回车符。数字部分被age读走,而回车符仍然留在输入缓冲区内。所以sex就会自动读入这个回车符了。加上fflush(stdin);清一下输入缓冲区就可以了。

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2010-05-27 09:38
mcf0419
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2010-5-26
收藏
得分:0 
多谢,但是输出又有问题了,性别部分不能正确输出,而且后面有乱码再次求教
2010-05-27 17:39
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:0 
printf("请输入性别");
scanf("%c",(*q).sex);
其中%c改成%s就可以了

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2010-05-27 18:17
快速回复:第一轮输入数据没问题,但是第二轮就跳过前两个直接到第三个了,求高手 ...
数据加载中...
 
   



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

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