#include <stdio.h> #include <string.h> int main() { struct person{ char name[20]; long int num; char sex; char pro[20]; union { int class_num; char duty[20]; }special; }; int n; printf("请输入人数:"); scanf("%d",&n); struct person per[n]; int i; for(i=0;i<n;i++) { printf("请输入人员信息 \n姓名:"); scanf("%s",per[i].name); printf("号码:"); scanf("%ld",&per[i].num); printf("性别:"); scanf("%c",&per[i].sex); printf("职业:"); scanf("%s",per[i].pro); if(strcmp(per[i].pro , "学生")==0) { printf("班级:"); scanf("%d",&per[i].special.class_num);} else { printf("职务:"); scanf("%s",per[i].special.duty);} } printf("人员信息如下\n"); for(i=0;i<n;i++) { printf("姓名:%s\n",per[i].name); printf("号码:%ld\n",per[i].num); printf("性别:%c\n",per[i].sex); printf("职业:%s\n",per[i].pro); if(strcmp(per[i].pro,"学生")==0){ printf("班级:%s",per[i].special.class_num);} else printf("职务:%s",per[i].special.duty); } }这个程序会同时输出性别和职业,怎么改正
时间: 2024-01-23 19:03:43 浏览: 29
可以在读取性别的scanf前加一个getchar(),来清除输入缓冲区中的回车符。另外,在输出班级和职务时,应该使用% d或% s来输出整型和字符串类型,而不是使用%s输出整型。
修改后的程序代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
struct person {
char name[20];
long int num;
char sex;
char pro[20];
union {
int class_num;
char duty[20];
} special;
};
int n;
printf("请输入人数:");
scanf("%d", &n);
struct person per[n];
int i;
for (i = 0; i < n; i++) {
printf("请输入人员信息 \n姓名:");
scanf("%s", per[i].name);
printf("号码:");
scanf("%ld", &per[i].num);
getchar();
printf("性别:");
scanf("%c", &per[i].sex);
printf("职业:");
scanf("%s", per[i].pro);
if (strcmp(per[i].pro, "学生") == 0) {
printf("班级:");
scanf("%d", &per[i].special.class_num);
} else {
printf("职务:");
scanf("%s", per[i].special.duty);
}
}
printf("人员信息如下\n");
for (i = 0; i < n; i++) {
printf("姓名:%s\n", per[i].name);
printf("号码:%ld\n", per[i].num);
printf("性别:%c\n", per[i].sex);
printf("职业:%s\n", per[i].pro);
if (strcmp(per[i].pro, "学生") == 0) {
printf("班级:%d\n", per[i].special.class_num);
} else {
printf("职务:%s\n", per[i].special.duty);
}
}
}
```
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![image/gif](https://img-home.csdnimg.cn/images/20210720083352.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)