C언어 문제 질문입니다..ㅠㅠ
조회수 643회
1=1
1+3=4
1+3+6=10
1+3+6+10=20
1+3+6+10+15=35
.
.
.
이런식으로 15개 항의 합을 중간결과와 함께 출력하는 프로그램을 작성하시오. 라는 문제입니다.
공차가 2,3,4,5로 증가하는 등차수열의 합
이렇게 문제가 나와있고
#include <stdio.h>
int main()
{
int sum = 0;
int i, j, k;
for (i = 1; i <= 15; i++)
{
k = 3;
j = 1;
if (i == 1) //첫번째 반복일 때
{
printf("%d", j);
sum += j;
}
else //두번째 반복부터
{
printf("%d+", j); //앞에 1+가 붙는다
for (j = 3; j <= i; j = j++) // 그 다음부터
{
printf("%d+", k);
k += j;
sum += k;
}
}
printf("=%d\n", sum);
}
return 0;
}
이건 제가 짠 코드인데요..C언어 공부중인데 너무 어렵네용 고수님들 도와주세욤ㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
#include <stdio.h> int main() { int i = 0, j = 1; // 반복문 구현을 위한 변수 int sum = 0, temp = 0; // 누적합계 및 임시합계 변수 int plus_num = 2; // 증가되는 수 (2,3,4....) for(i=1;i<=15;i++) { printf("%d",j); // 시작점 1 출력 temp += j; // 임시 합계에 시작점 누적 sum += temp; // 누적 합계에 시작점 누적 for(j=1;j<=i;j++) { if(j>=i) break; else { temp += plus_num; // 임시합계에 증가수를 더함으로 다음 더해질 수 저장 printf(" + %d",temp); // 다음 수 출력 plus_num++; // 증가되는 수 +1 sum += temp; // 누적합계에 다음수 누적 } } printf(" = %d \n",sum); // 누적합계 출력 j = 1; sum = 0; temp = 0; plus_num = 2; // 다음 반복을 위해 각종 변수 초기화 } return 0; }
동작원리 파악하시고 , 저보다 더 효율적인 코드( 변수나 연산을 줄임)를 직접 만들어보세요.
그리고 개인적인 생각이지만, 안풀리는 알고리즘이 있으면 그림판에 프로그램 구조를 그리면서 자신이 어느부분에서 막히는지 파악하며 3시간동안은 고민해보세요~
남의 코드를 보고 구현하기보다 자신이 몇날몇일을 고민해서라도 직접 구현한건 이해하는 정도가 다릅니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력