In diesem Labor werden Sie:
'\0' und brauchen Platz für n+1 Zeichen& (das Array ist schon eine Adresse)strcmp, NICHT mit ==Legen Sie ein Array mit 5 Noten an und geben Sie alle Werte mit einer for-Schleife aus.
int noten[5] = {2, 1, 3, 2, 4};"Note 1: 2" usw. aus#include <stdio.h> int main() { int noten[5] = {2, 1, 3, 2, 4}; for (int i = 0; i < 5; i++) { printf("Note %d: %d\n", i + 1, noten[i]); } return 0; }
Berechnen Sie die Summe und den Durchschnitt der Noten aus dem Array.
Eine Variable sammelt schrittweise alle Werte auf:
Ohne (double) wuerde C eine Ganzzahl-Division machen und die Nachkommastellen verlieren.
{2, 1, 3, 2, 4}double mit %.2f#include <stdio.h> int main() { int noten[5] = {2, 1, 3, 2, 4}; int summe = 0; for (int i = 0; i < 5; i++) { summe += noten[i]; } double schnitt = (double)summe / 5; printf("Summe: %d\n", summe); printf("Durchschnitt: %.2f\n", schnitt); return 0; }
Lesen Sie einen Namen ein und bauen Sie damit eine Begrüßung zusammen.
char-Array, das mit '\0' endet.scanf("%s", name) liest ein Wort ein - ohne &!strcat(ziel, quelle) haengt Strings aneinander (braucht #include <string.h>).char gruss[50] = "Hallo, ";strcat an"!" an%s aus#include <stdio.h> #include <string.h> int main() { char gruss[50] = "Hallo, "; char name[30]; printf("Wie heisst du? "); scanf("%s", name); strcat(gruss, name); strcat(gruss, "!"); printf("%s\n", gruss); return 0; }
Bestimmen Sie die Länge zweier Wörter und prüfen Sie, ob sie gleich sind.
strlen(s) gibt die Länge eines Strings zurück (ohne das '\0').strcmp(a, b) vergleicht den Inhalt: Rückgabe 0 bedeutet gleich.== zum Vergleichen von Strings!"Apfel" und "Birne"strlen ausstrcmp, ob sie gleich sind#include <stdio.h> #include <string.h> int main() { char wort1[20] = "Apfel"; char wort2[20] = "Birne"; printf("Laenge wort1: %d\n", (int)strlen(wort1)); printf("Laenge wort2: %d\n", (int)strlen(wort2)); if (strcmp(wort1, wort2) == 0) { printf("Die Woerter sind gleich.\n"); } else { printf("Die Woerter sind verschieden.\n"); } return 0; }
Schreiben Sie eine Funktion quadrat, die das Quadrat einer Zahl zurückgibt.
Eine Funktion besteht aus Rückgabetyp, Name, Parametern und Rumpf.
int quadrat(int x)#include <stdio.h> int quadrat(int x); int main() { for (int i = 1; i <= 5; i++) { printf("%d hoch 2 = %d\n", i, quadrat(i)); } return 0; } int quadrat(int x) { return x * x; }
Schreiben Sie eine void-Funktion, die ein Dreieck aus Sternen druckt.
void-Funktion gibt nichts zurück, sie tut etwas (z.B. ausgeben).void drucke_dreieck(int hoehe) mit verschachtelten Schleifenhoehe = 4 auf#include <stdio.h> void drucke_dreieck(int hoehe); int main() { drucke_dreieck(4); return 0; } void drucke_dreieck(int hoehe) { for (int i = 1; i <= hoehe; i++) { for (int j = 0; j < i; j++) { printf("* "); } printf("\n"); } }
Übergeben Sie ein Array an Funktionen, die es ausgeben und seine Summe berechnen.
int arr[] zusammen mit der Größe n.void zeige_array(int arr[], int n)int summe_array(int arr[], int n)#include <stdio.h> void zeige_array(int arr[], int n); int summe_array(int arr[], int n); int main() { int zahlen[5] = {10, 20, 30, 40, 50}; zeige_array(zahlen, 5); int s = summe_array(zahlen, 5); printf("Summe: %d\n", s); return 0; } void zeige_array(int arr[], int n) { for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); } int summe_array(int arr[], int n) { int summe = 0; for (int i = 0; i < n; i++) { summe += arr[i]; } return summe; }
Schreiben Sie ein Programm, das die Werte zweier int-Variablen tauscht.
Um zwei Werte zu tauschen, brauchen wir eine temporäre Variable:
a = 5 und b = 10#include <stdio.h> int main() { int a = 5; int b = 10; printf("Vor dem Tausch: a = %d, b = %d\n", a, b); int temp = a; // Schritt 1: a speichern a = b; // Schritt 2: b nach a b = temp; // Schritt 3: altes a nach b printf("Nach dem Tausch: a = %d, b = %d\n", a, b); return 0; }
Erstellen Sie ein Array mit 5 Zahlen und tauschen Sie das erste und letzte Element.
{10, 20, 30, 40, 50}zahlen[0] und zahlen[4]#include <stdio.h> int main() { int zahlen[5] = {10, 20, 30, 40, 50}; printf("Vorher: "); for (int i = 0; i < 5; i++) { printf("%d ", zahlen[i]); } printf("\n"); int temp = zahlen[0]; zahlen[0] = zahlen[4]; zahlen[4] = temp; printf("Nachher: "); for (int i = 0; i < 5; i++) { printf("%d ", zahlen[i]); } printf("\n"); return 0; }
Finden Sie das Maximum und das Minimum in einem Array - in EINEM Durchlauf.
i = 1 vergleichen wir jedes Element mit beiden.{34, 78, 12, 89, 45, 23}#include <stdio.h> int main() { int zahlen[6] = {34, 78, 12, 89, 45, 23}; int max = zahlen[0]; int min = zahlen[0]; for (int i = 1; i < 6; i++) { if (zahlen[i] > max) { max = zahlen[i]; } if (zahlen[i] < min) { min = zahlen[i]; } } printf("Maximum: %d\n", max); printf("Minimum: %d\n", min); return 0; }
Finden Sie die Position der schlechtesten (größten) Note und geben Sie mit switch/case den passenden Notentext aus.
maxPos).switch/case kann man je nach Wert verschiedene Texte ausgeben.case braucht ein break!{3, 1, 4, 2, 5}switch/case den Notentext aus#include <stdio.h> int main() { int noten[5] = {3, 1, 4, 2, 5}; int maxPos = 0; for (int i = 1; i < 5; i++) { if (noten[i] > noten[maxPos]) { maxPos = i; } } printf("Schlechteste Note: %d an Position %d\n", noten[maxPos], maxPos); switch (noten[maxPos]) { case 1: printf("sehr gut\n"); break; case 2: printf("gut\n"); break; case 3: printf("befriedigend\n"); break; case 4: printf("ausreichend\n"); break; case 5: printf("mangelhaft\n"); break; default: printf("ungueltige Note\n"); } return 0; }
| Muster | Kernidee | Beispiel |
|---|---|---|
| Array-Durchlauf | jedes Element besuchen | for i=0..n-1 / arr[i] |
| Durchschnitt | Summe durch Anzahl | summe += arr[i]; (double)summe/n |
| String-Länge | Zeichen zählen (ohne '\0') | strlen(s) |
| String-Vergleich | Inhalt vergleichen | strcmp(a, b) == 0 |
| Funktion mit Rückgabe | liefert ein Ergebnis | return wert; |
| void-Funktion | tut etwas, kein return | void f(...) { ... } |
| Array an Funktion | Array + Größe übergeben | int arr[], int n |
| Swap | tauschen über Zwischenspeicher | temp=a; a=b; b=temp; |
| Maximum | größten Wert finden | start arr[0]; if arr[i]>max |
| Minimum | kleinsten Wert finden | start arr[0]; if arr[i] |
| Position | Index statt Wert merken | maxPos = i; |
Die Passwörter stehen unten — frei zugänglich. Bitte fair spielen: erst selbst probieren, dann mit der Musterlösung vergleichen. Eine Lösung, die ihr nur abgeschrieben habt, hilft euch in der Klausur nicht.
| Aufgabe | Thema | Passwort |
|---|---|---|
| Aufgabe 1 | Array anlegen & ausgeben | arr101 |
| Aufgabe 2 | Notendurchschnitt berechnen | avg202 |
| Aufgabe 3 | Begrüßung mit Strings | str303 |
| Aufgabe 4 | String-Länge & Vergleich | cmp404 |
| Aufgabe 5 | Funktion mit Rückgabewert | fkt505 |
| Aufgabe 6 | void-Funktion mit Parameter | dreieck606 |
| Aufgabe 7 | Array an Funktion übergeben | arrfn707 |
| Aufgabe 8 | Werte tauschen (Swap) | swap808 |
| Aufgabe 9 | Array-Elemente tauschen | swap909 |
| Aufgabe 10 | Maximum & Minimum finden | minmax10 |
| Aufgabe 11 | Position des Maximums + switch/case | maxpos11 |