지금 숫자를 하나 입력받아서 그 숫자를 2진법으로 바꿨을 때 1이 몇개나 있는지 세주는 프로그램을 작성했는데요.
예를 들면 71을 입력하면 71은 2진수로 1000111이라 1이 네개니깐 4를 출력해주는 프로그램이요.
이걸 제 소스대로 하니까 컴파일도 잘 되고 실행도 잘 됐는데
제출을 하려고 보니
컴퓨터로 자동체크해주는 녀석이 쓸데없는 소스가 있거나 무한루프에 빠질 가능성이 있다고 그러네요.
이 소스 어디에 문제가 있나요?
참고로 숫자는 0이상 128 미만의 숫자까지만 입력받는 걸로 돼 있어서 아래에 있는 if문도 추가한 거에요.
#include <stdio.h>int main(void){ int num, i, count; scanf("%d", &num); if(num>128 || num<0) return(0); else{ count = 1; for(i=num;i/2!=1;){ if(i%2==1){ count++; i /= 2; } else if(i%2==0){ i /= 2; } } printf("The number of ones in %d is %d.\n", num, count); return(0); }}