반응형
6. 백화점 신용카드 고객 중 "Johnson"의 정보를 출력하는 프로그램을 작성하라.
#include <stdio.h> #include <string.h> struct Customer { int ID; char name[10]; char address[30]; char phone[15]; int price; }; int main() { Customer list[10]; list[0] = { 1234, "Johnson", "Taejon,Korea", "042-654-0987", 200000 }; printf("고 객 번 호 : %d \n", list[0].ID); printf(" 이 름 : %s \n", list[0].name); printf(" 주 소 : %s \n", list[0].address); printf("전 화 번 호 : %s \n", list[0].phone); printf("월평균 구매액 : %d원 \n", list[0].price); }
7. 학생의 이름과 주소를 구조체의 배열에 저장하고 출력하는 프로그램을 작성하라. (단, 학생수는 5명)
struct student { char name[10]; char address[30]; }; int main() { const int N = 5; student list[N]; for (int i = 0; i < N; i++) { printf("%d번째 학생의 이름을 입력하세요. : ", i+1); scanf_s("%[^\n]s", list[i].name, 10); while (getchar() != '\n') {} printf("%d번째 학생의 주소를 입력하세요. : ", i+1); scanf_s("%[^\n]s", list[i].address, 30); while (getchar() != '\n') {} } for (int i = 0; i < N; i++) { printf("이름 : %s, 주소 : %s \n", list[i].name, list[i].address); } }
8. 삼각형의 세 변의 길이를 멤버로 갖는 구조체를 정의하고,
각 세변의 길이를 입력받아 각 필드에 저장한 후 정삼각형과 이등변 삼각형을 구분하는 프로그램을 작성하라.
#include <stdio.h> struct triangle { int a; int b; int c; }; int classification(triangle tri); int main() { triangle here; while (1) { printf("삼각형의 세변의 길이를 입력받습니다. 0이 입력되면 종료합니다. \n\n"); printf("삼각형의 첫번째 변의 길이를 입력하세요 : "); scanf_s("%d", &here.a); while (getchar() != '\n') {} if (here.a == 0) { return 0; } printf("삼각형의 두번째 변의 길이를 입력하세요 : "); scanf_s("%d", &here.b); while (getchar() != '\n') {} if (here.b == 0) { return 0; } printf("삼각형의 세번째 변의 길이를 입력하세요 : "); scanf_s("%d", &here.c); while (getchar() != '\n') {} if (here.c == 0) { return 0; } switch (classification(here)) { case 3: printf("입력하신 삼각형은 정삼각형입니다. \n\n"); break; case 2: printf("입력하신 삼각형은 이등변 삼각형입니다. \n\n"); break; case 1: printf("입력하신 삼각형은 그냥 삼각형입니다. \n\n"); break; case 0: printf("입력하신 변들로는 삼각형을 만들 수 없습니다. \n\n"); break; } } } int classification(triangle tri) { if (tri.a < tri.b) { tri.a ^= tri.b; tri.b ^= tri.a; tri.a ^= tri.b; } if (tri.a < tri.c) { tri.a ^= tri.c; tri.c ^= tri.a; tri.a ^= tri.c; } if (tri.a >= tri.b + tri.c) { return 0; } if (tri.a == tri.b && tri.b == tri.c) { return 3; } else if (tri.a == tri.b || tri.b == tri.c || tri.c == tri.a) { return 2; } else { return 1; } }
9. 다음의 프로그램을 컴파일한 후 실행결과를 확인하고 프로그램을 분석하라.
#include <stdio.h> struct stag { int i; float f; char c; double d; long l; }; int main() { stag component; printf("total bytes of struct stag -> %dbyte \n\n", sizeof(stag)); component.c = 'a'; printf("char -> %c, %dbyte \n\n", component.c, sizeof(char)); component.i = 1; printf("int -> %d, %dbyte \n\n", component.i, sizeof(int)); component.l = 123456789; printf("long -> %ld, %dbyte \n\n", component.l, sizeof(long)); component.f = 0.123456; printf("float -> %g, %dbyte \n\n", component.f, sizeof(float)); component.d = -1e-15; printf("double -> %e, %dbyte \n\n", component.d, sizeof(double)); }
10. 자동차의 이름과 색상, 생산 연도를 가지는 구조체를 만든 후, 이러한 구조체를 매개변수로 가지는 출력 함수를 작성하라.
#include <stdio.h> struct car { char name[10]; char color[10]; int production_year; }; void print_car(car c); int main() { car ev1 = { "전기차", "반짝거림", 2050 }; print_car(ev1); } void print_car(car c) { printf("차의 이름은 %s 입니다. \n", c.name); printf("차의 색상은 %s 입니다. \n", c.color); printf("차의 생산연도는 %d년 입니다. \n", c.production_year); }
11. 10번 문제를 구조체 포인터를 매개변수로 사용하는 출력 함수로 작성하라.
#include <stdio.h> struct car { char name[10]; char color[10]; int production_year; }; void print_car(car* c); int main() { car ev1 = { "전기차", "반짝거림", 2050 }; print_car(&ev1); } void print_car(car* c) { printf("차의 이름은 %s 입니다. \n", c->name); printf("차의 색상은 %s 입니다. \n", c->color); printf("차의 생산연도는 %d년 입니다. \n", c->production_year); }
12. 1에서 10까지의 수의 제곱과 세제곱을 각각 합산하여 저장하기 위해 구조체 배열을 사용하는 프로그램을 작성하라. 배열의 내용도 출력하라.
#include <stdio.h> struct sum_save { int square; int cube; int sum; }; int main() { const int N = 10; sum_save list[10]; for (int i = 1; i <= N; i++) { list[i - 1].square = i * i; list[i - 1].cube = i * i * i; list[i - 1].sum = list[i - 1].cube + list[i - 1].square; } for (int i = 0; i < N; i++) { printf("%4d^2 + %4d^3 = %4d \n", list[i].square, list[i].cube, list[i].sum); } }
13. int의 상위 2바이트와 하위 2바이트의 값을 short int로 각각 출력하는 프로그램을 작성하라.
이때, 하나의 int와 short int배열의 두 원소로 구성된 공용체를 사용하라.
#include <stdio.h> union Fint_T2short { int From; short To[2]; }; int main() { Fint_T2short tester; printf("정수값을 입력하세요 : "); scanf_s("%d", &tester.From); printf("입력하신 값의 상위 2바이트는 %d이고, 하위 2바이트는 %d입니다. \n", tester.To[0], tester.To[1]); }
14. 변수 a, b, c가 아래에 형 정의(typedef)한 바와 같은 matrix형이라 할 때, 두 행렬의 뺼셈을 구하는 함수 subtract(a,b,c)를 작성하고, 이를 main()함수로 테스트하는 프로그램을 작성하라.
#include <stdio.h> #define N 3 typedef double matrix[N][N]; void subtract(matrix a, matrix b, matrix c); int main() { matrix ma, mb, mc; for (int i = 0; i < N; i++) { for (int k = 0; k < N; k++) { printf("matrix ma[%d][%d]의 값을 입력하세요 : ", i, k); scanf_s("%lf", &ma[i][k]); } } printf("\n"); for (int i = 0; i < N; i++) { for (int k = 0; k < N; k++) { printf("matrix mb[%d][%d]의 값을 입력하세요 : ", i, k); scanf_s("%lf", &mb[i][k]); } } printf("\n"); subtract(ma, mb, mc); printf("matrix ma - mb의 값은 \n"); for (int i = 0; i < N; i++) { for (int k = 0; k < N; k++) { printf("%g ", mc[i][k]); } printf("\n"); } } void subtract(matrix a, matrix b, matrix c) { for (int i = 0; i < N; i++) { for (int k = 0; k < N; k++) { c[i][k] = a[i][k] - b[i][k]; } } }
반응형