山水静默 2023-01-28 20:20 采纳率: 100%
浏览 35
已结题

代码输出显示不完整,中间两个数据不显示,还有第一个数据应该是1,2。结果全部是0


#include <stdio.h>
#include<string.h>
struct
{
    int num;
    char name[20];
    char sex;
    char job;
    union
    {
        int classno;
        char position[10];
    }type;
}person[2];
void main()
{
    int i;
    for(i=0;i<2;i++)
    {
        printf("input teach or student:");
        scanf("%s,%d,%s,%c,",&person[i].job,&person[i].num,person[i].name,&person[i].sex);
        if(person[i].job=='a')
        {
            printf("input classno:");
        scanf("%d",&person[i].type.classno);
        }
        else
        if(person[i].job=='t')
        {
            printf("input job:");
        scanf("%s",person[i].type.position);
        }
        else
        {
            printf("error!");
        }
    }
    printf("\n");
    for(i=0;i<2;i++)
    {
        if(person[i].job=='a')
        {
            printf("%d ",person[i].num);
            printf("%s ",person[i].name);
            printf("%c ",person[i].sex);
            printf("%c ",person[i].job);
            printf("%d\n",person[i].type.classno);
        }
        if(person[i].job=='t')
        {
            printf("%d ",person[i].num);
            printf("%s ",person[i].name);
            printf("%c ",person[i].sex);
            printf("%c ",person[i].job);
            printf("%s\n",person[i].type.position);
        }
    }
  }

img

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-01-28 20:47
    关注

    第22行里:scanf("%s,%d,%s,%c,",&person[i].job,&person[i].num,person[i].name,&person[i].sex); 输入语句里各参数间不要用 ','逗号间隔,改为用空格间隔即可,输入语句改为:scanf(" %c %d %s %c",&person[i].job,&person[i].num,person[i].name,&person[i].sex); 即可。

    img


    修改如下,供参考:

    #include <stdio.h>
    #include<string.h>
    struct
    {
        int num;
        char name[20];
        char sex;
        char job;
        union
        {
            int classno;
            char position[10];
        }type;
    }person[2];
    void main()
    {
        int i;
        for(i=0;i<2;i++)
        {
            printf("input teach or student:");
            scanf(" %c %d %s %c",&person[i].job,&person[i].num,person[i].name,&person[i].sex);
            //scanf("%s,%d,%s,%c,",&person[i].job,&person[i].num,person[i].name,&person[i].sex);修改
            if(person[i].job=='a')
            {
                printf("input classno:");
                scanf("%d",&person[i].type.classno);
            }
            else
            if(person[i].job=='t')
            {
                printf("input job:");
                scanf("%s",person[i].type.position);
            }
            else
            {
                printf("error!");
            }
        }
        printf("\n");
        for(i=0;i<2;i++)
        {
            if(person[i].job=='a')
            {
                printf("%d ",person[i].num);
                printf("%s ",person[i].name);
                printf("%c ",person[i].sex);
                printf("%c ",person[i].job);
                printf("%d\n",person[i].type.classno);
            }
            if(person[i].job=='t')
            {
                printf("%d ",person[i].num);
                printf("%s ",person[i].name);
                printf("%c ",person[i].sex);
                printf("%c ",person[i].job);
                printf("%s\n",person[i].type.position);
            }
        }
    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月28日
  • 已采纳回答 1月28日
  • 创建了问题 1月28日

悬赏问题

  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch