Loops
Example:
What is the printed result of following program block?
i = 1;
while (i < 5) {
if (i==3) {
printf (“\n Hello world %d.x!”, i);
continue;
} else if (i==4) {
printf (“\n Goodbye %d.x!”, i);
continue;
}
i++;
}
Result:
Hello world 3.x!
Hello world 3.x!
...
...
… and so on for infinite number of times. Even after value 3 is reached, orders under i==3 are executed. Because of “continue” command, i doesn’t increase, but the program branches on conditional phrase (i < 5).
Example:
Write your own program block that prints multiplying table of numbers up to 100.
/*1*/ int main(void) {
/*2*/ int i,j;
/*3*/
/*4*/ for (i = 1; i <= 10; ++i) {
/*5*/ for (j = 1; j <= 10; ++j)
/*6*/ printf("%3d",i*j);
/*7*/ printf("\n");
/*8*/ }
/*9*/}
By adding single line of code, we accomplish that new table is made from even numbers only:
/*6*/ if ( (i%2!=0) && (j%2!=0) ) continue; // both odd numbers
Same thing:
/*6*/ if ( (i%2==0) || (j%2==0) ) // at least one number is even
Example:
Write your own program block that prints first N Fibonacci numbers. N is given by keyboard. Algorithm to calculate Fibonacci Numbers:
Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)
Fibonacci(0) = Fibonacci(1) = 1
1, 1, 2, 3, 5, 8, 13, 21,...
#include <stdio.h>
int main () {
int N, i, f0 = 1, f1 = 1,f = 1;
printf ("\n Input amount of Fibonacci Numbers (N) : \n");
scanf ("%d",&N);
for (i = 0; i <= N; i++) {
if (i > 1) {
f = f1 + f0;
f0 = f1;
f1 = f;
}
printf ("Fibonnaci (%d) = %d \n", i , f);
}
return 0;
}
Example:
Write your own program which reads 2 real numbers and numeric operation executed above them (+, -, /, *) (all given by keyboard). If the given operation is different than allowed, program asks for new operation input.
#include <stdio.h>
int main(void) {
float a,b, result;
char operation;
int repeatOperationInput = 1;
printf("Input two numbers: ");
scanf("%f, %f", &a, &b);
do {
printf("Input operation: ");
operation = getche();
printf("\n");
repeatOperationInput = 0;
switch(operation) {
case '+': result = a + b; break;
case '-': result = a - b; break;
case '*': result = a * b; break;
case '/':
if (b == 0) {
printf("Dividing by 0 isn’t allowed.\n");
}
else {
result = a / b;
}
break;
default:
repeatOperationInput = 1;
}
} while (repeatOperationInput);
printf("%f %c %f = %f\n", a, operation, b, result);
// What if b == 0?
}
Technorati Tags: Signed, Unsigned, Array, Loop, Index, printf, Execute
I tried to test the code for the last example but got this:
POLINK: error: Unresolved external symbol '_getche'.
POLINK: fatal error: 1 unresolved external(s).