解答例16-2

【問1】

#include <stdio.h>

struct kamoku1 {		/* 選択科目1 */
	int kokugo;
	int eigo;
	int syakai;
};
struct kamoku2 {		/* 選択科目2 */
	int suugaku;
	int eigo;
};
struct seiseki {		/* 成績 */
	int no;		/* 学生番号 */
	char name[40];	/* 氏名 */
	int sentaku;	/* 選択種別 */
	union kamoku{	/* 選択科目 */
		struct kamoku1 k1;
		struct kamoku2 k2;
	}ka;
	double heikin;	/* 平均値 */
};

int main( void )
{
	struct seiseki mycls[20] = {
		{ 1001, "小柳幸江", 1, 76, 87, 69, 0.0 }, 
		{ 1002, "大場優", 2, 79, 48, 0, 0.0 }, 
		{ 1003, "新庄あやか", 2, 85, 98, 0, 0.0 }, 
		{ 1004, "野崎栄一", 1, 43, 76, 56, 0.0 }, 
		{ 1005, "本多健也", 1, 69, 91, 69, 0.0 }, 
		{ 9999, "" , 0, 0, 0, 0, 0.0 },
	};
	int i = 0;

	while ( mycls[i].no != 9999 ) {
		/* 選択科目別に平均値を求める */
		if ( mycls[i].sentaku == 1 ) {
			mycls[i].heikin = ( double )( mycls[i].ka.k1.kokugo 
						 + mycls[i].ka.k1.eigo
						 + mycls[i].ka.k1.syakai ) / 3;
		}
		else {
			mycls[i].heikin = ( double )( mycls[i].ka.k2.suugaku
						 + mycls[i].ka.k2.eigo ) / 2;
		}
		/* 結果の表示 */
		printf( "%4d %-20s 平均:%6.2f\n", 
			mycls[i].no, mycls[i].name, mycls[i].heikin );
		i++;
	}

	return 0;
}

戻る


banner初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved