Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- lob
- hackctf
- c
- hackerrank
- 머신러닝
- 생활코딩
- 파이썬
- SWEA
- c++
- 드림핵
- BOJ
- Python
- 숙명여자대학교 정보보안동아리
- XSS Game
- 기계학습
- 풀이
- siss
- PHP 웹페이지 만들기
- 자료구조 복습
- Javascript
- 웹페이지 만들기
- HTML
- Sookmyung Information Security Study
- BOJ Python
- WarGame
- C언어
- The Loard of BOF
- 숙명여자대학교 정보보안 동아리
- CSS
- 백준
Archives
- Today
- Total
혜랑's STORY
[2021 겨울 C언어 2주차] 본문
#1 두 개의 문자열 s1, s2를 입력 받고, s1과 s2에 같은 index에 있는 문자들을 비교해서 같으면 O,
다르면 X를 출력하시오.
※조건
- 문자열의 길이는 모두 30을 넘지 않음
- 문자 비교 중 공백일 경우 X를 출력함
- 포인터 사용
- 풀이
문자열1, 문자열2, 인덱스 번호를 파라미터로 가지는 함수 compare()를 만든다. 이 함수는 각 문자열의 인덱스 값을 비교하고 같으면 flag에 1을 대입하고 아니면 초기의 -1값을 반환하도록 하였다.
main 함수에서 while문을 둘 중 더 긴 문자열이 끝날때 까지 수행하도록 하기 위하여 두 문자열 중 더 긴 값을 n에 저장해 주었다. while문은 compare을 통해 얻은 값이 1이라면 같은 문자라는 의미이기 때문에 'O'를 출력하고, 아니면 'X'를 출력하도록 하였다.
- 코드
#include <stdio.h>
#include <string.h>
int compare(char *str1, char *str2, int x);
int main(){
char str1[31];
char str2[31];
scanf("%s",str1);
scanf("%s",str2);
int n = strlen(str1)>strlen(str2)?strlen(str1):strlen(str2);
int i=0;
while(n>0){
char result = compare(str1, str2, i)==1?'O':'X';
printf("%c",result);
++i; --n;
}
return 0;
}
int compare(char *str1, char *str2, int x){
int flag = -1;
if(str1[x] == str2[x])
flag = 1;
return flag;
}
- 실행결과
#2 문자열 S와 숫자 N을 입력받고, 다음과 같은 규칙으로 문자열을 바꾼다.
※규칙
- 맨 앞글자는 문자열의 맨 뒤로 이동한다.
- 맨 앞글자를 제외한 나머지 문자들은 한 칸씩 앞으로 이동한다.
- 이 규칙을 함수로 구현한다.
문자열 S를 N번 바꾼 결과를 출력하시오. (문자열의 길이는 30을 넘지 않고, N은 100보다 작은 양의 정수이다.)
- 풀이
move() 함수는 문자열을 파라미터로 가지며, 위의 규칙을 수행하는 함수이다. 먼저 맨 앞글자를 담아둘 temp라는 변수를 만들어 둔 뒤, 문자열의 끝까지 맨 앞글자를 제외한 나머지 문자들을 한 칸씩 앞으로 이동 시킨다. while문을 탈출했다는 것은 i가 NULL의 위치에 있다는 것을 의미하기 때문에 1을 빼준 인덱스(맨 마지막 글자)에 temp에 미리 넣어두었던 맨 앞글자를 넣어준다.
- 코드
#include <stdio.h>
void move(char *str);
int main(){
char S[31];
int N;
scanf("%s", S); scanf("%d",&N);
for(int i=0; i<N; i++){
move(S);
}
printf("%s", S);
}
void move(char *str){
int i=0;
char temp = str[0];
while(str[i]){
str[i] = str[i+1];
i++;
}
str[--i] = temp;
}
- 실행결과
'2021 SISS 21기 활동 > 겨울방학 C' 카테고리의 다른 글
[BOJ_C] 1316번, 2869번 (0) | 2021.02.08 |
---|---|
[BOJ_C] 2748번, 2750번 (0) | 2021.02.01 |
[BOJ_C] 2941번, 2884번 (0) | 2021.01.23 |
[BOJ_C] 1037번, 1712번 (0) | 2021.01.18 |
[BOJ_C] 10809번, 10773번 (0) | 2021.01.06 |