Informatik II Grundlagen der Programmierung Programmieren in C Probeklausur Hochschule Fulda – FB ET Sommersemester 2010 http://www.rz.hs-fulda.de/et Peter Klingebiel, HS Fulda, DVZ
Aufgabe 1a - 1 In einem Programm finden Sie die folgende Schleife for(i = start; i < ende; i++) { ... machwas(i); ... } Formulieren Sie die for-Schleife als while-Schleife. Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 1a - 2 for-Schleife als while-Schleife Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 1b - 1 In einem Programm finden Sie die folgende Berechnung int i; double d; for(i = 10; i < 100; i += 10) { d = i / 100.0; printf("%3d %.2lf\n", i, d); } Geben Sie die Ausgaben an und kommentieren Sie die Ergebnisse. Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 1b - 2 Ausgabe der Berechnung / Gründe Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 1b - 3 Was kommt hier raus? int i; double d; for(i = 10; i < 100; i += 10) { d = 1.0 + i / 100; printf("%3d %.2lf\n", i, d); } Warum? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 1b - 4 Und hier? int i; double d; for(i = 10; i < 100; i += 10) { d = (1.0 + i) / 100; printf("%3d %.2lf\n", i, d); } Warum? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 1c - 1 Gegeben: unsortiertes Feld von 65000 Strings Wie gehen Sie vor, wenn Sie in diesem Feld nach einem String suchen? Wieviele Suchoperationen sind im ungünstigsten Fall notwendig? Welches Verfahren gibt es, um die Suchzeit deutlich zu beschleunigen? Geben Sie auch für dieses Verfahren an, wieviele Suchschritte im ungünstigsten Fall notwendig sind. Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 1c - 2 Suche? Schritte? Verfahren? Schritte? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 1d - 1 Welche Lebensdauer haben in einer Funktion automatische und statische Variablen? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 1d - 2 Lebensdauer automatische/statische Variablen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 2 - 1 Schreiben Sie eine Funktion, die ein Feld von N double-Variablen umkehrt: 1. Element <-> letztes Element 2. Element <-> vorletztes Element usw. Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 2 - 2 void dblreverse() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 3 1 In einem Programm finden Sie die folgende Funktion, die einen String dynamisch duplizieren soll char *stringdup(char *str) { char *new; int len, i; len = strlen(str); new = (char *) malloc(len); for(i = 0; i < len; i++) new[i] = str[i]; return(new); } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 3 - 2 Ist die Funktion korrekt implementiert? Wenn nein, wo ist der Fehler? Welche Konsequenzen hätte der Fehler? Welche Korrektur ist ggfs. notwendig? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 3 3 Korrekt? Fehler? Folgen? Korrektur? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 3 - 4 strdup() korrekt Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 4 - 1 Ein "intelligenter" Stromzähler (Smartmeter) misst an einem Stromkreis jede Sekunde die aktuelle Leistung und speichert diese in einem Struct struct _sms { unsigned num; /* Lfd. Nummer */ time_t tim; /* Messzeit */ unsigned val; /* Messwert in W */ struct _sms *nxt; /* Nächstes El. */ } *smsroot; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 4 - 2 Die Messdaten werden in einer einfach verketteten Liste dynamisch gespeichert. Nach 15 Minuten werden alle Messdaten an einen Server verschickt. Schreiben Sie eine C-Funktion, die vor dem Versenden der Daten den Stromverbrauch in Ws und KWh sowie das Minimum und das Maximum des Messzyklus ermittelt und auf stdout ausgibt. Die Schnittstelle der C-Funktion: void ausgabe(struct _sms *s) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Aufgabe 4 3 void ausgabe(struct _sms *s) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ