Welchen Wert liefert eq("Text", "Text")?
int eq(char [] s1 , char [] s2) {
return s1 == s2;
}
\Lsg
Der Vergleich der Zeiger sollte immer falsch ergeben (Optimierung mal vernachlässigt). Begründung: Zwei Strings liegen an zwei Speicheradressen, der Vergleich von vercshiedenen Speicheradressen sollte falsc sein.
Was macht die folgende Funktion und wie funktioniert sie?
\Lsg
int f(int a[], int n, int v) {
// NoErr/falsch zurückgeben
if(n == 0){ return 0; }
// vergleiche erste position
else if(a[0] == v){ return 1; }
// rekursiere über das array ohne das erste element mit laenge-1
else{ return f(a+1, n-1, v); }
}
// f sucht v in einem n langen a[]
// 0 \Rightarrow nicht gefunden
// 1 \Rightarrow gefunden
// Die Position wird nicht geliefert
Geben Sie den Wert von a[1][0] nach der Ausführung des folgenden Codeausschnitts an.
\Lsg
//erst auf Null in Zeile 1, Spalte 0
a[1][0] = 0;
//Zeile 0 wird auf 1 gesetzt, aber auch das 9. Elm
for(k = 0; k <= 8; k++) a[0][k] = 1;
//Zeile 1, Spalte 0 ist daher auch 1
//a[1][0] hat die gleiche Adresse wie a[0][8]
//s.a. Rechteckformel
Die Statement Coverage einer Menge von Tests ist der Anteil der Codezeilen des zu testenden Programms, der mit diesen Tests durchlaufen wird.
Überlegen Sie, wie Ihr Programm aus Aufgabe,21 so getestet werden kann, dass eine hohe Statement Coverage erreicht wird. Begründen Sie, warum manche Tests dabei besser sind als andere und geben sie einen Test an, der 100% Statement Coverage erreicht.
\Lsg
Um 100% Statement Coverage zu erreichen, müssen alle Code-Zeilen durchlaufen werden.
Daher müssen die Parameter so gewählt werden, dass jede Bedingung getroffen wird. Wenn dies nicht mit einem Test erfüllbar ist, sind mehrere notwendig.
Hier sollte 5 als Parameter für den Exponenten genügen. Begründung: Es muss für gerade und ungerade Zahlen größer 2 geprüft werden.
Finden Sie alle Fehler in folgendem Programm. Die Funktionsnamen geben an, was die Funktion machen soll.
void swap(int *a, int *b) {
int *tmp = *b; //int tmp=*b;
*b = *a;
*a = *tmp; //*a=tmp;
}
void sort(int a[], int a_length ) {
int i,j;
for(i = 0; i < a_length ; i++)
for(j = 0; j < a_length ; j++) //j=i
if(a[j] < a[i])
swap(a[i], a[j]);
}
int main () {
double a[] = {1, 3, 8, 0, 1, 4, //umbruch mit \
20, 0, -1, -2};
sort(a, 11);
return 0;
}