|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是我写的代码,编译没问题,运行有问题,用的是devc++编译器;
等级不够 贴不了图~~真心请教 没遇到过这种情况。。
#include<stdio.h>
struct person //结构体
{
int num;
char name[20];
char sex;
char job;
union //共用体
{
int banji;
char position[10];
}category;
};
struct person person[2]; //预设一名老师一名学生
int main()
{
int i;
for(i=0;i<2;i++)
{
printf("请输入学号或学工号:");
scanf("%d",&person[i].num);
printf("请输入姓名:"); //问题大概出现在这里 我有点搞不清gets和scanf的区别了 我发不了图 发不了运行图我把它复制在了下面~
gets(person[i].name);
printf("请输入性别(M/F):");
scanf("%c",&person[i].sex);
printf("请输入职业(S/T):");
scanf("%c",&person[i].job);
if(person[i].job=='S') //这样可以实现共用体的调用吗?
{
printf("请输入班级:");
scanf("%d",&person[i].category.banji);
}
else
{
printf("请输入职位:");
scanf("%d",&person[i].category.position);
}
}
printf("\t学号/学工号\t姓名\t性别\t职业\t班级/职位\n"); //以表格形式输出录入数据 没仔细排版~
for(i=0;i<2;i++)
{
if(person[i].job=='S')
{
printf("\t%d\t%s\t%c\t%c\t%d\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.banji);
}
else
{
printf("\t%d\t%s\t%c\t%c\t%s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);
}
}
}
/*************************************************************************************************************/
运行情况~~头一回遇到这种情况~
请输入学号或学工号: 101
请锁入姓名:请输入性别(M2F) : M //这里姓名输入直接跳过了????
请输入职业(S/T):请输入职位: dgsd //职业输入业跳过了???
请输入学号或学工号:请输人姓名:请输入性别(M/F) : F请输入职业(ST) :请输入职位5454 //到了第二次循环更离谱。。。
学号/学工号 姓名 性别 职业 班级/职位 //输出情况。。。一塌糊涂。。
101 M
0 dgsd F NULL
Process exited after 25.93 seconds with return ualue 0请按任意键继续。
scanf 接到完值后,最后还有一个 \n, 下次scanf 遇到\n(出错)则会跳过
scanf函数返回成功读入的数据项数, 读入数据时遇到了“文件结束”则返回EOF。
清除键盘缓冲区数据
while (getchar()!='\n') continue;
- printf("请输入学号或学工号:");
- scanf("%d",&person[i].num);
- while (getchar()!='\n') continue;
-
- printf("请输入姓名:"); //问题大概出现在这里 我有点搞不清gets和scanf的区别了 我发不了图 发不了运行图我把它复制在了下面~
- gets(person[i].name);
-
- printf("请输入性别(M/F):");
- scanf("%c",&person[i].sex);
- while (getchar()!='\n') continue;
-
- printf("请输入职业(S/T):");
- scanf("%c",&person[i].job);
- while (getchar()!='\n') continue;
-
- if(person[i].job=='S') //这样可以实现共用体的调用吗?
- {
- printf("请输入班级:");
- scanf("%d",&person[i].category.banji);
- }
- else
- {
- printf("请输入职位:");
- scanf("%d",&person[i].category.position);
- }
- while (getchar()!='\n') continue;
复制代码
|
|