profile image

L o a d i n g . . .

51.6 심사문제 : 암호화 헤더 크기 구하기

문제 : 다음 소스 코드를 완성하여 12가 출력되게 만드세요. 구조체 멤버의 이름은 마음대로 지어도 됩니다.

정답 :

#include <stdio.h>

struct EncryptionHeader {
    char flags;
    int version;
    int number;
};
 
int main()
{
    struct EncryptionHeader header;
 
    printf("%d\n", sizeof(header));

    return 0;
}

 

 

 

51.7 심사문제 : 패킷 크기 조절하기

문제 : 다음 소스 코드를 완성하여 3이 출력되게 만드세요. 구조체 멤버의 이름은 마음대로 지어도 됩니다.

정답 :

#include <stdio.h>

struct Packet {
    char a;
    char b;
    char c;
};

int main()
{
    struct Packet pkt;

    printf("%d\n", sizeof(pkt));

    return 0;
}

 

 

 

52.6 심사문제 : 인적 정보 삭제하기

문제 : 다음 소스 코드를 완성하여 아무 정보도 출력되지 않게 만드세요(함수 안의 인수만 채우면 됩니다).

정답 : 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

struct Person {
    char name[20];
    int age;
    char address[100];
};

int main()
{
    struct Person p1;

    strcpy(p1.name, "홍길동");
    p1.age = 30;
    strcpy(p1.address, "서울시 용산구 한남동");

    memset(&p1, 0, sizeof(p1));

    printf("이름: %s\n", p1.name);
    printf("나이: %d\n", p1.age);
    printf("주소: %s\n", p1.address);

    return 0;
}

 

 

 

52.6 심사문제 : 인적 정보 복제하기

문제 : 다음 소스 코드를 완성하여 인적 정보가 출력되게 만드세요(함수 안의 인수만 채우면 됩니다).

정답 : 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Person {
    char name[20];
    int age;
    char address[100];
};

int main()
{
    struct Person *p1 = malloc(sizeof(struct Person));
    struct Person p2;

    strcpy(p1->name, "고길동");
    p1->age = 40;
    strcpy(p1->address, "서울시 서초구 반포동");

    memcpy(&p2,p1,sizeof(struct Person));

    printf("이름: %s\n", p2.name);
    printf("나이: %d\n", p2.age);
    printf("주소: %s\n", p2.address);

    free(p1);    

    return 0;

}

 

 

52.6 심사문제 : 인적 정보 복제하기

문제 : 표준 입력으로 x, y 좌표 4개가 입력되어 Point2D 구조체 배열에 저장됩니다. 여기서 점 4개는 첫 번째 점부터 마지막 점까지 순서대로 이어져 있습니다. 다음 소스 코드를 완성하여 첫 번째 점부터 마지막 점까지 연결된 선의 길이가 출력되게 만드세요.

정답 :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

struct Point2D {
    int x;
    int y;
};

int main()
{
    struct Point2D p[4];
    double length = 0.0f;

    scanf("%d %d %d %d %d %d %d %d",
        &p[0].x, &p[0].y, &p[1].x, &p[1].y, &p[2].x, &p[2].y, &p[3].x, &p[3].y
    );

    for (int i = 0; i < sizeof(p) / sizeof(struct Point2D) - 1; i++) {

        int a = p[i + 1].x - p[i].x;
        int b = p[i + 1].y - p[i].y;

        length += sqrt(a * a + b * b);
    }

    printf("%f\n", length);

    retu

 

 

 

54.7 심사문제 : 정수 데이터 공용체 정의하기

문제 : 다음 소스 코드를 완성하여 0x11 4가 출력되게 만드세요.

정답 :

#include <stdio.h>

union Data {
  int num1;
  char c1;
};

int main()
{
    union Data d1;

    d1.num1 = 0x1111;

    printf("0x%x %d\n", d1.c1, sizeof(d1));

    return 0;
}

 

 

 

54.8 심사문제 : 공용체 포인터 사용하기

문제 : 다음 소스 코드를 완성하여 0x1111 0x11111111이 출력되게 만드세요.

정답 :

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

union Data {
    short num1;
    int num2;
};

int main()
{
    union Data* d1 = malloc(sizeof(union Data));
    d1->num2 = 0x11111111;

    printf("0x%x 0x%x\n", d1->num1, d1->num2);

    free(d1);

    return 0;
}

 

 

 

55.8 심사문제 : 게임 캐릭터 구조체 사용하기

문제 : 다음 소스 코드를 완성하여 "Swain"과 463.000000이 출력되게 만드세요.

정답 :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

struct Stats {
    float health;
    float healthRegen;
    unsigned int mana;
    float manaRegen;
    float range;
    float attackDamage;
    float armor;
    float attackSpeed;
    float magicResist;
    unsigned int movementSpeed;
};

struct Champion {
    char name[20];
    struct Stats stats;
    float abilityPower;
};

int main()
{
    struct Champion swain;

    strcpy(swain.name, "Swain");
    swain.stats.health = 463.000000;

    swain.stats.healthRegen = 1.48f;
    swain.stats.mana = 290;
    swain.stats.manaRegen = 1.49f;
    swain.stats.range = 500;
    swain.stats.attackDamage = 52.0f;
    swain.stats.attackSpeed = 0.625f;
    swain.stats.armor = 20.0f;
    swain.stats.magicResist = 30;
    swain.stats.movementSpeed = 335;
    swain.abilityPower = 0;

    printf("%s %f\n", swain.name, swain.stats.health);

    return 0;
}

 

 

 

55.9 심사문제 : 게임 캐릭터 구조체 포인터 사용하기

문제 : 다음 소스 코드를 완성하여 "Swain"과 463.000000이 출력되게 만드세요.

정답 : 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct Stats {
    float health;
    float healthRegen;
    unsigned int mana;
    float manaRegen;
    float range;
    float attackDamage;
    float armor;
    float attackSpeed;
    float magicResist;
    unsigned int movementSpeed;
};

struct Champion {
    char name[20];
    struct Stats* stats;
    float abilityPower;
};

int main()
{
    struct Champion* swain = malloc(sizeof(struct Champion));
    swain->stats = malloc(sizeof(struct Stats));

    strcpy(swain->name, "Swain");
    swain->stats->health = 463.000000;

    swain->stats->healthRegen = 1.48f;
    swain->stats->mana = 290;
    swain->stats->manaRegen = 1.49f;
    swain->stats->range = 500;
    swain->stats->attackDamage = 52.0f;
    swain->stats->attackSpeed = 0.625f;
    swain->stats->armor = 20.0f;
    swain->stats->magicResist = 30;
    swain->stats->movementSpeed = 335;
    swain->abilityPower = 0;

    printf("%s %f\n", swain->name, swain->stats->health);

    free(swain->stats);
    free(swain);

    return 0;
}
복사했습니다!