© 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: