일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Naver SmartEditor
- 구글 reCaptcha
- TCP/IP 소켓
- C언어 함수
- 오라클
- C언어 배열
- HTML5
- 자바
- Spring google
- Spring email
- URL 다운로드
- C언어 구조체
- java
- gcc
- 날짜
- SQL
- C언어 파일입출력
- C언어 매크로
- placehoder
- 텍스트 파일 읽기
- C언어 변수
- Vim
- C언어 메모리
- GUI
- Google reCaptcha
- 포인터
- C언어
- 역순
- jsp
- Oracle
- Today
- Total
easy software
C언어 포인터와 배열을 이용한 회문검사 프로그램 본문
이번에는 조금 난이도가 있다면 있는 문제일 수 있습니다.
사용자가 문자열을 입력하면, 회문이 맞는지 아닌지를 출력해주는 프로그램입니다.
회문이란? abba, noon, akka, eee, ere 등등 앞 뒤를 바꿔도 동일한 문자가 되는 것을 뜻합니다.
우선 회문을 검사하려면, 사용자가 입력한 문자열의 길이를 알아야합니다.
그리고 문자열의 길이/2를 하여 반복문에서 문자열의 앞과 뒤를 검사해서
같은지를 확인해야 합니다.
반복문을 모두 수행하지 않았어도, 중간에 같지 않은 문자가 발견된다면, 반복을 중단하고
회문이 아니라는 것을 출력해주면 됩니다.
아래 코드 보시죠.
#include <stdio.h>
//문자열이 회문인지 아닌지를 알려주는 함수
void pal(char* ptr, int len){
int count = 0;
for (int i = 0; i < len / 2; i++){
//i번째 맨 처음과 맨 마지막 문자가 같으면 count값 증가
if (ptr[i] == ptr[len - i - 1])
count++;
//같지 않으면 반복문 탈출
else{
printf("회문이 아닙니다.");
break;
}
}
//count값이 len/2와 같아야 회문
if (count == len / 2)
printf("회문입니다.");
}
//문자열의 길이를 알려주는 함수
int leng(char* ptr){
int leng = 0;
//null문자를 만날때까지 반복
while (ptr[leng] != '\0')
leng++;
return leng;
}
int main(void){
char str[100];
int length;
printf("문자열 입력 : ");
scanf_s("%s", str, 100);
length = leng(str); //문자열의 길이를 알기 위해 leng함수 호출
pal(str, length); //문자열과 길이를 인자로 pal 함수에 전달
printf("\n");
return 0;
}
'C언어 > 포인터와 배열' 카테고리의 다른 글
C언어 2차원배열을 1차원으로 구현해보자 (0) | 2015.01.25 |
---|---|
C언어 Bubble Sort(버블정렬) 예제 (0) | 2015.01.23 |
C언어 배열을 이용한 예제(홀수면 앞부터, 짝수면 뒤부터 저장) (0) | 2015.01.23 |
C언어 배열을 이용하여 10진수를 2진수로 변환하기 (0) | 2015.01.23 |
C언어 포인터와 배열이용 홀수/짝수 출력예제 (0) | 2015.01.23 |