내 방식을 포함한 해설풀이
#include <stdio.h>
using namespace std;
int main(){
//freopen("input.txt", "rt", stdin);
// 1. 문자열을 입력받는다.
char array[100];
//scanf("%s", &array); // 이걸로 하면 띄어쓰기 때문에 입력이 안된다.
gets(array);
// 2. 영어알파벳만 추출하여 소문자 배열로 만든다.
char englishArray[100];
int j = 0;
for(int i = 0; array[i] != '\0'; i++){
if(array[i] >= 65 && array[i] <= 90){
englishArray[j] = array[i] + 32;
j++;
}
else if(array[i] >= 97 && array[i] <= 122){
englishArray[j] = array[i];
j++;
}
}
englishArray[j] = '\0';
// 3. 알파벳 배열을 출력한다.
//for(int i = 0; englishArray[i] != '\0'; i++){ printf("%s", &englishArray[i]);}
printf("%s\n", englishArray);
return 0;
}
새롭게 알게 된 점01
스페이스바(공백)을 포함한 문자열을 입력할 때는
scanf("%s", &array);
을 쓰면 잘 입력되지 않으므로
gets(array);
을 쓰자
새롭게 알게된 점02
배열을 끝 마칠 때 '\0' 을 넣어줘서 끝났다는 표시를 해준다.
englishArray[j] = '\0';
새롭게 알게 된 점03
문자열 배열을 출력할 때
for(int i = 0; englishArray[i] != '\0'; i++){
printf("%s", &englishArray[i]);
}
을 쓰면
이런 식으로 이상하게 나온다..
printf("%s\n", englishArray);
을 쓰자
본해설
#include <stdio.h>
using namespace std;
int main(){
//freopen("input.txt", "rt", stdin);
// 1. 문자열을 입력받는다.
char array[100];
//scanf("%s", &array); // 이걸로 하면 띄어쓰기 때문에 입력이 안된다.
gets(array);
// 2. 영어알파벳만 추출하여 소문자 배열로 만든다.
char englishArray[100];
int j = 0;
for(int i = 0; array[i] != '\0'; i++){
if(array[i] != ' '){
if(array[i] >= 65 && array[i] <= 90){
englishArray[j++] = array[i] + 32;
}
else englishArray[j++] = array[i];
}
}
englishArray[j] = '\0';
// 3. 알파벳 배열을 출력한다.
//for(int i = 0; englishArray[i] != '\0'; i++){ printf("%s", &englishArray[i]);}
printf("%s\n", englishArray);
return 0;
}
'Programming Language > C C++' 카테고리의 다른 글
[알고리즘 문제풀이] 9. 모두의 약수(제한시간 1초)★ (0) | 2022.01.05 |
---|---|
[알고리즘 문제풀이] 8. 올바른 괄호 (0) | 2022.01.05 |
[알고리즘 문제풀이] 6. 숫자만 추출★ (0) | 2022.01.04 |
[알고리즘 문제풀이] 5. 나이 계산★ (0) | 2022.01.03 |
[알고리즘 문제풀이] 4. 나이 차이★ (0) | 2022.01.03 |