• Keine Ergebnisse gefunden

Probeklausur: Programmieren I

N/A
N/A
Protected

Academic year: 2022

Aktie "Probeklausur: Programmieren I"

Copied!
14
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Probeklausur: Programmieren I

WS09/10

Erlaubte Hilfsmittel: keine

L¨osung ist auf den Klausurb¨ogen anzufertigen. (eventuell R¨ uckseiten nehmen)

Bitte legen Sie einen Lichtbildausweis und den Studentenausweis auf den Tisch.

Bearbeitungszeit: 90 Minuten

Unterschrift

Benotung

Aufgabe: 1 2 3 4 5 6 Gesamt Note Punkte: 12 16 18 20 18 16 100

erreicht:

WS09/10 Probeklausur: Programmieren I (Seite 1) 14.12.2009

(2)

Aufgabe 1 F¨uhren Sie folgendes Programme von Hand aus und nortieren Sie die sich

¨andernden Werte der einzelnen Variabeln.

Aufgabe1a.c a) 1 #include <stdio.h>

2

3 int main(){

4 int x=0;

5 int y=1;

6 for (x=10;x!=y;x=x-y){

7 if (y>x) break;

8 y=y+1;

9 printf("x=%d y=%d\n",x,y);

10 }

11

12 return 0;

13 }

14

WS09/10 Probeklausur: Programmieren I (Seite 2) 14.12.2009

(3)

Aufgabe1b.c b) 1 #include <stdio.h>

2

3 int main(){

4 int x=52;

5 switch (x%4==0){

6 case 1: x=x+1;

7 case 2: x=x+2;

8 default: x=x+3;

9 }

10 printf("x=%d\n",x);

11 return 0;

12 }

WS09/10 Probeklausur: Programmieren I (Seite 3) 14.12.2009

(4)

Aufgabe1c.c c) 1 #include <stdio.h>

2 int main(){

3 int x=0;

4 int y=3;

5 for (;y>0;y--){

6 while (x<5){

7 x=x+1;

8 if (x%2==0) continue;

9 printf("x: %i y: %i\n",x,y);

10 }

11 }

12 return 0;

13 }

WS09/10 Probeklausur: Programmieren I (Seite 4) 14.12.2009

(5)

Aufgabe1d.c d) 1 #include <stdio.h>

2

3 typedef struct {int x;int y;} Punkt;

4

5 Punkt verschiebe(Punkt p,int dX,int dY){

6 Punkt result=p;

7 p.x=p.x+dX;

8 p.y=p.y+dY;

9 return result;

10 }

11

12 void printPunkt(Punkt p){

13 printf("(%i,%i)\n",p.x,p.y);

14 }

15

16 int main(){

17 Punkt p={17,4};

18 printPunkt(p);

19 Punkt p2 = verschiebe(p,25,38);

20 printPunkt(p);

21 printPunkt(p2);

22 return 0;

23 }

WS09/10 Probeklausur: Programmieren I (Seite 5) 14.12.2009

(6)

Aufgabe 2 Schreiben Sie folgende Funtionen auf Zeichenketten:

a) F¨ur Strings ist eine Funktion:

boolean isPalindrom(char* str1);

zu implementieren. Es soll zur¨uckgegeben werden, ob ein String Palindrom ist. (Pa- lindrom sind W¨orter, die vorw¨arts und r¨uckw¨arts gelesen gleich sind, z.B.: Otto, Anna, Lagerregal, Rentner)

b) F¨ur Strings ist eine Funktion:

unsigned int howOftenContaind(char* str, char c)

zu implementieren. Es soll berechnet werden, wie oft das Zeichen c im String str enthalten ist.

WS09/10 Probeklausur: Programmieren I (Seite 6) 14.12.2009

(7)

Aufgabe 3 Realisieren Sie die folgenden mathematischen Funktionen in C

a)

p(n) =

( 0, fallsn = 0, n−1, sonst

b)

s(m, n) =

( m, falls n= 0,

p(s(m, n−1)), sonst

WS09/10 Probeklausur: Programmieren I (Seite 7) 14.12.2009

(8)

c)

f(m, n) =

0 falls m= 0

f(m−1,1) falls m >0, n = 0 f(m−1, f(m, n−1)) falls m >0, n >0

WS09/10 Probeklausur: Programmieren I (Seite 8) 14.12.2009

(9)

Aufgabe 4 Entwerfen Sie in dieser Aufgabe eine kleine Bibliothek zur Darstellung von Studentendaten. Ein Studentendatensatz besteht dabei aus einem Wert f¨ur Vorname, einem Wert f¨ur den Nachname, einen Wert f¨ur das Fachsemester und einen Wert f¨ur die Anzahl der bereits erreichten Creditpoints.

a) Schreiben Sie eine geeignete Struktur struct Studentendaten f¨ur die Bibliothek.

b) Schreiben Sie eine geeignete Konstruktorfunktion, mit der ein Zeiger auf ein Stu- dentendatenobjekt erzeugt und dieses Objekt initialisiert wird.

WS09/10 Probeklausur: Programmieren I (Seite 9) 14.12.2009

(10)

c) Schreiben Sie eine Funktion, die zwei Studentenobjekte als Parameter erh¨alt und einen bool’schen Wert zur¨uckgibt, der anzeigt ob der erste Student in einem niedri- geren Fachsemester ist, und mehr Creditpoints erreicht hat.

d) Schreiben Sie eine Funktion, die als ersten Parameter ein Studentenobjekt erh¨oht und als zweiten Parameter ein Integer. Der zweite Paramter gibt die Anzahl der Creditpoints an, die dem Student gut geschrieben werden sollen. Hinweis Das Objekt wird ver¨andert!

WS09/10 Probeklausur: Programmieren I (Seite 10) 14.12.2009

(11)

Aufgabe 5 Gegeben Sei folgende Implementierung von einfach verketteten Listen, wie aus der Vorlesung bekannt. Die Listenelemente sind ganze Zahlen

L.h

1 typedef enum {false,true} boolean;

2

3 struct Liste{

4 boolean isEmpty;

5 int head;

6 struct Liste* tail;

7 };

8

9 typedef struct Liste Li;

10 Li* newLi(char head,Li* tail);

11 Li* newEmptyLi();

Implementieren Sie folgende Funktionen rekursiv:

a) int sum(Li* this);

Es soll die Summe aller in der Liste gespeicherten Elemente berechnet werden. F¨ur die leere Liste sei das Ergebnis 0.

WS09/10 Probeklausur: Programmieren I (Seite 11) 14.12.2009

(12)

b) int last(Li* this);

Es soll da letzte Listenelement zur¨uck gegeben werden. F¨ur leere Listen soll auch hier die 0 als Ergebnis zur¨uckgegeben werden.

WS09/10 Probeklausur: Programmieren I (Seite 12) 14.12.2009

(13)

Aufgabe 6 Erkl¨aren Sie in kurzen Worten.

a) Strings werden C als Zeiger auf das ersten Zeichen der Zeichenkette dargestellt.

Auch Reihungen sind Zeiger auf das erste Element der Reihung., Trotzdem gibt es einen entscheidenen Unterschied zwischen char* str = (char*)malloc(....)

und

char str [] = {....}

b) In C-Funktionen k¨onnen statische Variable deklariert werden. Was bedeutet das?

WS09/10 Probeklausur: Programmieren I (Seite 13) 14.12.2009

(14)

c) Welche M¨oglickeit hat man, wenn man eine Reihung als Zeiger auf das erste Element

¨ubergeben bekommt, die Anzahl der Elemente in dieser Reihung zu bestimmen?

d) Was ist bei folgenden Code problematisch?

1 int* f(int i){

2 int result = 42*i;

3 printf("%d\n",result);

4 return &result;

5 }

WS09/10 Probeklausur: Programmieren I (Seite 14) 14.12.2009

Referenzen

ÄHNLICHE DOKUMENTE

Welche Teilchen sind in einem stromdurchflos- senen metallischen Leiter in einer bestimmten Richtung in

In der eigentlichen Newton-Iteration sollen die Funktionen evaluateF und evaluateDF aufgerufen werden, um die Funktion f und ihre Ableitung f

In der eigentlichen Newton-Iteration sollen die Funktionen evaluateF und evaluateDF aufgerufen werden, um die Funktion f und ihre Ableitung f

Nach dem Satz von Heine-Borel ist eine Teilmenge des R d genau dann kompakt, wenn sie beschr¨ ankt und abgeschlossen ist (diese Aussage ist eine Verallgemeine- rung des Satzes 5.42

Falls ja, bestimmen Sie die zugeh¨orige

Geben Sie eine Funktion an, die an der Stelle x 0 = 0 stetig aber nicht dif- ferenzierbar ist und weise Sie diese Eigenschaften an der von Ihnen gew¨ ahlten Funktion explizit

[r]

Nicht jeder reell abgeschlossene K¨ orper ist aber isomorph zu R , denn sonst w¨ urde (b) offensichtlich f¨ ur jeden reell abgeschlossenen K¨ orper R gelten, was nicht der Fall ist,