Instructor: Professor Hong
expr1;
while (expr2)
{
statement
expr3;
}
#include <stdio.h>
/* K&R pg. 11
* print Fahrenheit-Celsius table
* for fahr = 0, 20, ..., 300 */
int main()
{
float fahr, celsius;
int lower, upper, step;
lower = 0; /* lower limit of temperature table */
upper = 300; /* upper limit */
step = 20; /* step size*/
fahr = lower;
while (fahr <= upper)
{
celsius = 5.0 * (fahr-32.0) / 9.0;
printf("%3.0f %6.1f\n", fahr, celsius);
fahr = fahr + step;
}
return 0;
}
#include <stdio.h>
int main()
{
int i = 0;
while (i >= 0)
{
printf("This is an infinite loop! (or is it?) i=%d\n", i);
i++;
}
return 0;
}
for (expr1; expr2; expr3)
statement
#include <stdio.h>
// K&R pg. 13
// Print Fahrenheit-Celsius table
int main()
{
int fahr;
for (fahr = 0; fahr <= 300; fahr += 20)
{
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
}
return 0;
}
#include <stdio.h>
int main()
{
int intArr[5];
intArr[0] = 0;
intArr[1] = 1;
intArr[2] = 2;
intArr[3] = 3;
intArr[4] = 4;
printf("%d %d %d %d %d\n",
intArr[0], intArr[1], intArr[2],
intArr[3], intArr[4]);
char charArr[3] = {'A', 'B', 'C'};
for (int ii=0; ii<3; ii++)
{
printf("%c ", charArr[ii]);
}
printf("\n");
return 0;
}
#include <stdio.h>
// K&R pg. 22
// count digits, white space, others
int main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
{
ndigit[i] = 0;
}
while ((c = getchar()) != EOF)
{
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
}
printf("digits =");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[i]);
printf(", white space = %d, other = %d\n",
nwhite, nother);
return 0;
}
./a.exe < count.c
#include <stdio.h>
#include <ctype.h>
// K&R pg. 61
// atoi: convert s to integer; version 1
int main()
{
char s[] = "-10";
int i, n, sign;
for (i = 0; isspace(s[i]); i++) // skip white space
;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-') // skip sign
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
int result = sign * n;
printf("%d", result);
return 0;
}
#include <stdio.h>
#include <ctype.h>
// K&R pg. 61
// atoi: convert s to integer; version 1
int main()
{
char s[5]; // needs a const
char c = getchar();
int cidx = 0;
while (c != '\n')
{
s[cidx] = c;
c = getchar();
cidx++;
}
int i, n, sign;
for (i = 0; isspace(s[i]); i++) // skip white space
;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-') // skip sign
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
int result = sign * n;
printf("%d", result);
return 0;
}
#include <stdio.h>
// K&R pg. 62
// shellsort: sort v[0]...v[n-1] into increasing order
int main()
{
int v[10] = {4, 6, 2, 1, 3, 5, 7, 9, 8, 0};
int n = 10;
int gap, i, j, temp;
for (gap = n/2; gap > 0; gap /= 2)
for (i = gap; i < n; i++)
for (j=i-gap; j>=0 && v[j]>v[j+gap]; j-=gap)
{
temp = v[j];
v[j] = v[j+gap];
v[j+gap] = temp;
}
printf("Sorted: ");
for (int ii=0; ii<n; ii++)
printf("%d ", v[ii]);
return 0;
}
#include <stdio.h>
#include <string.h>
// K&R pg. 62
// reverse: reverse string s in place
int main()
{
char s[] = "ECE160";
int c, i, j;
for (i=0, j=strlen(s)-1; i<j; i++, j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
printf("%s", s);
return 0;
}
do
statement
while (expression);
#include <stdio.h>
#include <string.h>
// K&R pg. 64
// itoa: convert n to characters in s
int main()
{
int n = -77;
char s[10];
int idx, sign;
if ((sign = n) < 0) // record sign
n = -n; // make n positive
idx = 0;
do {
s[idx++] = n % 10 + '0';
} while ((n /= 10) > 0);
if (sign < 0)
s[idx++] = '-';
s[idx] = '\0';
// reverse s
int c, i, j;
for (i=0, j=strlen(s)-1; i<j; i++, j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
printf("%s", s);
return 0;
}
break
-- allows you to exist a for, while, or do loop earlycontinue
-- allows the next iteration of the loop to execute#include <stdio.h>
#include <string.h>
// K&R pg. 65
// trim: remove trailing blanks, tabs, newlines
int main()
{
char s[] = "HELLO ";
int n;
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n')
break;
s[n+1] = '\0';
printf("%d\n", n);
printf("%s.", s);
return 0;
}
#include <stdio.h>
// skip printing a number with continue
int main()
{
for (int ii=0; ii<=10; ii++)
{
if (ii==7)
continue;
printf("%d ", ii);
}
return 0;
}
#include <stdio.h>
// K&R pg. 158
// rudimentary calculator
int main()
{
double sum, v;
sum = 0;
while (scanf("%lf", &v) == 1)
printf("\t%.2f\n", sum+=v);
return 0;
}
return-type function-name(parameter declarations, if any)
{
declarations
statements
return
}
#include <stdio.h>
// K&R pg. 24-25
// power function
// Function prototype at the beginning
int power(int m, int n);
int main()
{
int i;
for (i=0; i<10; ++i)
printf("%d %d %d\n", i, power(2,i), power(-3,i));
return 0;
}
// power: raise base to n-th power; n >= 0
int power(int base, int n)
{
int i, p;
p = 1;
for (i=1; i<=n; ++i)
p = p * base;
return p;
}
https://classroom.github.com/g/h-o1P7nB
due 10/03 @ 11:59PM