0% found this document useful (0 votes)
59 views12 pages

Sample Basic C Programs: Program #1: Fahrenheit and Celsius, Version 1

This document provides examples of basic C programs, including programs that: 1) Print a table converting between Fahrenheit and Celsius temperatures using different methods. 2) Copy input to output by reading and writing characters one at a time. 3) Count the number of lines, words, and characters in input. 4) Count the occurrences of digits, whitespace, and other characters. 5) Calculate powers of numbers using a function.

Uploaded by

soumyojit2013
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views12 pages

Sample Basic C Programs: Program #1: Fahrenheit and Celsius, Version 1

This document provides examples of basic C programs, including programs that: 1) Print a table converting between Fahrenheit and Celsius temperatures using different methods. 2) Copy input to output by reading and writing characters one at a time. 3) Count the number of lines, words, and characters in input. 4) Count the occurrences of digits, whitespace, and other characters. 5) Calculate powers of numbers using a function.

Uploaded by

soumyojit2013
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

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 temperatures. #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); }

Version of April 5, 2002 3:29 pm

Page 1 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

Program #2: Fahrenheit and Celsius, Version 2


This does the same thing using different control structures and oating point arithmetic. #include <stdio.h> #define LOWER #define UPPER #define STEP 0 300 20 /* begin table here */ /* end table here */ /* 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); }

Version of April 5, 2002 3:29 pm

Page 2 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

Program #3: cat(1), Version 1


This short program copies the standard input to the standard output. #include <stdio.h> /* * copy input to output: short version */ void main(void) { int c; /* input character */ /* * copy the input to the output * one char at a time */ while ((c = getchar()) != EOF) putchar(c); /* * say goodbye */ exit(0); }

Version of April 5, 2002 3:29 pm

Page 3 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

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); }

Version of April 5, 2002 3:29 pm

Page 4 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

Program #5: A Version of wc(1)


This program counts the number of lines, words, and characters in its input, where a word is dened as any sequence of non-whitespace characters (blanks, tabs, and newlines). #include <stdio.h> #define IN_WORD #define NOTIN_WORD 1 0 /* currently inside a word */ /* 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 */

Version of April 5, 2002 3:29 pm

Page 5 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

printf("%6d\t%6d\t%6d\n", nl, nw, nc); exit(0); }

Version of April 5, 2002 3:29 pm

Page 6 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

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 category 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 "); }

Version of April 5, 2002 3:29 pm

Page 7 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

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

%d\n", nwhite, nother);

Version of April 5, 2002 3:29 pm

Page 8 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

Program #7: Digit and Space Counter, Version 2


This is also a digit counter, but uses a switch statement rather than an if else if else statement. #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 */ switch(c){ case '0': case '1': case '2': case '3': /* digit */ case '4': case '5': case '6': case '7': case '8': case '9': ndigit[c - '0']++; break; case ' ': case '\t': case '\n': /* whitespace */ nwhite++; break; default: /* neither a digit nor whitespace */ nother++; break; } } /* * 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 "); }

Version of April 5, 2002 3:29 pm

Page 9 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

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

%d\n", nwhite, nother);

Version of April 5, 2002 3:29 pm

Page 10 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

Program #8a: Powers of 2 and 3


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); }

Version of April 5, 2002 3:29 pm

Page 11 of 12

SAMPLE BASIC C PROGRAMS

ECS 30-A SPRING 2002

Program #8b: Simple Exponentiation Function


This is the function call, from the same program and (as I wrote it) in the same le. Interestingly enough, this program will still work if the two routines (main and pow) are in different les! /* * compute a power * * arguments: int base what you want to raise * int n non-negative integral power * to raise base to * * returns: base ^ n (base ** n to you FORTRANers!) * * exceptions: none handled; overflow may occur, but there * will be no indication of it */ int power(int base, int n) { register int i; /* counter in a for loop */ register int p; /* resulting power */ /* * do it the obvious, multiplicative, way */ for(i = 1, p = 1; i <= n; i++) p *= base; return(p); }

Version of April 5, 2002 3:29 pm

Page 12 of 12

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy