#include <stdio.h>
int main(void) {
printf("%d\n", 13);
printf("%d\n", 26);
printf("%d\n", 39);
printf("%d\n", 52);
printf("%d\n", 65);
printf("%d\n", 78);
printf("%d\n", 91);
printf("%d\n", 104);
printf("%d\n", 117);
printf("%d\n", 130);
printf("%d\n", 143);
printf("%d\n", 156);
printf("%d\n", 169);
printf("%d\n", 182);
printf("%d\n", 195);
printf("%d\n", 208);
printf("%d\n", 221);
printf("%d\n", 234);
printf("%d\n", 247);
printf("%d\n", 260);
printf("%d\n", 273);
printf("%d\n", 286);
printf("%d\n", 299);
printf("%d\n", 312);
printf("%d\n", 325);
printf("%d\n", 338);
printf("%d\n", 351);
printf("%d\n", 364);
printf("%d\n", 377);
...
A silly program which prints first 1000 multiples of 13
#include <stdio.h>
int main(void) {
if (1 % 13 == 0) {
printf("%d\n", 1);
}
if (2 % 13 == 0) {
printf("%d\n", 2);
}
if (3 % 13 == 0) {
printf("%d\n", 3);
}
if (4 % 13 == 0) {
printf("%d\n", 4);
}
if (5 % 13 == 0) {
printf("%d\n", 5);
}
if (6 % 13 == 0) {
printf("%d\n", 6);
}
if (7 % 13 == 0) {
printf("%d\n", 7);
}
if (8 % 13 == 0) {
printf("%d\n", 8);
}
if (9 % 13 == 0) {
printf("%d\n", 9);
}
if (10 % 13 == 0) {
printf("%d\n", 10);
...
A silly program which prints first 1000 multiples of 13
Note the same 4 lines are repeated 13000 times.
This means these lines could be replaced by a while loop which executes 13000 times.
#include <stdio.h>
int main(void) {
int i;
i = 1;
if (i % 13 == 0) {
printf("%d\n", i);
}
i = i + 1;
if (i % 13 == 0) {
printf("%d\n", i);
}
i = i + 1;
if (i % 13 == 0) {
printf("%d\n", i);
}
i = i + 1;
if (i % 13 == 0) {
printf("%d\n", i);
}
i = i + 1;
if (i % 13 == 0) {
printf("%d\n", i);
}
i = i + 1;
if (i % 13 == 0) {
printf("%d\n", i);
}
i = i + 1;
if (i % 13 == 0) {
printf("%d\n", i);
}
...
A simple program which uses a while loop to print first 1000 multiples of 13
#include <stdio.h>
int main(void) {
int i;
i = 1;
while (i <= 13000) {
if (i % 13 == 0) {
printf("%d\n", i);
}
i = i + 1;
}
return 0;
}
Another simple program which uses a while loop to print first 1000 multiples of 13
#include <stdio.h>
int main(void) {
int i;
i = 13;
while (i <= 13000) {
printf("%d\n", i);
i = i + 13;
}
return 0;
}
Another simple program which uses a while loop to print first 1000 multiples of 13
#include <stdio.h>
int main(void) {
int i;
i = 1;
while (i <= 1000) {
printf("%d\n", i*13);
i = i + 1;
}
return 0;
}
A simple program demonstrating the use of a while loop
#include <stdio.h>
int main(void) {
int n, upperBound, sum;
sum = 0;
upperBound = 10;
n = 1;
while (n <= upperBound) {
sum = sum + n;
n = n + 1;
}
printf("Sum of integers 1..%d is %d\n", upperBound, sum);
return 0;
}
Read 43 numbers and then print the sum of the numbers
A simple program demonstrating while & scanf
Note for simplicity we are assuming scanf succeeds in reading an integer.
A robust program would check that scanf returns 1 to indicate an integer read.
#define N_NUMBERS 42
#include <stdio.h>
int main(void) {
int x, sum, n;
sum = 0;
printf("Enter %d numbers:\n", N_NUMBERS);
n = 0;
while (n < N_NUMBERS) {
scanf("%d", &x);
sum = sum + x;
n = n + 1;
}
printf("Sum of the numbers is %d\n", sum);
return 0;
}
Read n numbers and then print the sum of the numbers
A simple program demonstrating while & scanf
Note for simplicity we are assuming scanf succeeds in reading an integer.
A robust program would check that scanf returns 1 to indicate an integer read.
#include <stdio.h>
int main(void) {
int x, sum, n, nNumbers;
sum = 0;
printf("How many numbers do you wish to sum: ");
scanf("%d", &nNumbers);
printf("Enter %d numbers:\n", nNumbers);
n = 0;
while (n < nNumbers) {
scanf("%d", &x);
sum = sum + x;
n = n + 1;
}
printf("Sum of the numbers is %d\n", sum);
return 0;
}
Read 5 numbers and print the largest
Note for simplicity we are assuming scanf succeeds in reading an integer.
A robust program would check that scanf returns 1 to indicate an integer read.
#include <stdio.h>
#define N_NUMBERS 5
int main(void) {
int howManyNumbers, number, maximum;
scanf("%d", &maximum);
howManyNumbers = 1;
while (howManyNumbers < N_NUMBERS) {
scanf("%d", &number);
if (number > maximum) {
maximum = number;
}
howManyNumbers = howManyNumbers + 1;
}
printf("Largest is %d\n", maximum);
return 0;
}
Read numbers until a negative number is read then print the sum of the numbers (not including the negative number)
Version 1
A simple program demonstrating stopping a while loop when a particular value is read by scanf
Note for simplicity we are assuming scanf succeeds in reading an integer.
A robust program would check that scanf returns 1 to indicate an integer read.
#include <stdio.h>
int main(void) {
int x, sum;
sum = 0;
x = 0;
printf("Enter numbers, terminate with a negative number:\n");
while (x >= 0) {
scanf("%d", &x);
if (x > 0) {
sum = sum + x;
}
}
printf("Sum of the numbers is %d\n", sum);
return 0;
}
Read numbers until a negative number is read then print the sum of the numbers (not including the negative number)
Version 2
A simple program demonstrating stopping a while loop when a particular value is read by scanf
Note for simplicity we are assuming scanf succeeds in reading an integer.
A robust program would check that scanf returns 1 to indicate an integer read.
#include <stdio.h>
int main(void) {
int x, sum;
sum = 0;
printf("Enter numbers, terminate with a negative number:\n");
scanf("%d", &x);
while (x >= 0) {
sum = sum + x;
scanf("%d", &x);
}
printf("Sum of the numbers is %d\n", sum);
return 0;
}
Sum the series 1 + 1/2 + 1/3 + 1/4 + ...
#include <stdio.h>
#define N_SERIES_TERMS 1000
int main(void) {
int n;
double sum;
n = 1;
sum = 0;
while (n <= N_SERIES_TERMS) {
sum = sum + 1.0 / n;
n = n + 1;
}
printf("1 + 1/2 + 1/3 + + ... + 1/%d = %f\n", N_SERIES_TERMS, sum);
return 0;
}
Calculate the mathematical constant e by summing the series 1 + 1/(1*2) + 1/(1*2*3) + 1/(1*2*3*4) + ... http://en.wikipedia.org/wiki/E_%28mathematical_constant%29
#include <stdio.h>
#define N_SERIES_TERMS 20
int main(void) {
int n;
double sum, factorial;
n = 1;
sum = 0;
factorial = 1;
while (n <= N_SERIES_TERMS) {
sum = sum + 1.0 / factorial;
factorial = factorial * n;
n = n + 1;
}
printf("1/1 + 1/1 + 1/(1*2) + 1/(1*2*3) + 1/(1*2*3*4) + ... + 1/%.0f = %.12f\n", factorial, sum);
return 0;
}
Calculate the mathematical constant pi to 6 decimal places by summing the series 4 - 4/3 + 4/5 - 4/7 + 4/9 + ...
#include <stdio.h>
#define N_SERIES_TERMS 1000000
int main(void) {
int n;
double sum;
n = 0;
sum = 0;
while (n < N_SERIES_TERMS) {
if (n % 2 == 0) {
sum = sum + 4.0 / (2 * n + 1);
} else {
sum = sum - 4.0 / (2 * n + 1);
}
n = n + 1;
}
printf("4 - 4/3 + 4/5 - 4/7 + 4/9 + ... = %f\n", sum);
return 0;
}
Calculate the the series 1 + 1/2 + 1/4 + 1/8 + ... until it converges to within 10 decimal places
#include <stdio.h>
#define ACCURACY 0.000000000001
int main(void) {
double sum, term;
sum = 0;
term = 1;
while (term > ACCURACY) {
sum = sum + term;
term = term / 2.0;
}
printf("1 + 1/2 + 1/4 + 1/8 + ... = %.10f\n", sum);
return 0;
}
Read numbers printing whether they are even or odd illustrate suse of a sentinal variable (stop_loop)
Note for simplicity we are assuming scanf succeeds in reading an integer.
A robust program would check that scanf returns 1 to indicate an integer read.
#include <stdio.h>
int main(void) {
int stop_loop, number;
printf("Enter numbers, 0 to stop\n");
stop_loop = 0;
while (stop_loop != 1) {
scanf("%d", &number);
if (number == 0) {
stop_loop = 1;
} else if (number % 2 == 1) {
printf("%d is odd.\n", number);
} else {
printf("%d is even.\n", number);
}
}
return 0;
}
A simple program which prints a square
#include <stdio.h>
#define SIDE_LENGTH 13
int main(void) {
int row, column;
row = 0;
while (row < SIDE_LENGTH) {
column = 0;
while (column <= SIDE_LENGTH) {
printf("*");
column = column + 1;
}
printf("\n");
row = row + 1;
}
return 0;
}
A simple program which prints a triangle
#include <stdio.h>
#define SIDE_LENGTH 13
int main(void) {
int row, column;
row = 0;
while (row < SIDE_LENGTH) {
column = 0;
while (column <= row) {
printf("*");
column = column + 1;
}
printf("\n");
row = row + 1;
}
return 0;
}
A simple program which reads integers and and if a composite number is read exists printing the factor
Note for simplicity we are assuming scanf succeeds in reading an integer.
A robust program would check that scanf returns 1 to indicate an integer read.
#include <stdio.h>
int main(void) {
int n, possibleFactor, keepLooping;
keepLooping = 1;
while (keepLooping == 1) {
printf("Enter a number: ");
scanf("%d", &n);
possibleFactor = 2;
while (possibleFactor < n && keepLooping == 1) {
if (n % possibleFactor == 0) {
printf("%d is composite %d is a factor\n", n, possibleFactor);
keepLooping = 0;
}
possibleFactor = possibleFactor + 1;
}
}
return 0;
}
A simple program demonstrating nested while loops
It prints all prime numbers < 10000
#include <stdio.h>
int main(void) {
int n, possibleFactor, nFactors;
// loop through numbers 1..1000
n = 1;
while (n < 1000) {
// loop through numbers 1..n counting factors
possibleFactor = 1;
nFactors = 0;
while (possibleFactor <= n) {
if (n % possibleFactor == 0) {
nFactors = nFactors + 1;
}
possibleFactor = possibleFactor + 1;
}
if (nFactors <= 2) {
printf("%d is prime\n", n);
}
n = n + 1;
}
return 0;
}
A simple program which reads integers and prints snap and exits if the same number is read twice in a row
Note for simplicity we are assuming scanf succeeds in reading an integer.
A robust program would check that scanf returns 1 to indicate an integer read.
#include <stdio.h>
int main(void) {
int n, previousN;
printf("Enter a number: ");
scanf("%d", &previousN);
printf("Enter a number: ");
scanf("%d", &n);
while (n != previousN) {
previousN = n;
printf("Enter a number: ");
scanf("%d", &n);
}
printf("Snap!\n");
return 0;
}
Read numbers until end of input (or a non-number) is reached then print the sum of the numbers
Version 1
A simple program demonstrating stopping a while loop when scanf fails to read a number e.g. because end-of-input is reached
#include <stdio.h>
int main(void) {
int sum, x, numbersRead;
sum = 0;
numbersRead = 1;
printf("Enter numbers, indicate end-of-input with control-D:\n");
while (numbersRead == 1) {
// if scanf can read an integer it will place it in x and it will return 1
// if scanf can't read an integer it will not change x and it will return 0 or -1
numbersRead = scanf("%d", &x);
if (numbersRead == 1) {
sum = sum + x;
}
}
printf("Sum of the numbers is %d\n", sum);
return 0;
}
Read numbers until end of input (or a non-number) is reached then print the sum of the numbers
Version 1
A simple program demonstrating stopping a while loop when scanf fails to read a number e.g. because end-of-input is reached
#include <stdio.h>
int main(void) {
int sum, x, numbersRead;
sum = 0;
numbersRead = 1;
printf("Enter numbers, indicate end-of-input with control-D:\n");
// if scanf can read an integer it will place it in x and it will return 1
// if scanf can't read an integer it will not change x and it will return 0 or -1
numbersRead = scanf("%d", &x);
while (numbersRead == 1) {
sum = sum + x;
numbersRead = scanf("%d", &x);
}
printf("Sum of the numbers is %d\n", sum);
return 0;
}
Read numbers until end of input (or a non-number) is reached then print the sum of the numbers
Version 2
A simple program demonstrating stopping a while loop when scanf fails to read a number e.g. because end-of-input is reached
#include <stdio.h>
int main(void) {
int sum, x;
sum = 0;
printf("Enter number: ");
while (scanf("%d", &x) == 1) {
sum = sum + x;
printf("Enter number: ");
}
printf("Sum of the numbers is %d\n", sum);
return 0;
}
Print first 20 fibonacci numbers
#include <stdio.h>
int main(void) {
int howManyNumbers, n, previousN, w;
n = 1;
previousN = 0;
howManyNumbers = 0;
while (howManyNumbers < 20) {
w = previousN + n;
previousN = n;
n = w;
howManyNumbers = howManyNumbers + 1;
printf("%d\n", n);
}
return 0;
}
A simple program which searches for pythagorean triples integers which form form the sides of a right triangle http://en.wikipedia.org/wiki/Pythagorean_triple
#include <stdio.h>
#define N 100
int main(void) {
int x, y, z;
x = 1;
while (x < N) {
y = 1;
while (y <= N) {
z = 1;
while (z <= N) {
if (x * x + y * y == z * z) {
printf("%d^2 + %d^2 = %d^2\n", x, y, z);
}
z = z + 1;
}
y = y + 1;
}
x = x + 1;
}
return 0;
}
A silly program which prints first 1000 multiples of 13