共用体问题
#include<stdio.h>struct
{
int num;
char name;
char sex;
char job;
union
{
int banji;
char position;
}category;
}preson;
void main()
{
int i;
for(i=0;i<2;i++)
{
printf("input num\n");
scanf("%d",&preson.num);
printf("input name\n");
scanf("%s",preson.name);
printf("input sxe M/F\n");
scanf("%c",&preson.sex);
printf("input S/T,job\n");
scanf("%c",&preson.job);
if(preson.job=='S')
{
printf("input class\n");
scanf("%d",&preson.category.banji);
}
if(preson.job=='T')
{
printf("input zhiwu\n");
scanf("%s",&preson.category.position);
}
else
{
printf("error!!\n");
}
}
printf("No. name sex job class/position\n");
for( i=0; i < 2; i++ )
{
if( preson.job == 'S')
{
printf("%-6d%-10s%-3c%-3c%10d\n", preson.num,
preson.name, preson.sex, preson.job,
preson.category.banji);
}
else
{
printf("%-6d%-10s%-3c%-3c%10s\n", preson.num,
preson.name, preson.sex, preson.job,
preson.category.position);
}
}
}运行没报错,貌似 逻辑也没错误,就是 运行结果不知道为什么会错, VC++6.0
第一个问题:scanf("%c",&preson.sex);这句和scanf("%c",&preson.job);这句。在C语言中,当输入字符时,会把你前面的那个回车当最字符,所以你读取的是回车,不是字符,可以有多种解决办法,一种在输入前面加个getchar();吃掉回车符;一种是用getche函数,还有其他的我就不介绍了。
第二个问题:你的if(preson.job=='S')和if(preson.job=='T')和else这3句句有个逻辑错误,如果你输入的是s无论如何都会error,好好看下问题所在。是不是该改为else if。
最后给你一句话,不怕错误,就怕没错误。 拿编译器自己一步步调试。 楼主啊 谁喜欢帮你一句一句找错误啊 建议你 写上尽可能详细的注释 你的整体思路 和出现什么错误
不要只说有错误然后 给出一堆代码就完了 牛头的主人 发表于 2014-1-24 00:02 static/image/common/back.gif
第一个问题:scanf("%c",&preson.sex);这句和scanf("%c",&preson.job);这句。在C语言中,当输入字符时,会把 ...
谢谢了,我 了解了 回了,, 新年快乐{:{:1_1:} 支持小甲鱼,赞点鱼币回来下载 在纠结楼主这问题好久也没弄出来。求楼主贴出完整能运行的代码~谢谢
#include<stdio.h>
struct
{
int num;
char name;
char sex;
char job;
union
{
int banji;
char position;
}category;
}person;
void main()
{
int i;
char *a={"student","teacher"};
for(i=0;i<2;i++)
{
printf("请输入号码: ");
scanf("%d",&person.num);
printf("请输入姓名: ");
scanf("%s",&person.name);
printf("请输入性别 male or female:\t");
scanf("%s",&person.sex);
CIN: printf("请输入职业 teacher or student:\t");
scanf("%s",&person.job);
if(*(person.job) == *a)
{
printf("请输入班级: ");
scanf("%d",&person.category.banji);
}
else if(*(person.job) == *a)
{
printf("请输入职务: ");
scanf("%s",&person.category.position);
}
else
{
printf("输入错误\n");
goto CIN;
}
}
printf("\n\n");
for(i=0;i<2;i++)
{
if(*(person.job) == *a)
{
printf("号码\t:%d\n",person.num);
printf("姓名\t:%s\n",person.name);
printf("性别\t:%s\n",person.sex);
printf("职位\t:%s\n",person.job);
printf("班别\t:%d\n",person.category.banji);
printf("\n\n");
}
else
{
printf("号码\t:%d\n",person.num);
printf("姓名\t:%s\n",person.name);
printf("性别\t:%s\n",person.sex);
printf("职位\t:%s\n",person.job);
printf("职务\t:%s\n",person.category.position);
}
}
}
页:
[1]