목록C언어 (8)
코딩일지
1.포인터는 과연 무엇인가? 포인터라는 말을 처음 들었을 땐 화살표( -> )로 가리키는 것? 이라는 생각이 제일 먼저 들었는데 막상 포인터를 배우고 나니 조금은 비슷한 개념인 것 같아서 이름이 왜 포인터인지 알 수도 있을 것 같았다. 포인터란 우리가 사용하던 일반 변수처럼 값을 저장하는 것이 아닌, 원하는 값이 저장된 컴퓨터의 메모리상의 “주소”를 저장하는 것이다. 즉, 포인터는 메모리 주소를 저장하고 특정 자료형으로 그 주소에 접근하기 위한 자료형인 것이다. 포인터 변수에는 메모리 주소를 담을 수 있는 크기가 필요한데 64비트 운영체제에선 8비트를 의미하므로 크기는 8비트로 잡힌다. 처음에 내가 포인터를 듣고 생각한 화살표 ->를 쓰는 경우도 있었다. 함수 내부에서 구조체 멤버변수에 접근하려면 ‘구조..
char형 배열, 문자열을 입력하고 출력하면 한자나 외계어같은 쓰레기값이 뜰 때! 1. 문자열 입력 후 '\0'이라는 NULL부분을 처리해주지 않으면 다음 줄에 그대로 출력되어 버퍼 오버플로우나 쓰레기값이 뜬다. -> fflush(stdin); 으로 해결 2. char형 배열 선언 시, 미리 초기화를 해주지 않으면 한자나 외계어가 뜨기 십상! -> str[100] = {0}; 처럼 초기화해서 해결 보통 1, 2번 문제를 해결하지 못했을 때 쓰레기값이 뜹니다!! 잘 처리해주고 깔끔한 코딩 해요~~~
N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다. #include #include int main(void) { int n, i; scanf("%d", &n); for(i = 1; i < 10; i++) printf("%d * %d = %d\n", n, i, n * i); }
총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’ 중 하나이다. 각 줄의 시작과 마지막에 빈칸은 없다. 영석이가 세로로 읽은 순서대로 글자들을 출력한다. 이때, 글자들을 공백 없이 연속해서 출력한다. #include #include int main(void) { int i, j, max = 0; char line[5][15] = {0}; for (i = 0; i max) max = strlen(line[i]); } for (i = 0; i < ma..
돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 지게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다. #include int main(void) { int n; scanf("%d", &n); if (n % 2 == 0) printf("SK\n"); else printf("CY\n"); }
돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다. #include int main(void) { int n; scanf("%d", &n); if (n % 2 == 1) printf("SK\n"); else printf("CY\n"); } *1개, 3개만 돌을 나눠가지므로 홀수, 짝수로 나눌 수 있는 트릭*
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. #include int main(void) { int i, n, cnt = 1, temp = 1; scanf("%d", &n); if (n == 1) cnt = 1; else { for (i = 2; i