#include<stdio.h>
float c2f(float c)
{
 float f;
 f=c*9/5+32;
 return f;
}
void main()
{
 //섭씨온도(c)를 실수(%f)로 입력(scanf)하면, 
 //이를 화씨(f)로 바꾸어(화씨온도=(섭씨온도-32)*5/9), 
 //실수(float)로 계산하고, 그 화씨온도 값을 출력(%f)하는 프로그램
 float c,f;
 printf("섭씨온도를 입력하세요=");
 scanf("%f",&c);
 //c=(f-32)*5/9; //섭씨온도의 변환공식  
 //f=c*9/5+32;       //화씨온도의 변환공식 
 f=c2f(c);
 printf("화씨온도로 %3.1f도입니다.\n",f);
}


<코드 설명>

이 예제는 반환값을 갖는 함수 또는 데이터형을 갖는 함수(typed funtion)의 예이다. 함수가 main()함수처럼 반환값을 갖지 않을 때에는 'void'라는 데이터 형을 붙여 준다. 여기서 'void'는 '비어있다' 라는 뜻의 단어이다. 그러나 이번 예제 처럼, 섭씨온도값을 main()으로 부터 넘겨받아, 화씨온도를 계산한 후, 그 화씨온도값을 다시 main()함수로 넘겨줄 때, 다음 명령줄을 사용한다.

return f;

즉 변수 f의 값을 호출한 함수로 넘겨주라는 뜻이다. 따라서 이번예제에서는 함수 c2f()를 호출한 함수가 main()함수이므로, 함수 main()에게 실수변수 f의 값을 넘겨주게된다. 따라서 c2f()함수의 type은 넘겨주는 값의 데이터형인 'float'가 되는 것이다. 따라서 다음과 같이 함수정의부의 헤드를 작성한다.  

float c2f(float c)

또한 함수 호출부를 살펴보면 아래의 명령줄과 같이

 f=c2f(c);

저장할 변수=함수명(인수리스);

의 형태로 호출한다. 즉 단순히 함수만 호출하는 것이 아니라, 함수를 호출했을 때, 그 함수로 부터 넘어오는 값을 저장하는 하는 형태를 취한다. 따라서 c2f()함수에 변수 c를 보내면서 호출하고, c2f()함수가 실행이 완료되었을 때, c2f()함수가 보내주는 값을 변수 f에 저장하라라는 뜻이된다.

최종적으로 위 프로그램을 실행시키면, 다음과 같은 결과를 얻는다.



http://blog.joins.com/kckohkoh/7982677



Example. 문자 하나와 온도를 실수형으로 입력받아, 문자가 F나 f 이면 입력 받은 값을 화씨로 간주하고 섭씨로 바꾸고, 입력 받은 문자가 C나 c 이면 입력 받은 값을 섭씨로 간주하고 화씨로 바꾸어 결과를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
void main()
{
 char select;
 double f, c;
 printf("온도단위를 입력하시오.(C, c = 섭씨 F, f = 화씨) => ");
 scanf("%c", &select);
 if(select == 'c' || select == 'C' || select == 'f'|| select == 'F')
 {
  switch(select)
  {
   case 'c':
   case 'C':
    printf("섭씨 온도 입력하세요 : ");
    scanf("%lf", &c);
    f = 1.8 * c + 32;
    printf("입력한 섭씨 %g도는 화씨 %g도입니다.\n", c, f);
    break;
   case 'f':
   case 'F':
    printf("화씨 온도를 입력하세요 : ");
    scanf("%lf", &f);
    c = 5 * (f - 32) / 9;
    printf("입력한 화씨 %g도는 섭씨 %g도입니다.\n", f, c);
    break;
     }
 }
 else
  printf("온도단위는 c, C, f, F 중 하나입니다.\n");
}
이 게시물을..

토맛토