当前位置: 代码迷 >> C语言 >> 折磨我N久的一道貌似很简单的一道题!一个菜鸟的疑问
  详细解决方案

折磨我N久的一道貌似很简单的一道题!一个菜鸟的疑问

热度:304   发布时间:2007-04-11 08:43:11.0
折磨我N久的一道貌似很简单的一道题!一个菜鸟的疑问
#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;
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!");
}
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%-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);
}
}
输入 101 li f s 501
102 wang m t professor
应该输出 No. Name sex job class/position
101 li f s 501
102 wang m t professor
可是怎么就不对呢!!!!我都纳闷两天了!
搜索更多相关的解决方案: 疑问  折磨  

----------------解决方案--------------------------------------------------------
不知道 你用共用体是什么意思
我帮你改了一下,你看看这个合你的意思不:
#include<stdio.h>
struct
{int num;
char name[10];
char sex[10];
char job[10];
char banji[10];
char position[10];
}person[2];
void main()
{int i;
char str[10];

for(i=0;i<2;i++)

{printf("input the information of number %d!\nNo. Name sex job class/position\n",i+1);
scanf("%d%s%s%s%s",&person[i].num,person[i].name,person[i].sex,person[i].job,str);
if(*person[i].job=='s')
strcpy(person[i].banji,&str);
else if(*person[i].job=='t')
strcpy(person[i].position,&str);
else printf("input error!");
}
printf("\n");
printf("No. Name sex job class/position\n");
for(i=0;i<2;i++)
{if(*person[i].job=='s')
printf("%-6d%-6s%-3s%-6s%-5s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].banji);
else if(*person[i].job=='t')
printf("%-6d%-6s%-3s%-6s%-5s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].position);
}
getch();
}

----------------解决方案--------------------------------------------------------
scanf("%d%s%c%c",&person[i].num,person[i].name,&person[i].sex,&person[i].job);
感觉这里有问题,其它没有看。后面会吃掉回车,注意%s%c这个。
----------------解决方案--------------------------------------------------------
  相关解决方案