| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 868 人关注过本帖
标题:用结构体和共用体输入学生和老师的性别,编号,工作,班级,职务
只看楼主 加入收藏
wxh525123
Rank: 2
等 级:论坛游民
帖 子:38
专家分:37
注 册:2010-4-18
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:6 
用结构体和共用体输入学生和老师的性别,编号,工作,班级,职务
#include<stdio.h>
struct
{
    int num;
    char name[10];
    char sex;
    char job;
    union
    {
        int banji;
        char position[10];
        }category;
    }person[2];
void main()
{
    int i;
    printf("No. Name sex job class/position\n");
    for(i=0;i<2;i++)
    {
        scanf("%d%s%c%c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);
        if(person[i].job=='s')
            scanf("%d",&person[i].category.banji);
        else
            if(person[i].job=='t')
                scanf("%s",person[i].category.position);
            else
                printf("input error!\n");
        }
    printf("\n");
    printf("No.   Name sex job class/position\n");
    for(i=0;i<2;i++)
        if(person[i].job=='s')
            printf("%-6d%-10s%-3c%-3c%-6d\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.banji);
        else
            printf("%-6d%-10s%-3c%-3c%-6s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);
    getch();
    }
为什么编译出来输入不对呢,那个大哥帮忙看看。。谢谢了
搜索更多相关主题的帖子: 结构体 性别 职务 老师 学生 
2010-05-10 17:56
wxh525123
Rank: 2
等 级:论坛游民
帖 子:38
专家分:37
注 册:2010-4-18
收藏
得分:0 
scanf("%d%s%c%c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);去掉红色取址符也不对。这是书上的一道例题,不知道哪儿错了
2010-05-10 17:58
wxh525123
Rank: 2
等 级:论坛游民
帖 子:38
专家分:37
注 册:2010-4-18
收藏
得分:0 
scanf("%d%s %c %c",&person[i].num,person[i].name,&person[i].sex,&person[i].job);
那位大哥给解释一下%d和%s之间不用空格,而%s和%c和%c之间必须要加空格呢?不然执行错误。这是怎么回事啊??
谢谢了
2010-05-10 18:57
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
收藏
得分:4 
scanf用法参考:http://livelacm.blog.
2010-05-10 20:44
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:15 
回复 楼主 wxh525123
问题可能出在这句scanf("%d%s%c%c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);
你把这四个分别用四个scanf语句输入,应该就不会出错了。
你放在一起,很可能你作为分隔符的空格或者回车键被后面的字符串和字符给当做是输入内容给接收了。
因为回车和空格也是字符。
所以这里这么做有些不妥。

希望对你有帮助!

南国利剑
2010-05-12 02:03
xu362726904
Rank: 6Rank: 6
等 级:侠之大者
帖 子:160
专家分:471
注 册:2009-6-18
收藏
得分:6 
#include<stdio.h>
#include<stdlib.h>
main()
{
    char ch[20],chi;
    scanf("%s %c",ch,&chi);
    printf("%s,%c",ch,chi);
    scanf("%s%c",ch,&chi);
    printf("%s,%c",ch,chi);
    system("pause");
}
你可以运行看看。自己去找吧 很简单的
2010-05-12 11:04
yc2575757
Rank: 7Rank: 7Rank: 7
来 自:北京
等 级:黑侠
威 望:1
帖 子:113
专家分:522
注 册:2010-5-7
收藏
得分:5 
主要是scanf的问题~~呵呵,5楼和6楼说的很详细~~
2010-05-12 11:09
快速回复:用结构体和共用体输入学生和老师的性别,编号,工作,班级,职务
数据加载中...
 
   



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

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