#include <stdio.h>
int main(void) {
int x, y, sum;
printf("Enter x: ");
scanf("%d", &x);
printf("Enter y: ");
scanf("%d", &y);
sum = x + y;
// These 6 printfs can be better replaced by a single printf
printf("%d", x);
printf(" + ");
printf("%d", y);
printf(" = ");
printf("%d", sum);
printf("\n");
return 0;
}
A simple program demonstrating the use of scanf to sum 2 numbers
#include <stdio.h>
int main(void) {
int x, y, sum;
printf("Enter x: ");
scanf("%d", &x);
printf("Enter y: ");
scanf("%d", &y);
sum = x + y;
printf("%d + %d = %d\n", x, y, sum);
return 0;
}
A simple program demonstrating the use of scanf to sum 2 numbers
#include <stdio.h>
int main(void) {
int x, y;
printf("Enter x: ");
scanf("%d", &x);
printf("Enter y: ");
scanf("%d", &y);
printf("%d + %d = %d\n", x, y, x +y);
return 0;
}
A simple program demonstrating the use of scanf
#include <stdio.h>
int main(void) {
int x, y;
int answer;
printf("Enter x: ");
scanf("%d", &x);
printf("Enter y: ");
scanf("%d", &y);
answer = x * x + y * y;
printf("x squared + y squared = %d\n", answer);
return 0;
}
Convert a temperature in fahrenheit to celsius
#include <stdio.h>
int main(void) {
double fahrenheit, celsius;
printf("Enter Fahrenheit temperature: ");
scanf("%lf", &fahrenheit);
celsius = 5.0 / 9.0 * (fahrenheit - 32);
printf("%f Fahrenheit = %f Celsius\n", fahrenheit, celsius);
return 0;
}
A simple program to check Pythagorean identity
Demonstrates danger of use == with doubles e.g. enter 1 for theta
#include <stdio.h>
#include <math.h>
int main(void) {
double theta, identity;
printf("Enter theta: ");
scanf("%lf", &theta);
identity = 1 - (sin(theta) * sin(theta) + cos(theta) * cos(theta));
if (identity == 0.0) {
printf("Pythagorean identity true for %lf\n", theta);
} else {
printf("Pythagorean wrong by %g for %lf\n", identity, theta);
}
return 0;
}
Calculate relativistic-mass of an object
#include <stdio.h>
#include <math.h>
#define SPEED_OF_LIGHT 299792458.0
int main(void) {
double mass, rest_mass;
double velocity;
double ratio;
printf("Enter rest mass: ");
scanf("%lf", &rest_mass);
printf("Enter velocity in metres/second: " );
scanf("%lf", &velocity);
// compute velocity as a fraction of speed of light
ratio = velocity / SPEED_OF_LIGHT;
if (ratio >= 1.0) {
printf("Error: velocity exceeds speed of light.\n");
} else {
// compute observed mass using Einstein's equation
mass = rest_mass / sqrt(1.0 - ratio*ratio);
printf("Observed mass = %1.6f\n", mass);
}
return 0;
}
Demonstrate approximate representation of reals producing error. sometimes if we subtract two approximations which are very close together we can canb get a large relative error
correct answer if x == 0.000000011 (1 - cos(x)) / (x * x) is very close to 0.5 code prints 0.917540 which is wrong by a factor of almost two
#include <stdio.h>
#include <math.h>
int main(void) {
double x, y;
x = 0.000000011;
y = (1 - cos(x)) / (x * x);
printf("correct answer = ~0.5 but y = %lf\n", y);
return 0;
}
Convert a measurement in feet to metres
A simple program demonstrating the use of scanf and #define for constants
#include <stdio.h>
#define INCHES_IN_FOOT 12
#define CM_IN_INCH 2.54
#define CM_IN_METRE 100
int main(void) {
double feet;
double metres;
printf("Enter number of feet: ");
scanf("%lf", &feet);
metres = feet * INCHES_IN_FOOT * CM_IN_INCH / CM_IN_METRE;
printf("%.2lf", feet);
printf(" feet is ");
printf("%.2lf", metres);
printf(" metres\n");
return 0;
}
Overflow a 32-bit int compile with gcc or clang to see overflow
#include <stdio.h>
int main(void) {
int a, b;
a = 2000000000;
b = a + a;
printf("%d", b);
return 0;
}
Demonstrate approximate representation of reals
The value 0.1 can not be precisely represented as a real
As a result a non-zero value is printed
#include <stdio.h>
int main(void) {
double a, b;
a = 0.1;
b = 1 - (a + a + a + a + a + a + a + a + a + a);
printf("%g\n", b);
return 0;
}
Printing binary representation of ints
This is not a programming example - it uses features not taught in this course (or nor not yet taught)
#include <stdio.h>
int main(void) {
int a, j;
while (1) {
printf("Enter an int: ");
scanf("%d", &a);
j = 8 * (sizeof a);
while (j > 0) {
j = j - 1;
printf("%d", (a >> j) & 1);
}
printf("\n");
}
return 0;
}
Printing bytes of a file as binary
This is not a programming example - it uses features not taught in this course (or nor not yet taught)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
FILE *stream;
int c, i, j, byteCount;
for (i = 1; i < argc; i = i + 1) {
stream = fopen(argv[i], "r");
if (stream == NULL) {
perror(argv[i]); // prints why the open failed
exit(1);
}
c = fgetc(stream);
byteCount = 0;
while (c != EOF) {
printf("%s: byte %4d = ", argv[i], byteCount);
j = 7;
while (j >= 0) {
printf("%d", (c >> j) & 1);
j = j - 1;
}
printf("\n");
c = fgetc(stream);
byteCount = byteCount + 1;
}
}
return 0;
}
A simple program demonstrating the use of scanf to sum 2 numbers