IT/솔루션) 난 정말C... 없다구요
21장. 실력 다지기 연습문제 03 ) 문제 4 [회문 판단]
돔찌
2019. 4. 17. 20:18
<2016. 9. 26. 20:59>
21장. 실력 다지기 연습문제 03 ) 문제 4 [회문 판단]
/*
회문(palindrome)은 앞으로 읽으나 뒤로 읽으나 동일한 단어를 말한다.
예를들어서 level과 noon은 회문이다. 이렇듯 프로그램 사용자가 ㅇ비력한 단어가 회문인지 아닌지 판단하는 프로그램을 작성하자
그리고 대소문자가 함께 입력되더라도 회문으로 판단할 수 있어야 한다. 쉽게 말해서 프로그램 사용자가 level이 아닌 Level로 입력하더라도 회문으로 인식해야 한다.
*/
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable : 4996)
int wordlen(char str[]);
int wordcheck(char str[]);
char alpachange(char alpa);
int main(void) {
char word[20];
int i;
printf("단어 입력 : ");
scanf("%s", word);
if (wordcheck(word) == 1)
printf("입력하신 단어는 회문입니다."); else
printf("입력하신 단어는 회문이 아닙니다.\n");
system("pause");
return 0;
}
int wordlen(char str[]) {
int len = 0;
while (str[len] != '\0')
len++;
len -= 1;
printf("len은 %d\n", len);
return len;
}
int wordcheck(char str[]) {
int i;
int len;
int middle = wordlen(str) / 2;
printf("middle은 %d\n", middle);
for (i = 0; i < middle; i++) {
if (alpachange(str[i]) != alpachange(str[wordlen(str) - i])) {
printf("%c와 %c는 같지 않습니다.\n", str[i], str[wordlen(str) - i]);
return 0;
}
}
return 1;
}
char alpachange(char alpa) {
int differ = 'a' - 'A';
if (alpa >= 'A' && alpa <= 'Z')
alpa += differ;
return alpa;
}