Problem Solving and Program Design in C, Update / Edition 3

Paperback (Print)
Used and New from Other Sellers
Used and New from Other Sellers
from $1.99
Usually ships in 1-2 business days
(Save 97%)
Other sellers (Paperback)
  • All (26) from $1.99   
  • New (4) from $42.99   
  • Used (22) from $1.99   
Sort by
Page 1 of 1
Showing All
Note: Marketplace items are not eligible for any coupons and promotions
Seller since 2008

Feedback rating:



New — never opened or used in original packaging.

Like New — packaging may have been opened. A "Like New" item is suitable to give as a gift.

Very Good — may have minor signs of wear on packaging but item works perfectly and has no damage.

Good — item is in good condition but packaging may have signs of shelf wear/aging or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Acceptable — item is in working order but may show signs of wear such as scratches or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Used — An item that has been opened and may show signs of wear. All specific defects should be noted in the Comments section associated with each item.

Refurbished — A used item that has been renewed or updated and verified to be in proper working condition. Not necessarily completed by the original manufacturer.

0201754908 NEW ITEM NOT USE All day low prices, buy from us sell to us we do it all!!

Ships from: Aurora, IL

Usually ships in 1-2 business days

  • Canadian
  • Standard, 48 States
  • Express, 48 States
Seller since 2008

Feedback rating:


Condition: New
2002 Paperback New Ships Fast! Satisfaction Guaranteed!

Ships from: Skokie, IL

Usually ships in 1-2 business days

  • Canadian
  • International
  • Standard, 48 States
  • Standard (AK, HI)
  • Express, 48 States
  • Express (AK, HI)
Seller since 2008

Feedback rating:


Condition: New

Ships from: Chicago, IL

Usually ships in 1-2 business days

  • Standard, 48 States
  • Standard (AK, HI)
Seller since 2015

Feedback rating:


Condition: New
Brand new.

Ships from: acton, MA

Usually ships in 1-2 business days

  • Standard, 48 States
  • Standard (AK, HI)
Page 1 of 1
Showing All
Sort by


Problem solving & program design in C is a revision of the leading book on introductory computer programming and the C programming language, a book that is fully updated with a new chapter entitled "On to C++", and a book that continues its focus on teaching sound problem-solving skills while preparing you for further study in computer science.

This volume provides an excellent introduction to programming, using the powerful but complicated C language. The reader learns the language through implementing the proven Koffman five-step problem solving process.

Read More Show Less

Editorial Reviews

A text for an introductory course in programming methods for students with no previous knowledge of computers or programming. The broad range of case studies and exercises allows instructors to tailor the course for students in various disciplines. The second edition adds descriptions of applications such as video- conferencing, a database, and a compiler; and traces the history of the joint development of UNIX and C. The date of the first edition is not noted. No bibliography. Annotation c. Book News, Inc., Portland, OR (
Read More Show Less

Product Details

  • ISBN-13: 9780201754902
  • Publisher: Pearson Education
  • Publication date: 8/28/2001
  • Edition description: Older Edition
  • Edition number: 3
  • Pages: 770
  • Product dimensions: 7.50 (w) x 9.20 (h) x 1.30 (d)

Table of Contents

1 Overview of Computers and Programming 1
1.1 Electronic Computers Then and Now 2
1.2 Computer Hardware 5
1.3 Computer Software 13
1.4 The Software Development Method 22
1.5 Applying the Software Development Method 25
2 Overview of C 33
2.1 C Language Elements 34
2.2 Variable Declarations and Data Types 41
2.3 Executable Statements 45
2.4 General Form of a C Program 55
2.5 Arithmetic Expressions 59
2.6 Formatting Numbers in Program Output 72
2.7 Interactive Mode, Batch Mode, and Data Files 76
2.8 Common Programming Errors 80
3 Top-Down Design with Functions 95
3.1 Building Programs from Existing Information 96
3.2 Library Functions 105
3.3 Top-Down Design and Structure Charts 112
3.4 Functions without Arguments 114
3.5 Functions with Input Arguments 125
3.6 Common Programming Errors 136
4 Selection Structure: if and switch Statements 145
4.1 Control Structures 146
4.2 Conditions 146
4.3 The if Statement 158
4.4 if Statements with Compound Statements 162
4.5 Decision Steps in Algorithms 166
4.6 More Problem Solving 176
4.7 Nested if Statements and Multiple-Alternative Decisions 179
4.8 The switch Statement 190
4.9 Common Programming Errors 196
5 Repetition and Loop Statements 207
5.1 Repetition in Programs 208
5.2 Counting Loops and the while Statements 210
5.3 Computing a Sum or a Product in a Loop 214
5.4 The for Statement 220
5.5 Conditional Loops 229
5.6 Loop Design 236
5.7 Nested Loops 243
5.8 The do-while Statement and Flag-Controlled Loops 248
5.9 Problem Solving Illustrated 252
5.10 How to Debug and Test Programs 257
5.11 Common Programming Errors 260
6 Modular Programming 277
6.1 Functions with Simple Output Parameters 278
6.2 Multiple Calls to a Function with Input/Output Parameters 287
6.3 Scope of Names 293
6.4 Formal Output Parameters as Actual Arguments 294
6.5 A Program with Multiple Functions 299
6.6 Debugging and Testing a Program System 310
6.7 Common Programming Errors 313
7 Simple Data Types 323
7.1 Representation and Conversion of Numeric Types 324
7.2 Representation and Conversion of Type char 331
7.3 Enumerated Types 334
7.4 Iterative Approximations 340
7.5 Common Programming Errors 350
8 Arrays 363
8.1 Declaring and Referencing Arrays 364
8.2 Array Subscripts 368
8.3 Using for Loops for Sequential Access 370
8.4 Using Array Elements as Function Arguments 376
8.5 Array Arguments 379
8.6 Searching and Sorting an Array 393
8.7 Multidimensional Arrays 398
8.8 Array Processing Illustrated 403
8.9 Common Programming Errors 412
9 Strings 425
9.1 String Basics 426
9.2 String Library Functions: Assignment and Substrings 432
9.3 Longer Strings: Concatenation and Whole-Line Input 441
9.4 String Comparison 446
9.5 Arrays of Pointers 449
9.6 Character Operations 455
9.7 String-to-Number and Number-to-String Conversions 461
9.8 String Processing Illustrated 468
9.9 Common Programming Errors 477
10 Recursion 489
10.1 The Nature of Recursion 490
10.2 Tracing a Recursive Function 495
10.3 Recursive Mathematical Functions 503
10.4 Recursive Functions with Array and String Parameters 510
10.5 Problem Solving with Recursion 516
10.6 A Classic Case Study in Recursion: Towers of Hanoi 525
10.7 Common Programming Errors 530
11 Structure and Union Types 539
11.1 User-Defined Structure Types 540
11.2 Structure Type Data as Input and Output Parameters 546
11.3 Functions Whose Result Values Are Structured 552
11.4 Problem Solving with Structure Types 555
11.5 Parallel Arrays and Arrays of Structures 564
11.6 Union Types (Optional) 576
11.7 Common Programming Errors 583
12 Text and Binary File Processing 595
12.1 Input/Output Files: Review and Further Study 596
12.2 Binary Files 607
12.3 Searching a Database 614
12.4 Common Programming Errors 624
13 Programming in the Large 633
13.1 Using Abstraction to Manage Complexity 634
13.2 Personal Libraries: Header Files 637
13.3 Personal Libraries: Implementation Files 642
13.4 Storage Classes 645
13.5 Modifying Functions for Inclusion in a Library 651
13.6 Conditional Compilation 654
13.7 Arguments to Functions main 658
13.8 Defining Macros with Parameters 661
13.9 Common Programming Errors 666
14 Dynamic Data Structures 677
14.1 Pointers 678
14.2 Dynamic Memory Allocation 682
14.3 Linked Lists 689
14.4 Linked List Operators 695
14.5 Representing a Stock with a Linked List 701
14.6 Representing a Queue with a Linked List 705
14.7 Ordered Lists 711
14.8 Binary Trees 723
14.9 Common Programming Errors 734
15 On to C++ 743
15.1 C++ Control Structures, Input/Output, and Functions 744
15.2 C++ Support for Object-Oriented Programming 751
App. A Character Sets
App. B ANSI C Standard Libraries
App. C C Operators
App. D Pointer Arithmetic
App. E ANSI C Reserved Words
Read More Show Less


This textbook teaches a disciplined approach to solving problems and to applying widely accepted software engineering methods to design program solutions as cohesive, readable, reusable modules. We present as an implementation vehicle for these modules a subset of ANSI C—a standardized, industrial-strength programming language known for its power and portability. This text can be used for a first course in programming methods: It assumes no prior knowledge of computers or programming. The text's broad selection of case studies and exercises allows an instructor to design an introductory programming course in C for computer science majors or for students from a wide range of other disciplines.

In preparing this edition, we have added Chapter 15, which can serve as a transition to the study of C++ in a subsequent course. We have expanded the first section of our chapter on iteration (Chapter 5) so that we introduce the full range of loops conceptually before delving into their C implementations, and we have included in Chapter 12 more extensive coverage of escape sequences and format specifiers used with printf. In addition, we have modified Chapter 14 so that it helps students consolidate their understanding of pointers as arrays, output parameters, and file accessors just prior to their exploration of the role of the pointer in dynamic memory allocation.

Using C to Teach Program Development

Two of our goals—teaching program design and teaching C—may be seen by some as contradictory. C is widely perceived as a language to be tackled only after one has learned the fundamentals of programming in some other,friendlier language. The perception that C is excessively difficult is traceable to the history of the language. Designed as a vehicle for programming the UNIX operating system, C found its original clientele among programmers who understood the complexities of the operating system and the underlying machine, and who considered it natural to exploit this knowledge in their programs. Therefore, it is not surprising that many textbooks whose primary goal is to teach C expose the student to program examples requiring an understanding of machine concepts that are not in the syllabus of a standard introductory programming course.

In this text we are able to teach both a rational approach to program development and an introduction to ANSI C because we have chosen the first goal as our primary one. One might fear that this choice would lead to a watered-down treatment of ANSI C. On the contrary, we find that the blended presentation of programming concepts and of the implementation of these concepts in C captures a focused picture of the power of ANSI. C as a high-level programming language, a picture that is often blurred in texts whose foremost objective is the coverage of all of ANSI C. Even following this approach of giving program design precedence over discussion of C language features, we have arrived at a coverage of the essential constructs of C that is quite comprehensive.

Pointers and the Organization of the Book

The order in which C language topics are presented is dictated by our view of the needs of the beginning programmer rather than by the structure of the C programming language. The reader may be surprised to discover drat there is no chapter entitled "Pointers." This missing chapter title follows from our treatment of C as a high-level language, not from a lack of awareness of the critical role of pointers in C.

Whereas other high-level languages have separate language constructs for output parameters and arrays, C openly folds these concepts into its notion of a pointer, drastically increasing the complexity of learning the language. We simplify the learning process by discussing pointers from these separate perspectives where such topics normally arise when teaching other programming languages, thus allowing a student to absorb the intricacies of pointer usage a little at a time. Our approach makes possible the presentation of fundamental concepts using traditional high-level language terminology—output parameter, array, array subscript, string—and makes it easier for students without prior assembly language background to master the many facets of pointer usage.

Therefore, this text has not one, but four chapters that focus on pointers. Chapter 6 discusses the use of pointers as simple output and input/output parameters, Chapter 8 deals with arrays, Chapter 9 presents strings and arrays of pointers, and Chapter 14 describes dynamic memory allocation after reviewing pointer uses previously covered. In addition, Chapters 2 and 12 discuss file pointers.

Applications Written in C

This text illustrates the importance of the C programming language by including a collection of brief articles presenting applications written in C. Included are descriptions of Vivo320, a video-conferencing tool; LINEUP, a database system for criminal mug shots; and the Borland C/C++ compiler. In addition, one article traces the history of the joint development of UNIX and C.

Software Engineering Concepts

The book presents many aspects of software engineering. Some are explicitly discussed and others are taught only by example. The connection between good problem-solving skills and effective software development is established early in Chapter 1 with a section that discusses the art and science of problem solving. The five-phase software development method presented in Chapter 1 is used to solve the first case study and is applied uniformly to case studies throughout the text. Major program style issues are highlighted in special displays, and the coding style used in examples is based on guidelines followed in segments of the C software industry. There are sections in several chapters that discuss algorithm tracing, program debugging, and testing.

Chapter 3 introduces procedural abstraction through selected C library functions, parameterless void functions, and functions that take input parameters and return a value. Chapters 4 and 5 include additional function examples, and Chapter 6 completes the study of functions that have simple parameters. The chapter discusses the use of pointers to represent output and input/output parameters, and Chapter 7 introduces the use of a function as a parameter.

Case studies and sample programs in Chapters 6, 8, and 11 introduce by example the concepts of data abstraction and of encapsulation of a data type and operators. Chapter 13 presents C's facilities for formalizing procedural and data abstraction in personal libraries defined by separate header and implementation files. Chapter 15 introduces the concept of object-oriented design as implemented by C++.

The use of visible function interfaces is emphasized throughout the text. We do not mention the possibility of using a global variable until Chapter 13, and then we carefully describe both the dangers and the value of global variable usage.

Pedagogical Features

We employ the following pedagogical features to enhance the usefulness of this book as a teaching tool:

End-of-Section Exercises. Most sections end with a number of self-check exercises. These include exercises that require analysis of program fragments as well as short programming exercises. Answers to selected self-check exercises appear at the back of the book; answers to the rest of the exercises are provided in the instructor's manual.

Examples and Case Studies. The book contains a wide variety of programming examples. Whenever possible, examples contain complete programs or functions rather than incomplete program fragments. Each chapter contains one or more substantial case studies that are solved following the software development method. Numerous case studies give the student glimpses of important applications of computing, including database searching, business applications such as billing and sales analysis, word processing, environmental applications such as radiation level monitoring and water conservation.

Syntax Display Boxes. The syntax displays describe the syntax and semantics of new C features and provide examples.

Program Style Displays. The program style displays discuss major issues of good programming style.

Error Discussions and Chapter Review. Each chapter concludes with a section that discusses common programming errors. A chapter review includes a table of new C constructs.

End-of-Chapter Exercises. A set of quick-check exercises with answers follows each Chapter Review. There are also review exercises whose solutions appear in the instructor's manual.

End-of-Chapter Projects. Each chapter ends with a set of programming projects. Answers to selected projects appear in the instructor's manual.

Appendixes, CD-ROM, and Supplements

Appendix F describes how to use Borland C++ Builder version 5 (see below). It also describes how to use the free command-line interpreter which can be downloaded from the Borland website ( A reference table of ANSI C constructs appears on the inside covers of the book, and Appendix A presents character set tables. Because this text covers only a subset of ANSI C, the remaining appendixes play an especially vital role in increasing the value of the book as a reference. Appendix B is an alphabetized table of ANSI C standard libraries. Appendix C gives a table showing the precedence and associativity of all ANSI C operators; the operators not previously defined are explained in this appendix. Throughout the book, array referencing is done with subscript notation; Appendix D is the only coverage of pointer arithmetic. Appendix E lists all ANSI C reserved words.

CD-ROM with Borland C++ Builder 5

The textbook comes with a CD-ROM that contains Borland C++ Builder 5. C++ Builder is an Integrated Development Environment for creating, debugging, and running C and C++ programs.

Source Code

An on-line version of the source code figures is available at our anonymous ftp site. To access, set your ftp to At the prompt, log in as anonymous and use your internet address as the password. From there, you change to the directory cseng/authors/hanly/cs1.3e.

Instructor's Manual

The Instructor's Manual includes chapter by chapter summaries and suggestions based on selected textbook figures. These are available online. You will need to contact your sales rep for the password and access instructions.

Solutions and Test Questions

Test questions and solutions to the internal self check, review questions, and selected programming projects are available by contacting your local Addison-Wesley sales representative.


Many people participated in the development of this book. We thank especially Cindy Johnson, who developed the articles on C applications, and Paul W. Abrahams, Kenneth Pugh of Pugh-Killeen Associates, Oliver Jones of Vivo Software Inc., and Michael R. Weisert of Borland International Inc., who provided the material for these articles. We thank Joan C. Horvath of the Jet Propulsion Laboratory, California Institute of Technology, for contributing several programming exercises. We are grateful for the work of several Temple University and University of Wyoming students and former students who helped to verify the programming examples and who provided answer keys for the host of exercises. These include Mark Thoney, Lynne Doherty, Andrew Wrobel, Steve Babiak, Donna Chrupcala, Masoud Kermani, and Thayne Routh. We also thank Jeri's Computer Science Department colleagues at the University of Wyoming who have been so willing to answer her questions—Allyson Anderson, Mark Arnold, and Robin Hill.

It has been a pleasure to work with the Addison-Wesley team in this endeavor. The sponsoring editor, Susan Hartman, along with her assistant, Galia Shokry, provided much guidance and encouragement throughout all phases of manuscript revision. Patty Mahtani supervised the production of the book, while Michael Hirsch developed the marketing campaign.


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 & 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 & 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 & 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 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 & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & 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 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
Sort by: Showing 1 Customer Reviews
  • Anonymous

    Posted September 27, 2002

    Perfect book for beginer's to programming and c

    I think this book is the best of the best on program and design of c. I found it to be a lot better than the book that i had to buy for my programming c class, this book explained it in a much eaiser format that i could understand and learn faster. it brings you step by step thru the process of learning how to program in c, in the order that makes sense. also is has a great appendix section which has a wealth of infromation, and more than you want to know. if their is one c book that you must get; i would say you should get this one, it's very useful. and well worth the money

    Was this review helpful? Yes  No   Report this review
Sort by: Showing 1 Customer Reviews

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