1、A First Book of ANSI C Fourth Edition,Chapter 3 Processing and Interactive Input,A First Book of ANSI C, Fourth Edition,2,Objectives,Assignment Mathematical Library Functions Interactive Input Formatted Output,A First Book of ANSI C, Fourth Edition,3,Objectives (continued),Symbolic Constants Case St
2、udy: Interactive Input Common Programming and Compiler Errors,A First Book of ANSI C, Fourth Edition,4,Assignment,The general syntax for an assignment statement isvariable = operand; The operand to the right of the assignment operator (=) can be a constant, a variable, or an expression The equal sig
3、n in C does not have the same meaning as an equal sign in algebra length=25; is read “length is assigned the value 25” Subsequent assignment statements can be used to change the value assigned to a variable length = 3.7; length = 6.28;,A First Book of ANSI C, Fourth Edition,5,Assignment (continued),
4、The operand to the right of the equal sign in an assignment statement can be a variable or any valid C expressionsum = 3 + 7;product = .05 * 14.6; The value of the expression to the right of = is computed first and then the calculated value is stored in the variable to the left of = Variables used i
5、n the expression to the right of the = must be initialized if the result is to make sense amount + 1892 = 1000 + 10 * 5 is invalid!,A First Book of ANSI C, Fourth Edition,6,Assignment (continued),If width was not initialized, the computer uses the value that happens to occupy that memory space previ
6、ously (compiler would probably issue a warning),A First Book of ANSI C, Fourth Edition,7,Assignment (continued),= has the lowest precedence of all the binary and unary arithmetic operators introduced in Section 2.4 Multiple assignments are possible in the same statementa = b = c = 25; All = operator
7、s have the same precedence Operator has right-to-left associativity c = 25; b = c; a = b;,A First Book of ANSI C, Fourth Edition,8,Implicit Type Conversions,Data type conversions take place across assignment operators double result; result = 4; /integer 4 is converted to 4.0 The automatic conversion
8、 across an assignment operator is called an implicit type conversion int answer; answer = 2.764; /2.764 is converted to 2 Here the implicit conversion is from a higher precision to a lower precision data type; the compiler will issue a warning,A First Book of ANSI C, Fourth Edition,9,Explicit Type C
9、onversions (Casts),The operator used to force the conversion of a value to another type is the cast operator(dataType) expression where dataType is the desired data type of the expression following the cast Example: If sum is declared as double sum;, (int) sum is the integer value determined by trun
10、cating sums fractional part,A First Book of ANSI C, Fourth Edition,10,Assignment Variations,sum = sum + 10 is not an equationit is an expression that is evaluated in two major steps,A First Book of ANSI C, Fourth Edition,11,Assignment Variations (continued),A First Book of ANSI C, Fourth Edition,12,
11、Assignment Variations (continued),A First Book of ANSI C, Fourth Edition,13,Assignment Variations (continued),Assignment expressions like sum = sum + 25 can be written using the following operators: += -= *= /= %= sum = sum + 10 can be written as sum += 10 price *= rate is equivalent to price = pric
12、e * rate price *= rate + 1 is equivalent to price = price * (rate + 1),A First Book of ANSI C, Fourth Edition,14,Accumulating,The first statement initializes sum to 0 This removes any previously stored value in sum that would invalidate the final total A previously stored number, if it has not been
13、initialized to a specific and known value, is frequently called a garbage value,A First Book of ANSI C, Fourth Edition,15,Accumulating (continued),A First Book of ANSI C, Fourth Edition,16,Accumulating (continued),A First Book of ANSI C, Fourth Edition,17,Counting,A counting statement is very simila
14、r to the accumulating statementvariable = variable + fixedNumber; Examples: i = i + 1; and m = m + 2; Increment operator (+): variable = variable + 1 can be replaced by variable+ or +variable,A First Book of ANSI C, Fourth Edition,18,Counting (continued),A First Book of ANSI C, Fourth Edition,19,Cou
15、nting (continued),A First Book of ANSI C, Fourth Edition,20,Counting (continued),When the + operator appears before a variable, it is called a prefix increment operator; when it appears after a variable, it is called postfix increment operator k = +n; is equivalent to n = n + 1; / increment n first
16、k = n; / assign ns value to k k = n+; is equivalent to k = n; / assign ns value to k n = n + 1; / and then increment n,A First Book of ANSI C, Fourth Edition,21,Counting (continued),Prefix decrement operator: the expression k = -n first decrements the value of n by 1 before assigning the value of n
17、to k Postfix decrement operator: the expression k = n- first assigns the current value of n to n and then reduces the value of n by 1,A First Book of ANSI C, Fourth Edition,22,Counting (continued),A First Book of ANSI C, Fourth Edition,23,Mathematical Library Functions,A First Book of ANSI C, Fourth
18、 Edition,24,Mathematical Library Functions (continued),The argument to sqrt must be floating-point value; passing an integer value results in a compiler error Return value is double-precision Must include #include ,A First Book of ANSI C, Fourth Edition,25,Mathematical Library Functions (continued),
19、A First Book of ANSI C, Fourth Edition,26,Mathematical Library Functions (continued),A First Book of ANSI C, Fourth Edition,27,Mathematical Library Functions (continued),Argument need not be a single constant,A First Book of ANSI C, Fourth Edition,28,Mathematical Library Functions (continued),The st
20、ep-by-step evaluation of the expression3.0 * sqrt(5 * 33 - 13.91) / 5is (see next slide),A First Book of ANSI C, Fourth Edition,29,Mathematical Library Functions (continued),A First Book of ANSI C, Fourth Edition,30,Mathematical Library Functions (continued),Determine the time it takes a ball to hit
21、 the ground after it has been dropped from an 800-foot tower time = sqrt(2 * distance/g), where g = 32.2 ft/sec2,A First Book of ANSI C, Fourth Edition,31,Mathematical Library Functions (continued),A First Book of ANSI C, Fourth Edition,32,Interactive Input,A First Book of ANSI C, Fourth Edition,33,
22、Interactive Input (continued),This program must be rewritten to multiply different numbers scanf() is used to enter data into a program while it is executing; the value is stored in a variable It requires a control string as the first argument inside the function name parentheses,A First Book of ANS
23、I C, Fourth Edition,34,Interactive Input (continued),The control string passed to scanf() typically consists of conversion control sequences only scanf() requires that a list of variable addresses follow the control string scanf(“%d“, ,A First Book of ANSI C, Fourth Edition,35,Interactive Input (con
24、tinued),A First Book of ANSI C, Fourth Edition,36,Interactive Input (continued),This statement produces a prompt,Address operator (&),A First Book of ANSI C, Fourth Edition,37,Interactive Input (continued),scanf() can be used to enter many values scanf(“%f %f“, causes scanf() to look for three chara
25、cters, each character separated by exactly one space,A First Book of ANSI C, Fourth Edition,38,Interactive Input (continued),In printing a double-precision number using printf(), the conversion control sequence for a single-precision variable, %f, can be used When using scanf(), if a double-precisio
26、n number is to be entered, you must use the %lf conversion control sequence scanf() does not test the data type of the values being entered In scanf(“%d %f“, &num1, &num2), if user enters 22.87, 22 is stored in num1 and .87 in num2,A First Book of ANSI C, Fourth Edition,39,Caution: The Phantom Newli
27、ne Character,A First Book of ANSI C, Fourth Edition,40,Caution: The Phantom Newline Character (continued),The following is a sample run for Program 3.10: Type in a character: m The keystroke just accepted is 109 Type in another character: The keystroke just accepted is 10,A First Book of ANSI C, Fou
28、rth Edition,41,Caution: The Phantom Newline Character (continued),A First Book of ANSI C, Fourth Edition,42,Caution: The Phantom Newline Character (continued),A First Book of ANSI C, Fourth Edition,43,A First Look at User-Input Validation,A First Book of ANSI C, Fourth Edition,44,A First Look at Use
29、r-Input Validation (continued),As written, Program 3.12 is not robust The problem becomes evident when a user enters a non-integer value Enter three integer numbers: 10 20.68 20 The average of 10, 20, and -858993460 is -286331143.333333 Handling invalid data input is called user-input validation Val
30、idating the entered data either during or immediately after the data have been entered Providing the user with a way of reentering any invalid data,A First Book of ANSI C, Fourth Edition,45,Formatted Output,6 18 124 - 148,Output is not aligned,A First Book of ANSI C, Fourth Edition,46,Formatted Outp
31、ut (continued),618 124 - 148,Field width specifier,A First Book of ANSI C, Fourth Edition,47,Formatted Output (continued),A First Book of ANSI C, Fourth Edition,48,Format Modifiers,Left justification: printf(“%-10d“,59); produces the display 59 Explicit sign display: printf(“%+10d“,59); produces the
32、 display +59 Format modifiers may be combined %-+10d would cause an integer number to both display its sign and be left-justified in a field width of 10 spaces The order of the format modifiers is not critical %+-10d is the same,A First Book of ANSI C, Fourth Edition,49,Other Number Bases Optional,T
33、he decimal (base 10) value of 15 is 15. The octal (base 8) value of 15 is 17. The hexadecimal (base 16) value of 15 is f.,A First Book of ANSI C, Fourth Edition,50,Other Number Bases (continued),A First Book of ANSI C, Fourth Edition,51,Other Number Bases (continued),The decimal value of the letter
34、a is 97. The octal value of the letter a is 141. The hex value of the letter a is 61.,A First Book of ANSI C, Fourth Edition,52,Other Number Bases (continued),A First Book of ANSI C, Fourth Edition,53,Symbolic Constants,Literal data refers to any data within a program that explicitly identifies itse
35、lf Literal values that appear many times in the same program are called magic numbers C allows you to define the value once by equating the number to a symbolic name #define SALESTAX 0.05 #define PI 3.1416 Also called symbolic constants and named constants,A First Book of ANSI C, Fourth Edition,54,S
36、ymbolic Constants (continued),# sign is a signal to a C preprocessor,A First Book of ANSI C, Fourth Edition,55,Case Study: Interactive Input,A First Book of ANSI C, Fourth Edition,56,Case Study: Interactive Input (continued),A First Book of ANSI C, Fourth Edition,57,Common Programming Errors,Forgett
37、ing to assign initial values to all variables before the variables are used in an expression Calling sqrt() with an integer argument Forgetting to use the address operator, &, in front of variable names in a scanf() function call Not including the correct control sequences in scanf() function calls
38、for the data values that must be entered Including a message within the control string passed to scanf(),A First Book of ANSI C, Fourth Edition,58,Common Programming Errors (continued),Terminating a #define command to the preprocessor with a semicolon Placing an equal sign in a #define command when
39、equating a symbolic constant to a value Using the increment and decrement operators with variables that appear more than once in the same expression Being unwilling to test a program in depth,A First Book of ANSI C, Fourth Edition,59,Common Compiler Errors,A First Book of ANSI C, Fourth Edition,60,C
40、ommon Compiler Errors (continued),A First Book of ANSI C, Fourth Edition,61,Summary,Arithmetic calculations can be performed using assignment statements or mathematical functions The assignment symbol, =, is an operator C provides the +=, -=, *= and /= assignment operators The increment operator, +,
41、 adds 1 to a variable The decrement operator, -, subtracts 1 from a variable C provides library functions for calculating square root, logarithmic, and other mathematical computations,A First Book of ANSI C, Fourth Edition,62,Summary (continued),Mathematical functions may be included within larger e
42、xpressions scanf() is a standard library function used for data input When a scanf() function is encountered, the program temporarily suspends further statement execution until sufficient data has been entered for the number of variable addresses contained in the scanf() function call,A First Book o
43、f ANSI C, Fourth Edition,63,Summary (continued),It is good programming practice to display a message, prior to a scanf() function call, that alerts the user as to the type and number of data items to be entered Field width specifiers can be included with conversion control sequences to explicitly specify the format of displayed fields Each compiled C program is automatically passed through a preprocessor Expressions can be made equivalent to a single identifier using the preprocessor #define command,