프로그래밍

 3198, 1/160 회원가입  로그인  
   sobos103
   C언어에 대해서...

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6383 [복사]


C언어를 공부하다가 이해가 안가서 물어 봅니다.
#include<stdio.h>
int main(void)
{
        
        int i, num;
        printf("0부터 num까지의 덧셈, num은? ");
        scanf("%d", &num);

        int total=0;
        for(i=0; i<num+1; i++)
                total+=i;
        
        printf("0부터 %d까지 덧셈결과: %d \n", num, total);
        return 0;
}

이 소스를 보고 설명점 해주세요.. 결과 값이 어떤 순서로 나오는 건지 책을 봐도 이해가 잘 가지 않아서요.
그리고 보너스로 이것도 설명점 해주세요..^^
#include<stdio.h>
int main(void)
{
        double total=0.0;
        double input=0.0;
        int num=0;

        for( ; input>=0.0 ;)
        {
                total+=input;
                printf("실수 입력(minus to quit) : ");
                scanf("%lf", &input);
                num++;
        }
        printf("평균: %f \n", total/(num-1));
        return 0;
}

  Hit : 6170     Date : 2013/09/08 03:04



    
Chris Ruiel 에...설명드리겠습니다...

주석으로 첨부할께요^^
-----소스내용---

#include<stdio.h> // stdio.h 헤더파일을 포함시킵니다.
int main(void) // main 함수 선언 int 형 인자값은 void이니 없네요.
{

int i, num; // 정수형 변수 i 와 num을 초기값을 주지않고 선언합니다.
printf("0부터 num까지의 덧셈, num은? "); // printf문이 실행됩니다.출력은 0부터 num까지의 덧셈,num은?(커서) 겠네요
scanf("%d", &num); // 정수형값을 입력받아서 num변수에 그 정수값을 저장시킵니다.

int total=0; // 정수형변수 total을 선언하고 그 초기값을 0으로 줍니다.
for(i=0; i<num+1; i++) // for반복문을 실행합니다 i값을 0으로 초기화시키고 i의 값이 입력받은 num값+1의 값보다 작을때까지 반복문을 실행합니다.
total+=i; // total+=i를 풀어서 쓴다면 total = total+i 가 됩니다 즉 total이라는 변수에있는값고 i값을 더해서 total변수로 저장하라는 뜻입니다. 뒤의 total+i가 먼저 계산됩니다.

printf("0부터 %d까지 덧셈결과: %d \n", num, total); // printf문을 실행합니다 출력 정수형을 출력(%d)하는데
//출력순서는 num,total 순서로 출력합니다.즉 num값은 초기에 받은 숫자를 출력할것이고
// total 값은 for문이 전부 실행되고나서 최정적으로 더한값을 출력할 것입니다.
// 출력은 mum값이 10일 경우
//0부터 10까지 덧셈결과:55 일것입니다.
return 0; // 정수형 main함수를 선언하였기때문에 return 값으로 0 을줘서 프로그램을 종료시킵니다.
}
2013/10/05  
Chris Ruiel 요것도 소스에 주석을 달겠습니다.

----- 소스 내용---------
#include<stdio.h> // stdio.h 헤더파일을 포함 시킵니다.
int main(void) // main함수 선언부분입니다.
{
double total=0.0; // double 형 변수 total을 선언하고 그 실수(너 실수했어의 실수가 아닙니다)값으로
//0.0의 값을 저장시킵니다. 참고로 소수점을 저장할때는 float 형과 double형을 선언합니다 int형(정수형)으로
//선언할경우 소수점 밑의 자릿수자는 버림을 취하게 됩니다.
double input=0.0; // double형 변수 input을 선언하고 그 값으로 0.0을 저장합니다.
int num=0; // 정수형변수 num을 선언하고 값으로 0을 저장합니다.

for( ; input>=0.0 ;) //조건식입니다 for의 조건식 즉 input값이 0.0보다 크거나 같다면 입니다
//true값이기때문에 for문이 실행됩니다
{
total+=input; // total = total+input 입니다. 즉 total값과 input값을 더해서 total 변수에 저장합니다.
printf("실수 입력(minus to quit) : "); //printf문이 실행됩니다 출력은 실수입력(minus to quit):입니다.
scanf("%lf", &input); // long float 즉..double형 범위만큼 입력받을수있고 그값을 input에 저장시킵니다.
num++; //mum값을 1만큼 증가시킵니다.
}
printf("평균: %f \n", total/(num-1)); //total 값을 num의 최종값 - 1 한값으로 나눈다음 그 결과값을 출력하라 입니다.
// 소수자리까지 출력될것입니다 float형..
return 0; //프로그램을 종료합니다.
}
---- 소스 종료 ----------

---참고사항 ------------

input 1 total 0 num 1
input 1 total 1 num 2
input 1 total 2 num 3
input -1
----------------------
처음 입력값에 1을 입력했을경우 최초의 total 값은 0 입니다
왜냐하면 scanf로 input값을 입력받아서 저장하기전에 total+=input 이 적용 되었기 때문입니다.
즉 초기값인 0이 적용 되게 됩니다.
두번째로 다시 for문으로 돌아와서 input에 저장되어있는값을 total에 저장시킵니다.
그러므로 두번째 for문 실행을 할때에 total 값이 1이 되는것입니다.
세번째 for문도 input에 입력된 1을 total =total+input 수식에 의거해서 total 값에는 2가 저장됩니다.
그리고 마지막 평균 출력에서 total 을 num-1한 값만큼으로 나누기때문에 2/2가 되서 평균값은 1이 됩니다.

이상입니다^^
2013/10/05