情報

##情報
タイトルの説明に                            
                        
                        
                            
    は、学生や教師を含む複数の人のデータが含まれています。学生のデータには、数、名前、性別、職業、クラスが含まれます。教師のデータには、番号、名前、性別、職業、役職が含まれます。生徒と教師に含まれるデータが異なることがわかります。ここで、構造体の共用体を使用して、これらのデータを同じテーブルに格納する必要があります。構造は次のように定義されています。

構造体{

    int num;

    文字名[10];

    チャーセックス;

    charジョブ;

    ユニオン{

        intクラス;

        char position [10];

    }カテゴリー;

};

上記の構造で、ジョブアイテムがs(学生)の場合、5番目のアイテムはクラス(クラス)です。ジョブアイテムがt(教師)の場合、5番目のアイテムは位置(位置)です。

複数の人のデータを入力し、ユニオンを含む上記の構造体配列に保存して出力します。
入る    

最初の行には整数nがあります。これは、次のn行がそれぞれn人のデータを表すことを意味します。nが100を超えないようにしてください。

次のn行では、各行にスペースで区切られた5つの項目があります。最初の4つの項目は、人の番号(整数)、名前(9を超えないスペースのない文字列)、性別(文字、mまたはf)、および職業(文字、sまたはt)です。4番目の項目がsの場合、5番目の項目はクラスを示す整数です。4番目の項目がtの場合、5番目の項目はスペースを含まない長さが9以下の文字列であり、位置を示します。
    
出力                
    は入力と同じフォーマットで合計n行あり、読み込まれたすべての内容が出力されます。

行末出力に注意してください。
                        
サンプル入力                        
                        
2
101 Liが501 fsは
102王MTの教授を

サンプル出力                                    

101 Li fs 501
102 Wang mt prof

 

共用体アクセス方式、共用体変数名。内部変数名
 

#include <bits/stdc++.h>

using namespace std;
struct staff
{
	char name[20];
	int num;
    char job;
	char sex;
	union{
		int classes;
		char position[10];
	}category;
	
}*stu;
int main() {

	int n;
	scanf("%d",&n);

	while(n--)
	{
		
		scanf("%d %s %c %c",&stu->num,stu->name,&stu->sex ,&stu->job);
		if(stu->job=='s')
		{
			scanf("%d",&stu->category.classes);
			printf("%d %s %c %c %d\n",stu->num,stu->name,stu->sex ,stu->job,stu->category.classes);
		}
		else
		{
			scanf("%s",stu->category.position);
		
		printf("%d %s %c %c %s\n",stu->num,stu->name,stu->sex ,stu->job,stu->category.position);
		
		}
	 } 
	
	
	return 0;
}

何が問題になっていますか?、アドバイスを求める(+ _ +)?(●ˇ∀ˇ●)

おすすめ

転載: blog.csdn.net/weixin_43863618/article/details/104558949