© Harry Broeders.
Deze pagina is bestemd voor studenten van de Haagse Hogeschool - Academie voor Technology, Innovation & Society Delft.
printf("%d", a + b + e); moet zijn
printf("%d", a + b + c);.
-i
de in i opgeslagen waarde met één verlagen.
Dit moet natuurlijk zijn: Op soortgelijke wijze zal --i de
in i opgeslagen waarde met één verlagen.
7. Ik heb het programma uit het boek enigszins aangepast
(1_12_7.c
):
#include <stdio.h>#define HEIGHT 17#define OFFSET " " /* 17 spaties */int main(void) {int i;printf("\n\n\n%slllllll\n", OFFSET);for (i = 0; i < HEIGHT; i = i + 1) {printf("%s lll\n", OFFSET);}printf("%slllllll\n\n\n", OFFSET);getchar();return 0;}
Ik heb de volgende aanpassingen gedaan:
main() is vervangen door
int
main(void) (dat moet zo volgens de C standaard).
++i is vervangen door i = i + 1.
for lus (dat is overzichtelijker en
beter uitbreidbaar).
getchar(); en
return 0; zijn toegevoegd
(normele manier om main te beëindigen).
In dit programma worden een aantal instructies en technieken gebruikt die ik nog niet heb behandeld:
#define kan gebruikt worden als een
zoek en vervang opdracht. Door de opdracht
#define
HEIGHT 17 wordt in het
programma het woord HEIGHT vervangen door het getal
17.
%s gebruiken om een stuk tekst
op een bepaalde plaats in te laten vullen. B.v.
printf("%s is mijn naam",
"Harry"); zal afdrukken: Harry
is mijn naam. Je kunt dezelfde uitvoer eenvoudiger produceren met
printf("Harry is mijn naam");.
Als we de #define en het gebruik van
%s verwijderen dan krijgen we het
volgende eenvoudigere programma dat exact dezelfde uitvoer geeft
(1_12_7a.c
):
#include <stdio.h>int main(void) {int i;printf("\n\n\n lllllll\n");for (i = 0; i < 17; i = i + 1) {printf(" lll\n");}printf(" lllllll\n\n\n");getchar();return 0;}
De uitvoer is:
Het is nu niet zo heel moeilijk om een programma te schrijven die een groote C afdrukt:
#include <stdio.h>int main(void) {int i;printf("\n\n\n ccccccccccccccc\n");printf(" ccccccccccccccccc\n");for (i = 0; i < 2; i = i + 1) {printf(" ccc ccc\n");}for (i = 0; i < 11; i = i + 1) {printf(" ccc\n");}for (i = 0; i < 2; i = i + 1) {printf(" ccc ccc\n");}printf(" ccccccccccccccccc\n");printf(" ccccccccccccccc\n\n\n");getchar();return 0;}
De uitvoer van dit programma is:
Het maken van afbeeldingen met behulp van ASCII karakters is een kunst op
zich. Kijk maar eens hier:
http://en.wikipedia.org/wiki/ASCII_art
.
10.
1_12_10.c
:
#include <stdio.h>int main(void) {int i;printf("integer kwadraat 3-de macht 4-de macht 5-de macht\n");for (i = 0; i < 20; i = i + 1) {printf("%7d %8d %10d %10d %10d\n", i, i * i, i * i * i, i * i * i * i, i * i * i * i * i);}getchar();return 0;}
Het is even tellen om in de printf statement de juiste veldbreedte
voor de integers te bepalen.
De uitvoer van dit programma is:
Hmmm... mijn kolommen zijn aan de rechterkant uitgelijnd en die in het boek
zijn aan de linkerkant uitgelijnd. Dat moet vast kunnen met
printf maar hoe?
Op
http://en.cppreference.com/w/c/io/fprintf
heb ik gevonden dat ik getallen links uit kan lijnen op een veld van 10 karakters
door %-10d te gebruiken.
Het programma wordt dan
1_12_10a.c
:
#include <stdio.h>int main(void) {int i;printf("integer kwadraat 3-de macht 4-de macht 5-de macht\n");for (i = 0; i < 20; i = i + 1) {printf("%-7d %-8d %-10d %-10d %-10d\n", i, i * i, i * i * i, i * i * i * i, i * i * i * i * i);}getchar();return 0;}
De uitvoer van dit programma is:
In het boek zijn er lijnen om de tabel getekend. Dit is niet zo gemakkelijk
vanuit een C programma maar we kunnen het benaderen met het |
+ en - teken.
Het programma wordt dan
1_12_10b.c
:
#include <stdio.h>int main(void) {int i;printf("+---------+----------+------------+------------+------------+\n");printf("| integer | kwadraat | 3-de macht | 4-de macht | 5-de macht |\n");printf("+---------+----------+------------+------------+------------+\n");for (i = 0; i < 20; i = i + 1) {printf("| %-7d | %-8d | %-10d | %-10d | %-10d |\n", i, i * i, i * i * i, i * i * i * i, i * i * i * i * i);}printf("+---------+----------+------------+------------+------------+\n");getchar();return 0;}
De uitvoer van dit programma is: