회문의 여부를 판단하는 프로그램을 가지고 왔습니다.
물론 단번에 코드를 본다면 좋기야 하겠지만 장기적으로 봤을때
혼자풀어보기 -> 힌트 -> 코드보기 순으로 공부하시는게 실력 향상에 큰 도움이 됩니다!
힌트를 보고 천천히 생각을 거쳐서 문제를 풀어보시고
답안을 확인해보세요
더보기
회문 똑바로 읽으나 거꾸로 읽으나 똑같은 문장을 뜻합니다.
앞의 회문을 예로들어
ababa를 비교한다고하면
배열 순서상으로 0번째인 a와 4번째 a가 같아야함
이것을 함수화 해서 문제를 풀어내야합니다.
for문을 사용하여 앞글자와 뒷글자를 비교할 것인데 /2 처리를 하면 쉽게 진행할 수 있을 것입니다.
배열[i] = 배열[문자길이 - i -1] 정도로 만들어 내면 쉽게 풀어낼 수 있겠네요
또한 글자가 같은 경우 0을 더해주고, 글자가 다른 경우 1을 더해줘서
1이상인 경우에는 회문이 아님을 표시하고
0인 경우에는 회문임을 표시하는 프로그램을 만들면 좋을 것 같습니다
더보기
acac는 회문이 아니므로 회문이 아님이 출력
ababa는 회문이므로 회문이라고 출력
#include <stdio.h>
#include <string.h>
int main(void) {
char s[100];
int i,len,j=0;
printf("문자열 입력");
scanf("%s", s);
len = strlen(s);
for (i=0;i<len/2;i++){ //앞글자와 뒷글자를 비교하기 위해 /2처리
if( s[i] != s[len-i-1] ) { // 첫글자와 마지막글자가 다르면 +1, 두번째글자와 마지막글자-1이 다르면 +1....
j += 1;
}else{ //같으면 0을 합함
j += 0;
}
}
if(j==0) //j가 0인 경우 회문
printf("회문임");
else //다른 글자가 있는경우 j가 1 이상이므로 회문이 아님
printf("회문이 아님");
return 0;
}
더 많은 C언어 글이 궁금하다면?
https://chuinggun.tistory.com/category/C%EC%96%B8%EC%96%B4
'C언어' 카테고리의 다른 글
[C언어] 사용자로부터 문자열을 입력받아서 문자열에 포함된 구두점의 개수를 세시오 (0) | 2020.05.04 |
---|---|
[C언어] 문자열을 입력받아 영단어의 개수를 화면에 출력하시오 (0) | 2020.05.04 |
[C언어] 문자열을 입력받아 대문자로 변환하는 함수 str_upper(char *s)를 작성하고 테스트하시오 (0) | 2020.05.04 |
[C언어] 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하는 프로그램을 작성하시오 (0) | 2020.05.04 |
[C언어] 문자열 안에 포함된 특정한 문자의 개수를 세는 함수 int str_chr(char *s, int c)를 작성하시오 (0) | 2020.05.04 |
댓글