자료형 :: int, double, char - 정보의 종류
구조체 :: 위 자료형을 혼합해서, 타입을 별도로 생성하는 것
다양한 자료형의 여러 변수의 집합
"붕어빵을 만들어내는 "틀"을 정의한다"
// 예제 :: 사람(이름, 전화번호, 나이, 혈액형...) 구조체 정의(생성)
// typedef => type definition (사용자 지정. 코드를 작성하는 입장에서 타입을 별도 정의하는 키워드)
typedef struct {
// Person 멤버 :: 이름, 전화번호, 나이, 혈액형
// 멤버 :: 구조체 안의 변수 하나하나
char name[20];
char tel[20];
int age;
char blood;
}Person;
int main() {
// * 아래처럼 여러 개의 변수/배열을 한 묶음으로 만들고 싶을 때 -> 구조체 사용
// user에 대해 필요한 내용
/*char user_name[20];
int user_age;
char user_tel[20];
char user_num[20];*/
// admin에 대해 필요한 내용
/*char admin_name[10];
char admin_num[20];
char admin_id[20];*/
// me라는 이름으로 person 타입의 변수 선언
// 구조체 상에서, 변수/배열 선언한 순서대로 값을 넣어줘야 함
// {name ,tel ,age ,blood}
Person me = {"JeongHee", "010-1234-1234", 3, 'A'};
// 구조체 멤버 접근 :: (구조체변수).(멤버명)
printf("이름 :: %s\n", me.name);
printf("전화번호 :: %s\n", me.tel);
printf("나이 :: %d\n", me.age);
printf("혈액형 :: %c\n", me.blood);
// 구조체 = 타입(자료형)
// int = 1; => 안되는 것 처럼
// Person = {"JeongHee", "010-1234-1234", 3, 'A'}; => 안됨.
}
// 구조체 선언 (Student) :: 학번, 이름, 학점(double[3]), 평균
typedef struct {
char num[10]; // 학번 (문자열)
char name[20]; // 이름 (문자열)
double score[3]; // 학점 :: 3개의 값 저장O
double average; // 평균
}Student;
// Student 타입 변수의 정보를 미리 받으며 실행한다(매개변수)
double get_avr(Student s) { // stu를 이쪽으로 보내면, stu의 모든 정보 접근O
// 평균값 연산 수행
double sum = 0; // 평균을 구할 때 필요한 합계 저장 (score의 모든 값 더해야 함)
for (int i = 0; i < 3; i++) {
sum += s.score[i]; // 전달받은 구조체 변수의 학점을 모두 더해줌
}
return sum / 3; // 평균 연산 결과값 내놓도록 함
}
int main() {
// main 내용
// 학생에 대한 구조체 변수 선언 -> 구조체 필요
Student stu;
// 학생의 학번, 이름, 학점 3개를 순차적으로 입력받기
scanf("%s", stu.num);
scanf("%s", stu.name);
for (int i = 0; i < 3; i++) {
scanf("%lf", &stu.score[i]); // score[0], score[1], score[2] 순차적 입력
}
// 학생에 대해, 학점 평균 연산하기 (get_avr 함수 사용)
// 매개변수 타입에 맞게, stu를 값으로 전달
// get_avr 결과값 :: 학점의 평균()
stu.average = get_avr(stu);
// 학생의 학번, 이름, 평균을 출력하기 (stu 변수에 있는 값을 꺼내씀)
printf("학번 :: %s\n", stu.num);
printf("이름 :: %s\n", stu.name);
printf("평균 :: %.1f\n", stu.average);
}
// 구조체 선언 (Student) :: 학번, 이름, 학점(double[3]), 평균
typedef struct {
char num[10]; // 학번 (문자열)
char name[20]; // 이름 (문자열)
double score[3]; // 학점 :: 3개의 값 저장O
double average; // 평균
}Student;
// Student 타입 변수의 정보를 미리 받으며 실행한다(매개변수)
double get_avr(Student s) { // stu를 이쪽으로 보내면, stu의 모든 정보 접근O
// 평균값 연산 수행
double sum = 0; // 평균을 구할 때 필요한 합계 저장 (score의 모든 값 더해야 함)
for (int i = 0; i < 3; i++) {
sum += s.score[i]; // 전달받은 구조체 변수의 학점을 모두 더해줌
}
return sum / 3; // 평균 연산 결과값 내놓도록 함
}
int main() {
//int a[5];
//printf("%d", a[1]); // a의 1번째 값을 갖고온다.
// main 내용
// 3명 학생에 대한 구조체 배열 선언 -> 구조체 필요
Student stu[3];
// 3명 학생의 학번, 이름, 학점 3개를 순차적으로 입력받기
for (int j = 0; j < 3; j++) {
printf("%d번째 학생의 학번, 이름, 학점(3개)를 입력하세요.\n", j + 1);
scanf("%s", stu[j].num);
scanf("%s", stu[j].name);
for (int i = 0; i < 3; i++) {
scanf("%lf", &stu[j].score[i]); // score[0], score[1], score[2] 순차적 입력
}
}
// 학생에 대해, 학점 평균 연산하기 (get_avr 함수 사용)
// 매개변수 타입에 맞게, stu를 값으로 전달
// get_avr 결과값 :: 학점의 평균()
for (int j = 0; j < 3; j++) {
stu[j].average = get_avr(stu[j]);
}
// 학생의 학번, 이름, 평균을 출력하기 (stu 변수에 있는 값을 꺼내씀)
for (int j = 0; j < 3; j++) {
printf("학번 :: %s\n", stu[j].num);
printf("이름 :: %s\n", stu[j].name);
printf("평균 :: %.1f\n", stu[j].average);
}
}
typedef struct {
char num[10];
char name[20];
double point[3];
double avg;
}student;
double get_avr(student s) {
double sum = 0 ;
for (int i = 0; i < 3; i++) {
sum += s.point[i];
printf("%lf\n", s.point[i]);
}
return sum/3;
}
int main() {
student person;
for (int i = 0; i < 3; i++) {
scanf("%s %s %lf", person.num[i], person.name[i], &person.point[i]);
}
person.avg = get_avr(person);
printf("Çйø :: %s\n", person.num);
printf("À̸§ :: %s\n", person.name);
printf("Æò±Õ :: %.1lf", person.avg);
}```