영어로 읽는 코딩

04 [C] 화씨와 섭씨 전환 코드

#include <stdio.h>

/* print Farenheit-Celsius table
   for fahr = 0, 20, ..., 300*/


int main() {
    int fahr, celsius;
	int lower, upper, step;

	lower = 0;
	upper = 300;
	step = 20;

	fahr = lower;
	while (fahr <= upper) {
		celsius = 5 * (fahr - 32) / 9;
		printf("%d\t%d\n", fahr, celsius);
		fahr = fahr + step;
	}
}

/*The C Programming Language (second edition, Prentice Hall)
by Brian W. Kernighan and Dennis M. RitchieS*/

 

* 주석 설명

 

The two lines

/* print Fahrenheit-Celsius table

for fahr = 0, 20, ... , 300 */

are a comment, which in this case explains briefly what the program does. Any characters between / * and */ are ignored by the compiler; they may be used freely to make a program easier to understand. Comments may appear anywhere a blank or tab or newline can.

 

*변수 설명

In C, all variables must be declared before they are used, usually at the beginning of the function before any executable statements. A declaration announces the properties of variables; it consists of a type name and a list of variables, such as

int fahr, celsius;

int lower, upper, step;

The type int means that the variables listed are integers, by contrast with float, which means floating point, i.e., numbers that may have a fractional part. The range of both int and float depends on the machine you are using; 16-bit ints, which lie between -32768 and +32767, are common, as are 32-bit ints. A float number is typically a 32-bit quantity, with at least six significant digits and magnitude generally between about 10-38 and 10+38.

C provides several other basic data types besides int and float, including:

char       character-a single byte

short      short integer

long       long integer

double   double-precision floating point

 

* 변수 초기화

The sizes of these objects are also machine-dependent. There are also arrays, structures and unions of these basic types, pointers to them, and functions that return them, all of which we will meet in due course.

Computation in the temperature conversion program begins with the assignment statements

lower = 0;

upper = 300;

step = 20;

fahr = lower;

 

which set the variables to their initial values. Individual statements are terminated by semicolons.

 

* while loop

Each line of the table is computed the same way, so we use a loop that repeats once per output line; this is the purpose of the while loop

while (fahr <= upper) {

}

The while loop operates as follows: The condition in parentheses is tested. If it is true (fahr is less than or equal to upper), the body of the loop (the three statements enclosed in braces) is executed. Then the condition is re-tested, and if true, the body is executed again. When the test becomes false (fahr exceeds upper) the loop ends, and execution continues at the statement that follows the loop. There are no further statements in this program, so it terminates.

The body of a while can be one or more statements enclosed in braces, as in the temperature converter, or a single statement without braces, as in

while (i < j)

    i = 2 * i;

 

*코딩 타이핑 스타일

In either case, we will always indent the statements controlled by the while by one tab stop (which we have shown as four spaces) so you can see at a glance which statements are inside the loop. The indentation emphasizes the logical structure of the program. Although C compilers do not care about how a program looks, proper indentation and spacing are critical in making programs easy for people to read. We recommend writing only one statement per line, and using blanks around operators to clarify grouping. The position of braces is less important, although people hold passionate beliefs. We have chosen one of several popular styles. Pick a style that suits you, then use it consistently.

 

* printf

This example also shows a bit more of how printf works. printf is a general-purpose output formatting function, which we will describe in detail in Chapter 7. Its first argument is a string of characters to be printed, with each % indicating where one of the other (second, third, …) arguments is to be substituted, and in what form it is to be printed. For instance, %d specifies an integer argument, so the statement

   printf( ”%d\t%d\n”, fahr, celsius);

causes the values of the two integers fahr and celsius to be printed, with a tab (\t) between them.

......

The printf conversion specification %3.0f says that a floating-point number (here fahr) is to be printed at least three characters wide, with no decimal point and no fraction digits. %6.1f describes another number (celsius) that is to be printed at least six characters wide, with I digit after the decimal point. The output looks like this:

  0       -17.8

 20         -6.7

 40          4.4

Width and precision may be omitted from a specification: %6f says that the number is to be at least six characters wide; %.2f specifies two characters after the decimal point, but the width is not constrained; and %f merely says to print the number as floating point.

 

%d      print as decimal integer

%6d     print as decimal integer, at least 6 characters wide

%f       print as floating point

%6f      print as floating point, at least 6 characters wide

%.2f     print as floating point, 2 characters after decimal point

%6.2f    print as floating point, at least 6 wide and 2 after decimal point

Among others, printf also recognizes %o for octal, %x for hexadecimal, %c for character, %s for character string, and %% for % itself.

 

[C Programming Language, 9-13]

 

댓글

댓글 본문
작성자
비밀번호
버전 관리
Yoo Moon Il
현재 버전
선택 버전
graphittie 자세히 보기