inflearn logo
강의

Course

Instructor

Hong Jung-mo's C Programming: Learning by Doing

6.15 Nested Loops

scanf로 문제 계속 받고 나오는 방법

373

Ad Astra

9 asked

0

int main()

{

const char first_char = 'A';

// const char last_char = 'T'; // TOOD: use scanf() / 즉 last_char(마지막글자)를 scanf로 입력받아서 쓸 수 있게 만들어봐

// const int num_rows = last_char - first_char + 1;

int r; // num_rows loop

int c; // character loop

char last_char = 'C'; 

for (last_char; last_char != 'q'; scanf("%c", &last_char))

{

printf("Input last_char (quit to q) : ");

scanf("%c", &last_char);

const int num_rows = last_char - first_char + 1;

for (r = 0; r < num_rows; ++r)

{

for (c = first_char; c <= first_char + r; ++c) // 

{

printf("%c ", c);

}

printf("\n");

}

for (r = 0; r < num_rows; ++r)

{

for (c = first_char + r; c != first_char + num_rows; ++c)

{

printf("%c ", c);

}

printf("\n");

}

printf("num_rows : %d, r : %d, first_char : %c, last_char : %c, c : %c\n", num_rows, r, first_char, last_char, c);

printf("\n");

}

입력 받는건 아주 잘 받는데 q 입력했을 때 바로 안나오고 엄청난 이상한 출력 길게 나오고 끝나네요.. 뭐가 문젠가요?

출력은 예제2번에 예제3번 합쳐서 나오고 끝나는 출력입니다.

ex)

A

AB

ABC

BC

C

scanf c for 반복문 quit 안나와

Answer 1

0

sohyun

안녕하세요 :)

q 를 입력했을 떄 종료하게 하고 싶다면

이렇게 last_char 를 입력 받았을 때 q 면 break 하는 식을 중간에 넣어주어야 하지 않을까 싶습니다.

이렇게 미리 break 로 빠져 나가야 그 아래 연산들을 실행하지 않으니까요!

q 면 반복하지 않도록 하는 것을 for 문식에 써주셨는데, 입력은 for 문 내부에서 받고 있기 때문에 q 를 입력했더라도 그 아래 부분들이 전부 실행이 한번 될 수 밖에 없기에 그랬던 것입니다. q 가 입력되면 미리 break 되게끔 중간에 제가 체크한 빨간 코드를 끼워넣어 주세요~!

여담으로 소문자 q 를 입력했을 때 저런 출력이 나온 이유는 안쪽 for문에서 출력을 num_rows 번 하시는데 이를 last_char - first_char + 1; 로 설정하셨는데요, first_char 가 'A' 대문자로 설정되어 있기 때문입니다. 소문자는 아스키코드가 대문자보다 더 크니까 .. 예를 들어 소문자 q 의 아스키 코드는 113, A 의 아스키코드는 65 니까 소문자 q 를 입력한 경우에는 num_rows 이 48 이나 되네요! 그래서 저런 출력 결과가 나온거구요! 이런 경우가 발생하지 않게끔 q 입력된게 확인되면 바로 break 되게끔 해주세요 

Export template 안됨

1

26

2

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

56

3

main 함수에서 왜 int만 선언이 되는걸까요

1

57

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

55

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

49

1

프로토타입과 함수간의 인자 불일치

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

138

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

61

2

getchar(), putchar()

1

94

3

강의자리ㅛ

1

80

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

114

2

소스파일안에 여러 파일

1

76

2

F5와 F7의 차이

1

79

2

c = TWO * (a+b); 에서 a와 b는?

1

59

2

; 세미콜론을 붙이는 기준에 문의

1

70

1

Step over 기능 문의

1

53

2

2.6 강의 따옴표 출력 규칙 문의

1

76

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

61

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

65

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

54

2