지금까지 포스팅한 내용을 바탕으로 연습문제를 풀어보겠습니다.
(문제에 대한 풀이는 아래에 있습니다.)
[ 문제 1. ]
아래 그림과 같이 문자열을 입력받아서 역순으로 출력하는 프로그램을 만드시오.( scanf( ) 이용 )
[ 문제 2. ]
아래 그림과 같이 문자열을 입력받아서 선택한 문자를 변경하는 문자를 만드시오.
풀이에 앞서 제가 풀이한 내용은 "좋은 코딩"이 아닐 수 있음을 밝힙니다.
더 나은 방법이나 다른 방법이 있다면 댓글로 알려주시면 감사하겠습니다.
[ 문제 1 풀이 ]
//4행 : char형 배열로 크기는 넉넉하게 100 정도 잡아줬습니다.
//5행 : 9행의 strlen(ch)의 크기를 저장할 int형 변수 i를 선언하였습니다.
//7행 : 배열 ch에 문자열 입력을 받습니다.
//9행 : strlen( )함수로 ch의 크기를 정수형 변수 i에 저장합니다.
//12행 : while문을 사용하여 i가 0보다 클 때까지만 반복하였습니다.
//13행 : i는 배열의 길이를 구하는 strlen(ch)의 값이 정수형으로 들어있습니다.
따라서, i는 배열의 마지막 index값보다 1이 큽니다. ch[i - 1]로 마지막 index값을 출력합니다.
//14행 : 후위 감소 연산자인 --를 사용하여 13행을 실행 후 i는 1씩 감소합니다.
[ 문제2풀이 ]
//2행 : 문제에서 공백 뒤의 값이 무시되지 않고 모두 인식됩니다. scanf 대신 gets( ) 함수를 써야 하기 때문에 #include <string.h>를 추가하였습니다.
//5행 : char형의 배열로 넉넉하게 100정도 잡아줬습니다.
//6행 : 변경하고싶은 문자와 변경할 문자의 값을 저장할 char형의 문자 변수를 선언하였습니다.
//7행 : 14행에서 배열의 index값을 계산할 때 사용할 정수형 변수 i를 선언하였습니다.
//10행 : 공백 뒤의 값을 무시하지 않기 위해 scanf 대신 gets( ) 함수를 사용하였습니다.
//12행 : scanf를 사용하여 c2, c3에 입력받습니다.
//14행 : for문을 사용하여 i가 0일 때부터 strlen(ch1) 즉, 입력받은 배열의 길이보다 작거나 같을 때까지 i++를 반복합니다.
//15~17행 : if문을 사용하여 ch1[i]의 값이 c2와 같을 경우 ch1[i]에 c3를 대입합니다. 즉, ch1[0]부터 ch1[마지막 index값]까지 반복하여 c2값과 같은지 검사합니다. 같으면 i에 c3를 대입합니다.
'[C] C언어 기초' 카테고리의 다른 글
[C] C언어의 포인터 및 메모리_2 (0) | 2022.04.08 |
---|---|
[C] C언어의 포인터 및 메모리 (0) | 2022.04.07 |
[C] C언어 기초 함수 (0) | 2022.04.04 |
[C] C언어의 배열(array) (0) | 2022.04.03 |
[C] C언어의 반복문_do ~ while (0) | 2022.04.02 |