huhuhu12138 发表于 2017-12-27 16:00:36

共用体类型的,输出及格人数,为什么错了啊

#include<stdio.h>
#define M 100
typedef struct abu
{
    int num;
    char name;
    int age;
    union
    {
      char degree;
      int grade;
    }score;
}emploree;
int main()
{
    int n,h=0,i;
    scanf("%d",&n);
    emploree s;
    for(i=0;i<n;i++)
    {
      scanf("%d%s%d",&s.num,s.name,&s.age);
      if(s.age>30)
          {
            scanf("%c",s.score.degree);
            if(s.score.degree<='C')
               h++;
          }
      else
      {
            scanf("%d",s.score.grade);
      if(s.score.grade>=60)
         {
               h++;
         }
      }
    }
    printf("%d",h);
    return 0;
}
{:10_266:} {:10_277:}

BngThea 发表于 2017-12-27 16:06:46

哪里报的错,你也一块贴出来

huhuhu12138 发表于 2017-12-27 16:31:47

就是运行不了,一运行就显示exe已停止工作

新建word 发表于 2017-12-27 23:11:04

首先你 编译应该不不会通过的 ,你所谓的共用体初始化 不能用 变量初始化的为了安全。
其次 除了前两个 scanf你使用了 取地址& 符号,其余一概没用取地址 程序肯定崩溃!

18123988006 发表于 2017-12-27 23:12:40

scanf("%c",&s.score.degree);
scanf("%d",s.score.grade);
取址号没有,加上去试试

18123988006 发表于 2017-12-27 23:13:20

scanf("%c",&s.score.degree);
scanf("%d",&s.score.grade);
这两行取址号没有,加上去试试

huhuhu12138 发表于 2017-12-28 10:53:11

18123988006 发表于 2017-12-27 23:13
scanf("%c",&s.score.degree);
scanf("%d",&s.score.grade);
这两行取址号没有,加上去试试

嗯嗯对了,谢谢{:10_297:}
页: [1]
查看完整版本: 共用体类型的,输出及格人数,为什么错了啊