✏️배열
🔎 지하철칸, 화장실칸
여러개의 변수를 함께, 동시에 생성
#include <stdio.h>
int main(void)
{
int subwqy_array[3];
subwqy_array[0] = 30;
subwqy_array[1] = 40;
subwqy_array[2] = 50;
for (int i = 0; i < 3; i++)
{
printf("지하철 %d호차에 %d명이 타고 있습니다\n", i+1, subwqy_array[i]);
}
return 0;
}
🔎 배열 값 설정 방법
#include <stdio.h>
int main(void)
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10}; //값 초기화
int arr[10]; //값 설정안함
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
값을 설정하지 않으면 임의의 값이 들어감
#include <stdio.h>
int main(void)
{
// 배열 크기는 항상 상수로 선언
int size = 10;
int arr[10]; //int arr[size] 불가
int arr[10] = { 1,2 }; //3번째 값부터는 자동으로 0으로 초기화
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
int arr[] = { 1,2 }; //arr[2]와 동일
float arr_f[5] = { 1.0f, 2.0f, 3.0f };
for (int i = 0; i < 5; i++)
{
printf("%.2f\n", arr_f[i]);
}
return 0;
}
✏️ 문자 vs 문자열
#include <stdio.h>
int main(void)
{
//문자 vs 문자열
char c = 'A';
printf("%c\n", c);
//문자열 끝에는 '끝'을 의미하는 NULL문자 '\0'이 포함되어야 한다.
char str[6] = "coding";
char str[7] = "coding\0"; //[c][o][d][i][n][g][\0]
printf("%s\n", str);
char str[] = "coding";
printf("%s\n", str);
printf("%d\n", sizeof(str)); //자동으로 \0포함 문자열 길이 7이라고 나옴
for(int i = 0; i < sizeof(str); i++)
{
printf("%c\n", str[i]);
}
char kor[] = "나도코딩";
printf("%s\n", kor);
printf("%d\n", sizeof(kor));
// 영어 한글자 : 1byte
// 한글 한글자 : 2byte
// char 크기 : 1byte
char c_array[7] = { 'c', 'o', 'd','i','n','g','\0' };
/*char c_array[6] = { 'c', 'o', 'd','i','n','g' };
printf("% s\n", c_array);*/
char c_array[10] = { 'c', 'o', 'd','i','n','g' };
printf("% s\n", c_array);
for(int i = 0; i < sizeof(c_array); i++)
{
printf("%c\n", c_array[i]);
}
for(int i = 0; i < sizeof(c_array); i++)
{
printf("%d\n", c_array[i]); //ASCII 코드값 출력(NULL 문장은 0으로 출력)
}
return 0;
}
문자열은 항상 끝을 의미하는 '\0'이 포함되어 있다.
#include <stdio.h>
int main(void)
{
//문자열 입력받기 : 경찰서 조서쓰기 예제
char name[256];
printf("이름을 입력하세요 : ");
scanf_s("%s", name, sizeof(name));
printf("%s\n", name);
return 0;
}
이제 예전에 printf, scanf에서 활용했던 sizeof의 의미가 이해되는가?
✏️ ASCII코드
🔎 ASCII코드?
참고 : ASCII 코드? ANSI(미국표준협회) 에서 제시한 표준 코드 체계
7bit, 총 128개 코드(0-127)
#include <stdio.h>
int main(void)
{
// a : 97(문자 a의 아스키코드 정수값
// A : 65
// 0 : 48
printf("%c\n", 'a');
printf("%d\n", 'a');
printf("%c\n", 'b');
printf("%d\n", 'b');
printf("%c\n", 'A');
printf("%d\n", 'A');
printf("%c\n", '\0');
printf("%d\n", '\0');
printf("%c\n", '0');
printf("%d\n", '0');
printf("%c\n", '1');
printf("%d\n", '1');
//참고2 : 0-127 사이의 아스키코드 정수값에 해당하는 문자 확인
for (int i = 0; i < 128; i++)
{
printf("아스키코드 정수 %d : %c\n", i, i);
}
return 0;
}
✏️ 프로젝트
🔎 아빠는 대머리 게임
#include <stdio.h>
#include <time.h>
int main(void)
{
srand(time(NULL));
printf("\n\n=====아빠는 대머리 게임 ====\n\n");
int answer; //사용자 입력값
int treatment = rand() % 4; //발모제 선택(0~3)
int cntShowBottle = 0; //이번 게임에 보여줄 병 갯수
int prevCntShowBottle = 0; // 앞 게임에 보여준 병 갯수
// 서로 보여주는 병 갯수를 다르게 하여 정답률 향상(처음에 2개 >> 다음에 3개...)
// 3번의 기회(3번의 발모제 투여 시도)
for (int i = 1; i <= 3; i++)
{
int bottle[4] = { 0,0,0,0 }; //4개의 병
do {
cntShowBottle = rand() % 2 + 2; //보여줄 병 갯수(0-1, +2 -> 2, 3)
} while (cntShowBottle == prevCntShowBottle);
prevCntShowBottle = cntShowBottle;
int isincluded = 0; // 보여줄 병 중에 발모제가 포함되어쓴지 여부(1이면 포함)
printf(" > %d 번째 시도 : ", i);
//보여줄 병 종류를 선택
for (int j = 0; j < cntShowBottle; j++)
{
int randBottle = rand() % 4; // 0~3
// 아직 선택되지 않은 병이면, 선택 처리
if (bottle[randBottle] == 0)
{
bottle[randBottle] = 1;
if (randBottle == treatment)
{
isincluded = 1;
}
}
// 이미 선택된 병이면, 중복이므로 다시 선택
else
{
j--;
}
}
// 사용자에게 문제 표시
for (int k = 0; k < 4; k++)
{
if (bottle[k] == 1)
printf("%d", k + 1);
}
printf(" 물약을 머리에 바릅니다.\n\n");
if (isincluded == 1)
{
printf(" >> 성공! 머리가 났어요 !\n");
}
else
{
printf(" >> 실패! 머리가 나지 않았어요...ㅠㅠ\n");
}
printf("\n .... 계속하려면 아무거나 누르세요...");
getchar();
}
printf("\n\n 발모제는 몇 번일까요?");
scanf_s("%d", &answer);
if (answer == treatment+1)
{
printf("\n >> 정답입니다.");
}
else
{
printf("\n >> 땡! 틀렸어요. 정답은 %d 입니다.\n", treatment + 1);
}
return 0;
}
🍏 KEEP, 습관 중요한 것
배열의 크기는 항상 상수로만 입력해야 한다는 점이 새롭게 느껴졌다.
기본적인 문법을 잘 익혀야 겠다.
문자열의 끝부분에 '\0' 이 포함된다는 건 이번 정보처리기사 실기에도 나왔어서 더 인상깊었다.
🍎 PROBLEM, 이슈, 에러, 오류
프로젝트 코드를 열심히 따라 타이핑했는데 실행해보니 오류가 나서 오류를 해결하기 위해 코드를 차근차근 살펴봤다. for문 k를 i라고 오류가 발생한 것이었다.
오류를 해결하기 위해 코드를 차근차근 봐야겠다.
🍉 TRY 시도
이번 프로젝트 코드는 어렴풋하게 이해되는 부분이라 다시 분석해봐야 할듯 하다.
'c언어 개발일지' 카테고리의 다른 글
[나도 코딩 C언어] 다차원 배열 (1) | 2022.09.19 |
---|---|
[나도 코딩 C언어] 포인터 (0) | 2022.08.16 |
[나도 코딩 C언어] 함수 (0) | 2022.08.12 |
[나도 코딩 C언어] 조건 / 분기 (0) | 2022.08.12 |
[나도 코딩 C언어] 반복문 (0) | 2022.08.04 |
댓글