C언어에서 반복문을 사용한 계산질문
조회수 612회
1 =1
1+(1+2) =4
1+(1+2)+(1+2+3) = 10
1+(1+2)+(1+2+3)+(1+2+3+4) =20
1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5) = 35
를 결과로 출력하는 코드를 visual studio로 출력하고 싶은데요.
#include <stdio.h>
int main()
{
int sum = 0;
for (int i = 1; i <= 5; i++)
{
if (i > 1)
{
printf("(");
for (int j = 1; j <= 5; j++)
{
if (j <= i)
if (j == 1)
printf("1");
else
printf("+%d", j);
}
printf(")");
printf("\n");
}
}
return 0;
}
여기까지는 했는데 그 다음을 모르겠어요.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
#include <stdio.h> int main() { int i=0,j=0; // j -> 1부터시작해 i까지 더하는 변수 i -> 총 5번 반복 연산을 위한 변수 int sum = 0; // 합계 int max = 0; // 괄호 내 숫자의 갯수 for(i=1;i<=5;i++) { j=1; if(i==1) // 첫번째 반복일때 { printf("%d",j); sum += j; } else // 두번째부터의 반복일때 { max = 2; // max 초기화 ( 두번째 괄호안에 2개이상의 숫자가 들어가므로 2 초기화 ) printf("%d + ",j); // 1 + sum += j; // 합계값 누적 do { j=1; // j 값 초기화 printf("( %d",j); sum += j; do { printf(" + %d",++j); sum += j; }while(j!=max); // 괄호내 숫자의 수만큼 반복 if(max==i) printf(" )"); // 이어질 괄호가 없는경우 ")" 출력 else printf(" ) + "); // 이어질 괄호가 있는경우 ") +" 출력 max++; // 괄호내 숫자 갯수 추가 }while((max-1)!=i);// 괄호 내 숫자 -1 값이 i일 경우 반복문탈출 // i 값과 max값을 비교하기전 max값이 1증가하므로 -1을 해줘야 한다 } printf(" = %d \n",sum); // 합계 출력 sum = 0; // 합계 초기화 } return 0; }
코드가 조금 복잡하고 이중반복을 써서 혼잡스럽네요.
제가 써놓은 주석보다 코드를 먼저 보고 어떻게 코드가 돌아가는지 파악하고 주석을 참고하시길 바랍니다.
c를 처음 접하시는분이라면 조금 구현하는데 골치아프고 어려웠을만한 문제인것같습니다.
제 코드를 확실히 이해하신후 직접 구현해보시는걸 추천드립니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력