이진수

박진은·2022년 5월 14일
0

C

목록 보기
3/9

이진수 만들기 걍 외워

void getbinarNumber(int c) {

    char str[100]; 길이가 얼마가 될지 모르니까 일단 생성해 시벌
    int i = 0; // 연산의 횟수를 세서 생성되는 문자열의 길이를 알아낼거여

    while (c != 0) {
        if (c % 2 == 0) {
            str[i] = '0';
        } else {
            str[i] = '1';
        }//2 로 나눠서 나머지가 0 이면 0을 넣고 아니면 1넣어
        c = c / 2;
        i++;//연산횟수세알려
    }
    str[i] = '\0'; // 널문자 삽입 삽입하는 위치는 연산횟수는 문자열의 길이보다 1만큼 크니까 그대로 삽입해줘
    for (int e = 0; e <= (i -1)/ 2; e++) {
        int tmp = str[e];
        str[e] = str[i - 1 - e];
        str[i - e - 1] = tmp;
    }
    printf(" %s",str);
}
for (int e = 0; e <= (i -1)/ 2; e++) {
        int tmp = str[e];
        str[e] = str[i - 1 - e];
        str[i - e - 1] = tmp;
    }

문자열을 뒤로 돌려버리는 알고리즘이야 잘봐

e <= (i -1)/ 2 이게 제일 중요한 부분이야 반복되는 상수가 문자열의 총길이 에서 -1 한거에 나누기 2 여야해 그리고 중요한게 저 ≤<= 이 코드야 이렇게 할거 아니면 i/2 해주면되 굳이 이렇게하는 이유는 c언어 문자열 마지막에 널문자인 ‘\0’ 이게 삽입되기 때문이야 이거아니면

str[i] = '\0'; 삽입해서 여기가 문장끝이라고 꼭 알려줘

profile
코딩

0개의 댓글