Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자 되버리기

C언어로 회문 만들기 본문

개발/C

C언어로 회문 만들기

구본익 2018. 7. 26. 19:38

C언어를 이용하여 회문을 만드는 것입니다.

회문에 대한 설명은 아래 주석에서도 나와 있듯이 앞으로 읽으나 뒤로 읽으나 차이가 없는 단어를 말합니다.


/*
회문을 작성할 것임
앞으로 읽으나 뒤로 읽으나 차이가 없는 단어!
*/

#include <stdio.h>
#include <string.h> // 문자열 함수 사용

void main(){
char c[40], d[40]; // 단어를 담을 변수
int e = 0; // 문자열 뒤집을때 카운트할때 쓰일 변수
int ret; // 문자열을 strcmp 함수를 이용하여 비교할 때 맞으면 0을 반환함
printf("문자열 입력 : ");
scanf("%s", c); // 단어 입력
printf("입력한 문자열은 %s 입니다\n", c);
int char_num = strlen(c); // 단어의 길이 계산
printf("단어의 길이는 %d 입니다.\n", char_num);

// 문자열을 반대로 저장할 것임
for(int i = char_num - 1; i >= 0; i--){ // 배열값은 하나 더 작으므로
d[e] = c[i]; // e == 0 이었으며 i == 단어의 길이
e++; // e를 계속 올려준다 + i는 계속해서 감소
}

ret = strcmp(c, d); // 두 단어가 만약 일치한다면 0을 반환할 것임

if(ret == 0){
printf("회문입니다.\n");
}
else{
printf("회문이 아닙니다.\n");
}
}



가운데 for문은 배열을 뒤집어서 저장해주는 역할을 합니다.


strcmp 라는 함수가 보이는데 이 함수는 


#include <string.h> // 문자열 함수 사용

이 함수에 포함되어 있는 함수 입니다.  strcmp(string a, string b) 이런식으로 쓰게 됩니다.

만약 두 글자가 같다면 int 형 변수 0을 반환합니다. (아닐경우에는 1 을 반환 합니다.)


혹시나 문자열 반대로 저장하는 메소드도 아시면 댓글 부탁드립니다!



'개발 > C' 카테고리의 다른 글

C언어 10진수 2진수로 바꾸기  (0) 2018.07.26
Comments