C言語における構造体と共用体の実例教程


一、実験の目的
  • は、構造体型変数の定義と使用を把握する。
  • は、構造体タイプ配列の概念と応用を把握する。
  • チェーンの概念を把握し、チェーンの操作を初歩的に習得する。
  • は、共用体の概念と使用を把握する。
  • は、構造体変数を指すポインタを把握する。
  • は、構造体配列を指すポインタの応用を把握する。
  • 二、実験内容
    下記のプログラムを作成してから、マシンに入れてデバッグして実行します。
  • ペアの候補者のための統計プログラムです。3人の候補者がいて、得票した候補者の名前を入力するたびに、得票結果を出力するよう求めます。
  • は、num、name、score[3]を含む5人の学生のデータ記録を印刷する関数printを作成し、これらの記録を主関数で入力し、print関数で出力します。
  • チェーンを作って、各結点は学号、氏名、性別、年齢を含みます。年齢を入力してください。チェーンの中の結点に含まれる年齢がこの年齢に等しい場合、この結点を削除します。選択)
  • 三、実験記録
    3.1候補票統計
    (1)ソースコード
    
    # include <stdio.h>
    
    typedef struct node
    {
    	char name;
    	int cnt;
    }candt;
    
    int main(void)
    {
    	candt A,B,C;
    	char vote;
    	A.name='A',A.cnt=0;
    	B.name='B',B.cnt=0;
    	C.name='C',C.cnt=0;
    	while(vote!='#')/*    # ,      。*/
    	{
    		printf("Please enter the candidate:
    "); scanf("%c",&vote); getchar(); switch(vote) { case 'A':A.cnt++;break; case 'B':B.cnt++;break; case 'C':C.cnt++;break; default:printf("Input error!
    "); } } printf("A'note:%d
    ",A.cnt); printf("B'note:%d
    ",B.cnt); printf("C'note:%d
    ",C.cnt); return 0; }
    (2)運転結果の概要図

    3.2 print関数
    (一)ソースコード
    
    # include <stdio.h>
    # define N 5
    struct student
    {
    	char num[6];
    	char name[10];
    	int score[4];
    }stu[N];
    void print(struct student stu[6]);
    int main(void)
    {
    	int i,j;
    	for(i=0;i<N;i++)
    	{
    		printf("
    Input data of student:
    "); printf("NO.: "); scanf("%s",stu[i].num); printf("name: "); scanf("%s",stu[i].name); for(j=0;j<3;j++) { printf("score %d:",j+1); scanf("%d",&stu[i].score[j]); } } print(stu); return 0; } void print(struct student stu[6]) { int i,j; printf(" NO. name score1 score2 score3
    "); for(i=0;i<N;i++) { printf("%5s%10s",stu[i].num,stu[i].name); for(j=0;j<3;j++) printf("%9d",stu[i].score[j]); printf("
    "); } }
    (2)運転結果の概要図

    3.3チェーンメーター
    (1)ソースコード
    
    # include <stdio.h>
    # include <malloc.h>
    //              
    struct student
    {
    	char num[10];
    	char name[6];
    	char sex[2];
    	int age;//   
    	struct student *next; //   
    }stu[10];
    int main(void)
    {
    	struct student *p,*pt,*head;
    	int i,length,iage,flag=1;
    	int find=0;
    	while(flag==1)
    	{
    		printf("Please enter the length of the list(<10):");
    		scanf("%d",&length);
    		if(length<10)
    			flag=0;
    	}
    	//    
    	for(i=0;i<length;i++)
    	{
    		p=(struct student *)malloc(sizeof(struct student));
    		if(i==0)
    			head=pt=p;
    		else
    			pt->next=p;
    		pt=p;
    		printf("NO.:");
    		scanf("%s",&p->num);
    		printf("name:");
    		scanf("%s",&p->name);
    		printf("sex:");
    		scanf("%s",&p->sex);
    		printf("age:");
    		scanf("%d",&p->age);
    	}
    	p->next=NULL;
    	p=head;
    	printf("
    NO. name sex age
    "); while(p!=NULL) { printf("%4s%8s%6s%6d
    ",p->num,p->name,p->sex,p->age); p=p->next; } // printf("Input age:"); scanf("%d",&iage); pt=head; p=pt; if(pt->age==iage)/* */ { p=pt->next; head=pt=p; find=1; } else/* */ pt=pt->next; while(pt!=NULL) { if(pt->age==iage) { p->next=pt->next; find=1; } else p=pt; pt=pt->next; } if(!find) printf("Not found%d.
    ",iage); p=head; printf("
    NO. name sex age
    "); while(p!=NULL) { printf("%4s%8s",p->num,p->name); printf("%6s%6d
    ",p->sex,p->age); p=p->next; } return 0; }
    (2)運転結果の概要図

    締め括りをつける
    ここでC言語の構造体と共用体についての記事を紹介します。C言語の構造体と共用体の内容については以前の文章を検索してください。または下記の関連記事を引き続き閲覧してください。これからもよろしくお願いします。