1.Aufgabe
Aufgabenstellung:
while und do-SchleifenCCode:
#include <stdio.h>Lösung
Die Eingabe von
Eingabe stdin:
1liefert
Ausgabe stdout:
Bitte Zahl eingeben('0' fuer Ende): 1 hoch 2 = 1
Bitte Zahl eingeben('0' fuer Ende): 2 hoch 2 = 4
Bitte Zahl eingeben('0' fuer Ende): 34 hoch 2 = 1156
Bitte Zahl eingeben('0' fuer Ende): 32 hoch 2 = 1024
Bitte Zahl eingeben('0' fuer Ende): 4 hoch 2 = 16
Bitte Zahl eingeben('0' fuer Ende): 3 hoch 2 = 9
Bitte Zahl eingeben('0' fuer Ende): 3 hoch 2 = 9
Bitte Zahl eingeben('0' fuer Ende): 53 hoch 2 = 2809
Bitte Zahl eingeben('0' fuer Ende): 3 hoch 2 = 9
Bitte Zahl eingeben('0' fuer Ende): 235 hoch 2 = 55225
Bitte Zahl eingeben('0' fuer Ende): 699 hoch 2 = 488601
Bitte Zahl eingeben('0' fuer Ende): 1568 hoch 2 = 2458624
Bitte Zahl eingeben('0' fuer Ende):
Mit do-while erhält man dasselbe Ergebnis, jedoch darf die Eingabe eine 0 sein, ohne dass das Programm abbricht. Das steht im Widerspruch zum Eingabetext und ist somit ein Fehler.
2.Aufgabe Geschachtelte Schleifen
Aufgabenstellung:
Wie sieht die Ausgabe des folgenden C-Programms aus? Wie kann man dieCCode:
#include <stdio.h>
Lösung:
Das Programm liefert folgende Ausgabe:
Ausgabe stdout:
*
**
***
****
*****
******
*******
********
*********
**********
***********
************
*************
**************
***************
****************
*****************
******************
*******************
********************
Die folgenden Änderungen
CCode:
#include <stdio.h>int
main()
{
int zeile,spalte;
freopen( "stdout.txt", "w", stdout ); //Leitet die Standardausgabe in die Datei stdout.txt um
for(zeile=20; zeile; zeile--) {
for(spalte=1; spalte <= zeile; spalte=spalte+1)
printf("*");
printf("\n");
}
return 0;
}
liefern das gewünschte Ergebnis.
Ausgabe stdout:
********************
Da Zeile als Boolean ausgewertet wird, ist Zeile=FALSE für alle Werte ungleich 0.
3.Aufgabe Einsmaleins mit Hilfe geschachtelter Schleifen
Aufgabenstellung:
a) Schreiben Sie ein C-Programm, das das kleine Einsmaleins in tabellarischerLösung:
Das Programm
CCode:
#include <stdio.h>int
main()
{
int i,j,mal[11][11];
freopen( "stdout.txt", "w", stdout ); //Leitet die Standardausgabe in die Datei stdout.txt um
for (i=1; i<=10;i++){
printf("|");
for(j=1;j<=10;j++){
mal[i][j]=i*j;
printf("%3d|",mal[i][j]);
}
printf("\n");
}
return 0;
}
liefert.
Ausgabe stdout:
| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10|
| 2| 4| 6| 8| 10| 12| 14| 16| 18| 20|
| 3| 6| 9| 12| 15| 18| 21| 24| 27| 30|
| 4| 8| 12| 16| 20| 24| 28| 32| 36| 40|
| 5| 10| 15| 20| 25| 30| 35| 40| 45| 50|
| 6| 12| 18| 24| 30| 36| 42| 48| 54| 60|
| 7| 14| 21| 28| 35| 42| 49| 56| 63| 70|
| 8| 16| 24| 32| 40| 48| 56| 64| 72| 80|
| 9| 18| 27| 36| 45| 54| 63| 72| 81| 90|
| 10| 20| 30| 40| 50| 60| 70| 80| 90|100|
wobei "mal" das gewünschte Feld ist.
4. Bedingte Anweisungen und ASCII-Zeichensatz
Aufgabenstellung:
Was tut das folgende Programm? Ergänzen Sie bitte beide printf-Anweisungen in sinnvoller Weise.
CCode:
#include <stdio.h>Lösung:
Die Funktion getchar liest stdin Zeichen für Zeichen als Integerwert ein, aber erst nachdem ENTER (\n) gedrückt wurde.
Die printf Anweisungen könnten so ergänzt werden:
CCode:
else if(bstb >= 'A' && bstb <= 'Z')Leider klappt das nicht so einfach unter Windows. (Der kopierte C-Code liefert sage und schreibe 32 Exceptions.)
5.Aufgabe
Aufgabenstellung:
Lösung:
Endlosschleifen.