1. 두 개의 문자열 s1, s2를 입력 받고, s1과 s2에 같은 index에 있는 문자들을 비교해서 같으면 O, 다르면 X를 출력하시오
- 문자열의 길이는 모두 30을 넘지 않음
- 문자 비교 중 공백일 경우 X를 출력함
- 포인터 사용
[입력 예시]
struct
starcity
[출력 예시]
OOXXOXXX
#include <stdio.h>
#include <string.h>
int main(void){
char s1[30], s2[30];
char *w1 = s1;
char *w2 = s2;
int i, len;
scanf("%s", w1);
scanf("%s", w2);
if(strlen(w1)>strlen(w2)){
len = strlen(w1);
}else{
len = strlen(w2);
}
for(i=0; i<len; i++){
if(*(w1+i) == *(w2+i)){
printf("O");
}else{
printf("X");
}
}
return 0;
문자열 두 개를 정의하고 입력받는다. len이라는 변수에 두 문자열 중 긴 문자열의 길이를 넣고 그 길이만큼 반복문을 돌린다. 문자를 하나씩 비교해 같으면 O, 다르면 X를 출력한다.
결과
2. 문자열 S와 숫자 N을 입력받고, 다음과 같은 규칙으로 문자열을 바꾼다.
- 맨 앞글자는 문자열의 맨 뒤로 이동한다.
- 맨 앞을 제외한 나머지 문자들은 한 칸씩 앞으로 이동한다.
- 이 규칙을 함수로 구현한다.
문자열 S를 N번 바꾼 결과를 출력하시오.
문자열의 길이는 30을 넘지 않고, N은 100보다 작은 양의 정수이다.
[입력 예시]
simpson
4
[출력 예시]
sonsimp
#include <stdio.h>
#include <string.h>
void change(char* s, char* ch){
int len, j;
len = strlen(s);
*(ch+len-1) = *s;
for(j=0; j<len-1; j++) *(ch+j) = *(s+j+1);
}
int main(void){
char s[30], ch[30];
int n, i;
scanf("%s", s);
scanf("%d", &n);
for(i=0; i<n; i++){
change(s, ch);
strcpy(s, ch);
}
printf("%s", ch);
return 0;
}
문자열 두 개를 선언하고 하나를 입력받는다. change함수는 조건대로 문자열을 바꿔주는 함수다. 문자열의 첫글자를 새로운 문자열의 끝에 저장하고 나머지 글자는 하나씩 당겨서 저장한다. 한번 바꾸면 strcpy함수로 바뀐 문자열을 원래 문자열에 저장하고 다시 change 함수를 반복한다.
결과
'C' 카테고리의 다른 글
[C 기초] 진수, 아스키코드 (0) | 2021.02.26 |
---|---|
C - 배열에 알파벳 넣고 출력하기 (0) | 2021.02.14 |
6/18 [프개] - 구조체와 공용체 (0) | 2020.07.01 |
프개실습 exer11 (0) | 2020.06.16 |
5/21 [프개] 포인터 (0) | 2020.06.12 |