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;
}
'Programming Languages > C' 카테고리의 다른 글
[P4C] C언어 코딩 도장 : UNIT 56 ~ UNIT 57 (0) | 2021.04.03 |
---|---|
[P4C] C언어 코딩 도장 : UNIT 54 ~ UNIT 55 (0) | 2021.03.28 |
[P4C] C언어 코딩 도장 : UNIT 51 ~ UNIT 53 (0) | 2021.03.28 |
[P4C] C언어 코딩 도장 : UNIT 48 ~ UNIT 50 (0) | 2021.03.15 |
[P4C] C언어 코딩 도장 : 문제 풀이 6 (0) | 2021.03.15 |