C Program Sampler: Fahrenheit to Celsius, Digit Counter, and Power Functions, Slides of Psychology

A collection of basic C programs, including examples that convert Fahrenheit to Celsius, count digits, whitespace, and other characters, and calculate powers of 2 and -3 using function calls. The programs demonstrate various control structures and arithmetic operations.

Typology: Slides

2019/2020

Uploaded on 06/17/2020

shahid_88c
shahid_88c 🇺🇸

4.4

(26)

261 documents

1 / 12

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
S
AMPLE
B
ASIC
C P
ROGRAMS
ECS 30-A — S
PRING
2002
Version of April 5, 2002 3:29 pm Page 1 of 12
Sample Basic C Programs
Program #1: Fahrenheit and Celsius, Version 1
This prints a table with two columns, the left being Fahrenheit degrees, and the right the corrsponding Celsius tem-
peratures.
#include <stdio.h>
/*
* print a table for Fahrenheit to Celsius
* from 0 F to 300 F
*/
void main(void)
{
int fahr; /* fahrenheit temperature */
int celsius ; /* celsius temperature */
register int lower = 0; /* begin table here */
register int upper = 300; /* end table here */
register int step = 20; /* increment */
/*
* print out the lines for the table
*/
fahr = lower;
while(fahr <= upper){
/* get corresponding temp in degrees C */
celsius = 5 * (fahr - 32) / 9;
/* print it */
printf("%d\t%d\n", fahr, celsius);
fahr += step;
}
/*
* say goodbye
*/
exit(0);
}
pf3
pf4
pf5
pf8
pf9
pfa

Partial preview of the text

Download C Program Sampler: Fahrenheit to Celsius, Digit Counter, and Power Functions and more Slides Psychology in PDF only on Docsity!

Sample Basic C Programs

Program #1: Fahrenheit and Celsius, Version 1

This prints a table with two columns, the left being Fahrenheit degrees, and the right the corrsponding Celsius tem- peratures.

#include <stdio.h>

/*

  • print a table for Fahrenheit to Celsius
  • from 0 F to 300 F / void main(void) { int fahr; / fahrenheit temperature / int celsius ; / celsius temperature / register int lower = 0; / begin table here / register int upper = 300; / end table here / register int step = 20; / increment */

/*

  • print out the lines for the table / fahr = lower; while(fahr <= upper){ / get corresponding temp in degrees C / celsius = 5 * (fahr - 32) / 9; / print it */ printf("%d\t%d\n", fahr, celsius); fahr += step; }

/*

  • say goodbye */ exit(0); }

Program #2: Fahrenheit and Celsius, Version 2

This does the same thing using different control structures and floating point arithmetic.

#include <stdio.h>

#define LOWER 0 /* begin table here / #define UPPER 300 / end table here / #define STEP 20 / increment */

/*

  • print a table for Fahrenheit to Celsius
  • from 0 F to 300 F
  • floating point version / void main(void) { float fahr; / fahrenheit temperature */

/*

  • print out the lines for the table */ for(fahr = LOWER; fahr <= UPPER; fahr += STEP) printf("%3.0f\t%6.1f\n", fahr, (5.0/9.0) * (fahr - 32));

/*

  • say goodbye */ exit(0); }

Program #4: cat(1), Version 2

This does the same thing, but uses different control structures. Most C programmers would write this program the previous way.

#include <stdio.h>

/*

  • copy input to output: long version / void main(void) { int c; / input character */

/*

  • copy the input to the output
  • one char at a time / do { / read a char / c = getchar(); / write a char (unless it's / / the end of file marker) */ if (c != EOF) putchar(c); } while (c != EOF);

/*

  • say goodbye */ exit(0); }

Program #5: A Version of wc(1)

This program counts the number of lines, words, and characters in its input, where a “word” is defined as any sequence of non-whitespace characters (blanks, tabs, and newlines).

#include <stdio.h>

#define IN_WORD 1 /* currently inside a word / #define NOTIN_WORD 0 / currently not in a word */

/*

  • count the number of lines, words, and chars in the input
  • a word is a maximal sequence of nonspace characters, so
  • the quote "+++ --- hi bye 879+3" has 5 words ("+++", "---",
  • "hi", "bye", and "879+3") / void main(void) { register int c; / input char / register int nl; / line count / register int nw; / word count / register int nc; / char count / register int state; / in or not in a word? */

/*

  • initialize */ nl = nw = nc = 0; state = NOTIN_WORD;

/*

  • handle input a char at a time / while((c = getchar()) != EOF){ / got another character / nc++; / is it a newline? / if (c == '\n') nl++; / is it a word separator? / if (c == ' ' || c == '\t' || c == '\n') / YES -- change state / state = NOTIN_WORD; else if (state == NOTIN_WORD){ / NO -- we're now in a word; update / / the counter and state if need be */ state = IN_WORD; nw++; } }

/*

  • announce the results and quit */

Program #6: Digit and Space Counter, Version 1

This is similar to the word counting program, but counts digits, whitespace, and everything else (grouped into the cat- egory “other”). Note the array.

#include <stdio.h>

/*

  • count the number of each digit, whitespace,
  • and all other chars / void main(void) { register int c; / input char / register int nwhite = 0; / whitespace count / register int nother = 0; / other count / register int i; / counter in a for loop / int ndigit[10]; / digit counts */

/*

  • initialize the ndigit array */ for(i = 0; i < 10; i++) ndigit[i] = 0;

/*

  • handle input a char at a time / while((c = getchar()) != EOF){ / see what it is / if (c >= '0' && c <= '9'){ / it's a digit -- bump the right count / ndigit[c - '0']++; } else if (c == ' ' || c == '\t' || c == '\n'){ / it's whitespace / nwhite++; } else{ / it's neither a digit nor whitespace */ nother++; } }

/*

  • announce the results and quit / printf("digits: "); for(i = 0; i < 10; i++){ printf("'%c' %3d\t", i + '0', ndigit[i]); / put 5 digits per line, for neat output */ if (i == 4) printf("\n "); }

putchar('\n'); printf("whitespace: %d\nother: %d\n", nwhite, nother); exit(0); }

putchar('\n'); printf("whitespace: %d\nother: %d\n", nwhite, nother); exit(0); }

Program #8a: Powers of 2 and –

This program prints a table of 2 and -3 raised to the powers 0 to 9 inclusive. It illustrates the use of function calls.

#include <stdio.h>

/*

  • prototype (forward declaration) */ int power(int m, int n);

/*

  • generate a table of powers of 2 / void main(void) { register int i; / counter in a for loop */

/*

  • generate the table */ for(i = 0; i < 10; ++i) printf("%3d %6d %6d\n", i, power(2, i), power(-3, i));

/*

  • bye! */ exit(0); }