|
5鱼币
- #include<stdio.h>
- struct
- {
- int num;
- char name[10];
- char sex;
- char job;
- union
- {
- int banji;
- char position[10];
- }category;
- }preson[2];
- void main()
- {
- int i;
- for(i=0;i<2;i++)
- {
- printf("input num\n");
- scanf("%d",&preson[i].num);
- printf("input name\n");
- scanf("%s",preson[i].name);
- printf("input sxe M/F\n");
- scanf("%c",&preson[i].sex);
- printf("input S/T,job\n");
- scanf("%c",&preson[i].job);
- if(preson[i].job=='S')
- {
- printf("input class\n");
- scanf("%d",&preson[i].category.banji);
- }
- if(preson[i].job=='T')
- {
- printf("input zhiwu\n");
- scanf("%s",&preson[i].category.position);
- }
- else
- {
- printf("error!!\n");
- }
- }
- printf("No. name sex job class/position\n");
- for( i=0; i < 2; i++ )
- {
- if( preson[i].job == 'S')
- {
- printf("%-6d%-10s%-3c%-3c%10d\n", preson[i].num,
- preson[i].name, preson[i].sex, preson[i].job,
- preson[i].category.banji);
- }
- else
- {
- printf("%-6d%-10s%-3c%-3c%10s\n", preson[i].num,
- preson[i].name, preson[i].sex, preson[i].job,
- preson[i].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,好好看下问题所在 ...
|