본문 바로가기
C언어/C언어 문법

C언어 - 구조체/구조체 간단한 예제/구조체 쉽게 이해하기/구조체 예제코드

by 공부가싫다가도좋아 2021. 3. 16.
반응형

구조체


1. 학생정보 입력 프로그램(ver1)

#include<stdio.h>

typedef struct student{
	char name[20];
	int age;
}STUDENT;

STUDENT input(){
	STUDENT stu;
	printf("\n-----------------------\n");
	printf("이름 입력:");scanf("%s",&stu.name);
	printf("나이 입력:");scanf("%d",&stu.age);
	printf("\n-----------------------\n");
	return stu;
}

void output(STUDENT stu){
	printf("\n-----------------------\n");
	printf("이름:%s\n",stu.name);
	printf("나이:%d\n",stu.age);
	printf("\n-----------------------\n");
}

int main(void){
	STUDENT s;
	int menu;
	while(1){
		printf("메뉴 선택:\n1.입력\n2.출력\n선택>>>");scanf("%d",&menu);
		
		if(menu==1) s=input();
		if(menu==2) output(s);
		if(menu==3) break;
	}
	return 0;
}

*결과

 

2. 학생정보 입력 프로그램 (ver2)

#include <stdio.h>

typedef struct student{
	char name[20];
	int age;
}STUDENT;

void input(STUDENT s[],int size){
	int i;
	for(i=0;i<3;i++){ //3번 연속 입력 
		printf("\n-----------------------------\n");
		printf("이름:");scanf("%s",&s[i].name);
		printf("\n");
	printf("나이:");scanf("%d",&s[i].age);
	printf("\n-----------------------------\n");
	}
	
}
	
int main(void){
	STUDENT s[3];
	int menu;
	for(;;){
		printf("메뉴를 선택하시오.\n1. 입력\n2.출력 \n선택>>>>");scanf("%d",&menu);
		printf("\n"); 
		if(menu==1) input(s,3);  //STUDENT s 와 사이즈 3을 input메서드에 넣음.
		if(menu==2) {
			
			int i;
			for(i=0;i<3;i++){
				printf("\n-----------------------------\n");
				printf("이름:%s\n",s[i].name);
				printf("나이:%d\n",s[i].age);	
				printf("\n-----------------------------\n");
			}
			
		}
		if(menu==3) break;
	}
	return 0;
}

*결과

 

3. r.x, r.y의 값은?

#include <stdio.h>
#include <stdlib.h>

typedef struct point{
	int x;
	int y;
}POINT;

POINT translate(POINT a,POINT b){
	POINT newP;
	
	newP.x=a.x+b.y;   // a=p, b=d   a.x=2, b.y=10 
	newP.y=a.y+b.y;   // a.y=3 , b.y=10
	//newP.x=12 , newP.y=13
	//int x에는 12, int y에는 13 값이 들어감. 
	
	return newP;
}

int main(){
	POINT p={2,3}; //p.x=2 ,p.y=3
	POINT d={10,10}; //d.x=10, d.y=10
	POINT r;
	
	r=translate(p,d);
	
	printf("%d  %d",r.x,r.y);
	return 0;
}

*결과

12  13

 

4. grade의 max값을 출력해라!

#include <stdio.h>
#include <stdlib.h>

struct student{
   int number;
   char name[20];
   double grade;
};

struct student list[3] = {
   {111, "A", 4.2},
   {222, "B", 3.2},
   {333, "C", 4.5}
};

int main(){
   
   int i, j;
   double keyValue;
   
   for(i=1; i<3; i++){
      	keyValue = list[i].grade;
 
        	if(list[i-1].grade > keyValue){
            	keyValue = list[i-1].grade;
         }
        	else{
            	continue;
         }
      
   }
   printf("최댓값은 %0.1f", keyValue);
   
   
   return 0;
}

 

반응형

댓글