목록프로그래밍/연습문제 (24)
ITGenerations
while(num!=0)에서 왜 num!=0을 쓰는지 잘 이해가 안갔는데문제에서 0이 되면 반복을 종료하라고 했다. 처음에는 num==0이라고 생각했다왜냐하면 num이 0일때까지 반복하라는것인줄 알았기 때문이다.그러나 이뜻이 아니다. num!=0 이 0이 아니면 계속 반복하라는것이다.0이면 반복을 멈추라는것이다.그러나 여기서 의문이 가는것은 왜 num==0은 오류는 없는데 작동이 안되는것일까? 누가 이유를 알면 설명해주시면 감사합니다 ^^ 코드 #include int main(void){int num=1,result=0;while (num!= 0)// 0이 아니면 계속 반복하라는 의미{printf("입력:");scanf("%d", &num);result += num; }printf("%d\n", resu..
문제 프로그램 사용자로부터 양의 정수를 하나 입력 받아서 그 수만큼 3의 배수를 출력하는 것이다.필자가 푼 방법은, 다음의 추가 조건하에 풀었다."3배수를 출력하되 출력 순서는 관계가 없다."달리 말하면 결과만 제대로 나오면 된다.는 마인드로 풀었는데요. 07-1-1을 푼것과 비슷하게 풀었네요. 코드#include int main(void){int num; printf("입력:");scanf("%d", &num); while (num > 0){printf("%d\n", 3 * num);num--;} return 0;}
#include int main(void){int num; printf("반복횟수: 입력");scanf("%d", &num); while (num>0){printf("Hello world!\n");num--;} return 0;} 복습하다가 좀 더 짧은(1줄 정도더 짧은?) 코드로 구현했습니다.원래 정답은 ++로 진행하는데 그것보다는 짧네요.
#include int MaxNum(int n1, int n2, int n3){ if (n1 > n2)return (n1 > n3) ? n1 : n3;elsereturn (n2 > n3) ? n2 : n3; } /*n1>n2일 때 return (n1>n3)해서 n1 하고 n3를 출력하는 이유는둘 중에 더큰수비교를 중첩해서 결국 3가지 중 가장 큰 수를출력하기 위해서이다. */int MinNum(int n1, int n2, int n3){if (n1 > n2)return (n2 > n3) ? n3 : n2;elsereturn (n1 > n3) ? n3 : n1; } /*n1>n2일 때 return(n2>n3)?n3:n2;를 하는 이유는maxnum코드와 반대로 하기 위해서다.즉, 더 작은수를 구하기 위해서인..
#include int main(void){int num;printf("자연수 입력:");scanf("%d", &num); if (num == 1)goto one;else if (num == 2)goto two;else if (num == 3)goto three;elsegoto other; one:printf("자연수 1 입력 하셨습니다\n");goto end; two:printf("자연수 2 입력 하셧습니다\n");goto end;three:printf("자연수 3 입력 하셨습니다\n");goto end;other:printf("4이상의 자연수를 입력하였습니다\n"); end: return 0;} 책에서는 goto문이 프로그래밍을 복잡하게 만들고 흐름을 방해하고.딱히 goto문을 써야 하는 상황이 존재..