C: How to Program / Edition 6

Other Format (Print)
Rent from BN.com
(Save 83%)
Est. Return Date: 06/17/2014
Buy New
Buy New from BN.com
Buy Used
Buy Used from BN.com
(Save 41%)
Item is in good condition but packaging may have signs of shelf wear/aging or torn packaging.
Condition: Used – Good details
Used and New from Other Sellers
Used and New from Other Sellers
from $5.44
Usually ships in 1-2 business days
(Save 96%)
Other sellers (Other Format)
  • All (16) from $5.44   
  • New (2) from $145.00   
  • Used (14) from $5.35   


C How to Program, 6e, is ideal for introductory courses in C Programming. Also for courses in Programming for Engineers, Programming for Business, and Programming for Technology. This text provides a valuable reference for programmers and anyone interested in learning the C programming language.

The Deitels' groundbreaking How to Program series offers unparalleled breadth and depth of object-oriented programming concepts and intermediate-level topics for further study.

Using the Deitels’ signature “Live-Code™ Approach,” this complete, authoritative introduction to C programming offers strong treatment of structured algorithm and program development in ANSI/ISO C with 150 working C programs. Includes rich, 300-page treatment of object-oriented programming in C++ that helps readers interpret the code more effectively.

Read More Show Less

Product Details

  • ISBN-13: 9780136123569
  • Publisher: Prentice Hall
  • Publication date: 11/12/2009
  • Series: Pearson Custom Computer Science Series
  • Edition description: Older Edition
  • Edition number: 6
  • Pages: 1008
  • Sales rank: 1,501,633
  • Product dimensions: 7.00 (w) x 9.00 (h) x 1.50 (d)

Meet the Author

Dr. Harvey Deitel is one of the world's leading computer science instructors and seminar presenters, and author of more than a dozen books. He worked on the pioneering operating system teams in industry and academia that developed many of the techniques at the heart of operating systems like UNIX®, Windows NT™ and OS/2™.

Paul Deitel has taught Visual Basic, Java, C and C++ at numerous hardware and software companies, including Sun Microsystems, Digital Equipment Corporation, IBM, Open Environment Corporation, Adra Systems, and Cambridge Technology Partners, and is himself an expert developer.

The Deitels are principals of Deitel & Associates, Inc., an international training organization specializing in Visual Basic, Java, C and C++, and object technologies.

Read More Show Less

Table of Contents


1 Introduction to Computers, the Internet and the Web

1.1 Introduction

1.2 Computers: Hardware and Software

1.3 Computer Organization

1.4 Personal, Distributed and Client/Server Computing

1.5 The Internet and the World Wide Web

1.6 Machine Languages, Assembly Languages and High-Level Languages

1.7 History of C

1.8 C Standard Library

1.9 C++

1.10 Java

1.11 Fortran, COBOL, Pascal and Ada

1.12 BASIC, Visual Basic, Visual C++, C# and .NET

1.13 Key Software Trend: Object Technology

1.14 Typical C Program Development Environment

1.15 Hardware Trends

1.16 Notes About C and This Book

1.17 Web Resources

2 Introduction to C Programming

2.1 Introduction

2.2 A Simple C Program: Printing a Line of Text

2.3 Another Simple C Program: Adding Two Integers

2.4 Memory Concepts

2.5 Arithmetic in C

2.6 Decision Making: Equality and Relational Operators

3 Structured Program Development in C

3.1 Introduction

3.2 Algorithms

3.3 Pseudocode

3.4 Control Structures

3.5 The if Selection Statement

3.6 The if…else Selection Statement

3.7 The while Repetition Statement

3.8 Formulating Algorithms Case Study 1: Counter-Controlled Repetition

3.9 Formulating Algorithms with Top-Down, Stepwise Refinement Case Study 2: Sentinel-Controlled Repetition

3.10 Formulating Algorithms with Top-Down, Stepwise Refinement Case Study 3: Nested Control Structures

3.11 Assignment Operators

3.12 Increment and Decrement Operators

4 C Program Control

4.1 Introduction

4.2 Repetition Essentials

4.3 Counter-Controlled Repetition

4.4 for Repetition Statement

4.5 for Statement: Notes and Observations

4.6 Examples Using the for Statement

4.7 switch Multiple-Selection Statement

4.8 do…while Repetition Statement

4.9 break and continue Statements

4.10 Logical Operators

4.11 Confusing Equality (==) and Assignment (=) Operators

4.12 Structured Programming Summary

5 C Functions

5.1 Introduction

5.2 Program Modules in C

5.3 Math Library Functions

5.4 Functions

5.5 Function Definitions

5.6 Function Prototypes

5.7 Function Call Stack and Activation Records

5.8 Headers

5.9 Calling Functions By Value and By Reference

5.10 Random Number Generation

5.11 Example: A Game of Chance

5.12 Storage Classes

5.13 Scope Rules

5.14 Recursion

5.15 Example Using Recursion: Fibonacci Series

5.16 Recursion vs. Iteration

6 C Arrays

6.1 Introduction

6.2 Arrays

6.3 Defining Arrays

6.4 Array Examples

6.5 Passing Arrays to Functions

6.6 Sorting Arrays

6.7 Case Study: Computing Mean, Median and Mode Using Arrays

6.8 Searching Arrays

6.9 Multiple-Subscripted Arrays

7 C Pointers

7.1 Introduction

7.2 Pointer Variable Definitions and Initialization

7.3 Pointer Operators

7.4 Passing Arguments to Functions by Reference

7.5 Using the const Qualifier with Pointers

7.6 Bubble Sort Using Call-by-Reference

7.7 sizeof Operator

7.8 Pointer Expressions and Pointer Arithmetic

7.9 Relationship between Pointers and Arrays

7.10 Arrays of Pointers

7.11 Case Study: Card Shuffling and Dealing Simulation

7.12 Pointers to Functions

8 C Characters and Strings

8.1 Introduction

8.2 Fundamentals of Strings and Characters

8.3 Character-Handling Library

8.4 String-Conversion Functions

8.5 Standard Input/Output Library Functions

8.6 String-Manipulation Functions of the String-Handling Library

8.7 Comparison Functions of the String-Handling Library

8.8 Search Functions of the String-Handling Library

8.9 Memory Functions of the String-Handling Library

8.10 Other Functions of the String-Handling Library

9 C Formatted Input/Output

9.1 Introduction

9.2 Streams

9.3 Formatting Output with printf

9.4 Printing Integers

9.5 Printing Floating-Point Numbers

9.6 Printing Strings and Characters

9.7 Other Conversion Specifiers

9.8 Printing with Field Widths and Precision

9.9 Using Flags in the printf Format Control String

9.10 Printing Literals and Escape Sequences

9.11 Reading Formatted Input with scanf

10 C Structures, Unions, Bit Manipulations and Enumerations

10.1 Introduction

10.2 Structure Definitions

10.3 Initializing Structures

10.4 Accessing Structure Members

10.5 Using Structures with Functions

10.6 typedef

10.7 Example: High-Performance Card Shuffling and Dealing Simulation

10.8 Unions

10.9 Bitwise Operators

10.10 Bit Fields

10.11 Enumeration Constants

11 C File Processing

11.1 Introduction

11.2 Data Hierarchy

11.3 Files and Streams

11.4 Creating a Sequential-Access File

11.5 Reading Data from a Sequential-Access File

11.6 Random-Access Files

11.7 Creating a Random-Access File

11.8 Writing Data Randomly to a Random-Access File

11.9 Reading Data from a Random-Access File

11.10 Case Study: Transaction-Processing Program

12 C Data Structures

12.1 Introduction

12.2 Self-Referential Structures

12.3 Dynamic Memory Allocation

12.4 Linked Lists

12.5 Stacks

12.6 Queues

12.7 Trees

13 C Preprocessor

13.1 Introduction

13.2 #include Preprocessor Directive

13.3 #define Preprocessor Directive: Symbolic Constants

13.4 #define Preprocessor Directive: Macros

13.5 Conditional Compilation

13.6 #error and #pragma Preprocessor Directives

13.7 # and ## Operators

13.8 Line Numbers

13.9 Predefined Symbolic Constants

13.10 Assertions

14 Other C Topics

14.1 Introduction

14.2 Redirecting I/O

14.3 Variable-Length Argument Lists

14.4 Using Command-Line Arguments

14.5 Notes on Compiling Multiple-Source-File Programs

14.6 Program Termination with exit and atexit

14.7 volatile Type Qualifier

14.8 Suffixes for Integer and Floating-Point Constants

14.9 More on Files

14.10 Signal Handling

14.11 Dynamic Memory Allocation: Functions calloc and realloc

14.12 Unconditional Branching with goto

15 C++ as a Better C; Introducing Object Technology

15.1 Introduction


15.3 A Simple Program: Adding Two Integers

15.4 C++ Standard Library

15.5 Header Files

15.6 Inline Functions

15.7 References and Reference Parameters

15.8 Empty Parameter Lists

15.9 Default Arguments

15.10 Unary Scope Resolution Operator

15.11 Function Overloading

15.12 Function Templates

15.13 Introduction to Object Technology and the UML

15.14 Wrap-Up

16 Introduction to Classes and Objects

16.1 Introduction

16.2 Classes, Objects, Member Functions and Data Members

16.3 Defining a Class with a Member Function

16.4 Defining a Member Function with a Parameter

16.5 Data Members, set Functions and get Functions

16.6 Initializing Objects with Constructors

16.7 Placing a Class in a Separate File for Reusability

16.8 Separating Interface from Implementation

16.9 Validating Data with set Functions

16.10 Wrap-Up

17 Classes: A Deeper Look, Part 1

17.1 Introduction

17.2 Time Class Case Study

17.3 Class Scope and Accessing Class Members

17.4 Separating Interface from Implementation

17.5 Access Functions and Utility Functions

17.6 Time Class Case Study: Constructors with Default Arguments

17.7 Destructors

17.8 When Constructors and Destructors are Called

17.9 Time Class Case Study: A Subtle Trap–Returning a Reference to a

private Data Member

17.10 Default Memberwise Assignment

17.11 Wrap-Up

18 Classes: A Deeper Look, Part 2

18.1 Introduction

18.2 const (Constant) Objects and const Member Functions

18.3 Composition: Objects as Members of Classes

18.4 friend Functions and friend Classes

18.5 Using the this Pointer

18.6 static Class Members

18.7 Data Abstraction and Information Hiding

18.8 Wrap-Up

19 Operator Overloading

19.1 Introduction

19.2 Fundamentals of Operator Overloading

19.3 Restrictions on Operator Overloading

19.4 Operator Functions as Class Members vs. Global Function

19.5 Overloading Stream Insertion and Stream Extraction Operators

19.6 Overloading Unary Operators

19.7 Overloading Binary Operators

19.8 Dynamic Memory Management

19.9 Case Study: Array Class

19.10 Converting between Types

19.11 Building a String Class

19.12 Overloading ++ and --

19.13 Case Study: A Date Class

19.14 Standard Library Class string

19.15 explicit Constructors

19.16 Proxy Classes

19.17 Wrap-Up

20 Object-Oriented Programming: Inheritance

20.1 Introduction

20.2 Base Classes and Derived Classes

20.3 protected Members

20.4 Relationship between Base Classes and Derived Classes

20.4.1 Creating and Using a CommissionEmployee Class

20.4.2 Creating a BasePlusCommissionEmployee Class Without Using Inheritance

20.4.3 Creating a CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy

20.4.4 CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy Using protected Data

20.4.5 CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy Using private Data

20.5 Constructors and Destructors in Derived Classes

20.6 public, protected and private Inheritance

20.7 Software Engineering with Inheritance

20.8 Wrap-Up

21 Object-Oriented Programming: Polymorphism

21.1 Introduction

21.2 Polymorphism Examples

21.3 Relationships Among Objects in an Inheritance Hierarchy

21.3.1 Invoking Base-Class Functions from Derived-Class Objects

21.3.2 Aiming Derived-Class Pointers at Base-Class Objects

21.3.3 Derived-Class Member-Function Calls via Base-Class Pointers

21.3.4 Virtual Functions

21.3.5 Summary of the Allowed Assignments Between Base-Class and Derived-Class Objects and Pointers

21.4 Type Fields and switch Statements

21.5 Abstract Classes and Pure virtual Functions

21.6 Case Study: Payroll System Using Polymorphism

21.6.1 Creating Abstract Base Class Employee

21.6.2 Creating Concrete Derived Class SalariedEmployee

21.6.3 Creating Concrete Derived Class HourlyEmployee

21.6.4 Creating Concrete Derived Class CommissionEmployee

21.6.5 Creating Indirect Concrete Derived Class BasePlusCommissionEmployee

21.6.6 Demonstrating Polymorphic Processing

21.7 (Optional) Polymorphism, Virtual Functions and Dynamic Binding “Under the Hood”

21.8 Case Study: Payroll System Using Polymorphism and Runtime Type Information with Downcasting, dynamic_cast, typeid and type_info

21.9 Virtual Destructors

21.10 Wrap-Up

22 Templates

22.1 Introduction

22.2 Function Templates

22.3 Overloading Function Templates

22.4 Class Templates

22.5 Nontype Parameters and Default Types for Class Templates

22.6 Notes on Templates and Inheritance

22.7 Notes on Templates and Friends

22.8 Notes on Templates and static Members

22.9 Wrap-Up

23 Stream Input/Output

23.1 Introduction

23.2 Streams

23.2.1 Classic Streams vs. Standard Streams

23.2.2 iostream Library Header Files

23.2.3 Stream Input/Output Classes and Objects

23.3 Stream Output

23.3.1 Output of char
• Variables

23.3.2 Character Output Using Member Function put

23.4 Stream Input

23.4.1 get and getline Member Functions

23.4.2 istream Member Functions peek, putback and ignore

23.4.3 Type-Safe I/O

23.5 Unformatted I/O Using read, write and gcount

23.6 Introduction to Stream Manipulators

23.6.1 Integral Stream Base: dec, oct, hex and setbase

23.6.2 Floating-Point Precision (precision, setprecision)

23.6.3 Field Width (width, setw)

23.6.4 User-Defined Output Stream Manipulators

23.7 Stream Format States and Stream Manipulators

23.7.1 Trailing Zeros and Decimal Points (showpoint)

23.7.2 Justification (left, right and internal)

23.7.3 Padding (fill, setfill)

23.7.4 Integral Stream Base (dec, oct, hex, showbase)

23.7.5 Floating-Point Numbers; Scientific and Fixed Notation (scientific, fixed)

23.7.6 Uppercase/Lowercase Control (uppercase)

23.7.7 Specifying Boolean Format (boolalpha)

23.7.8 Setting and Resetting the Format State via Member Function flags

23.8 Stream Error States

23.9 Tying an Output Stream to an Input Stream

23.10 Wrap-Up

24 Exception Handling

24.1 Introduction

24.2 Exception-Handling Overview

24.3 Example: Handling an Attempt to Divide by Zero

24.4 When to Use Exception Handling

24.5 Rethrowing an Exception

24.6 Exception Specifications

24.7 Processing Unexpected Exceptions

24.8 Stack Unwinding

24.9 Constructors, Destructors and Exception Handling

24.10 Exceptions and Inheritance

24.11 Processing new Failures

24.12 Class auto_ptr and Dynamic Memory Allocation

24.13 Standard Library Exception Hierarchy

24.14 Other Error-Handling Techniques

24.15 Wrap-Up

A Operator Precedence Charts

B ASCII Character Set

C Number Systems

C.1 Introduction

C.2 Abbreviating Binary Numbers as Octal and Hexadecimal Numbers

C.3 Converting Octal and Hexadecimal Numbers to Binary Numbers

C.4 Converting from Binary, Octal or Hexadecimal to Decimal

C.5 Converting from Decimal to Binary, Octal or Hexadecimal

C.6 Negative Binary Numbers: Two’s Complement Notation

D Game Programming: Solving Sudoku

D.1 Introduction

D.2 Deitel Sudoku Resource Center

D.3 Solution Strategies

D.4 Programming Sudoku Puzzle Solvers

D.5 Generating New Sudoku Puzzles

D.6 Conclusion

Appendices on the Web

Appendices E through I are PDF documents posted online at the book’s Companion

Website (located at www.pearsonhighered.com/deitel).

E Game Programming with the Allegro C Library

E.1 Introduction

E.2 Installing Allegro

E.3 A Simple Allegro Program

E.4 Simple Graphics: Importing Bitmaps and Blitting

E.5 Animation with Double Buffering

E.6 Importing and Playing Sounds

E.7 Keyboard Input

E.8 Fonts and Displaying Text

E.9 Implementing the Game of Pong

E.10 Timers in Allegro

E.11 The Grabber and Allegro Datafiles

E.12 Other Allegro Capabilities

E.13 Allegro Resource Center

F Sorting: A Deeper Look

F.1 Introduction

F.2 Big O Notation

F.3 Selection Sort

F.4 Insertion Sort

F.5 Merge Sort

G Introduction to C99

G.1 Introduction

G.2 Support for

G.3 New C99

G.4 // Comments

G.5 Mixing Declarations and Executable Code

G.6 Declaring a Variable in a for Statement Header

G.7 Designated Initializers and Compound Literals

G.8 Type bool

G.9 Implicit int in Function Declarations

G.10 Complex Numbers

G.11 Variable-Length Arrays

G.12 The snprintf Function: Helping Avoid Hacker Attacks

G.13 Additions to the Preprocessor

G.14 Other C99 Features

G.15 Web Resources

H Using the Visual Studio Debugger

H.1 Introduction

H.2 Breakpoints and the Continue Command

H.3 Locals and Watch Windows

H.4 Controlling Execution Using the Step Into, Step Over, Step Out and Continue Commands

H.5 Autos Window

H.6 Wrap-Up

I Using the GNU Debugger

I.1 Introduction

I.2 Breakpoints and the run, stop, continue and print Commands

I.3 print and set Commands

I.4 Controlling Execution Using the step, finish and next Commands

I.5 watch Command

I.6 Wrap-Up


Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)