b) -4
c) 1
#include <stdio.h> int main(void) { int grans; int antal_mindre = 0; int antal_storre = 0; int inmatat; printf("Gräns: "); scanf("%d", &grans); do { printf("Tal: "); scanf("%d", &inmatat); if (inmatat < grans) ++antal_mindre; if (inmatat > grans) ++antal_storre; } while (inmatat != grans); printf("Antal mindre: %d\n", antal_mindre); printf("Antal större: %d\n", antal_storre); return 0; }
En annan lösning för den som tycker om pekare:void replace_char(char s[], char gamla, char nya) { int n = strlen(s); for (int i = 0; i < n; ++i) if (s[i] == gamla) s[i] = nya; }
void replace_char_2(char *s, char gamla, char nya) { while (*s != '\0') { if (*s == gamla) *s = nya; ++s; } }
int main(void) { char rad[100]; char gamla; char nya; printf("Skriv en rad: "); gets(rad); printf("Ange ett tecken som ska bytas ut: "); gamla = getchar(); while (getchar() != '\n') ; printf("Ange det nya tecknet: "); nya = getchar(); replace_char(rad, gamla, nya); printf("Resultat: %s\n", rad); return 0; }
En annan lösning för den som tycker om pekare:int strlen(char *s) { int length = 0; while (s[length] != '\0') { ++length; } return length; }
int strlen(char *s) { char *start = s; while (*s++ != '\0') ; return s - start; }
En kommentar: Enligt C-standarden returnerar strlen en size_t och inte en int, men för enkelhets skull använder vi int här. Det är dock bara att byta till size_t om man vill.
b)
c)char *gets(char *s) { int length = 0; int c = getchar(); while (c != '\n') { s[length] = c; ++length; c = getchar(); } s[length] = '\0'; return s; }
int getchar(void) { return getc(stdin); }
b)char spelplan[50][50];
void visa_spelplanen(char spelplan[50][50]) { int min_rad = 50, max_rad = -1, min_kolumn = 50, max_kolumn = -1; // Börja med att hitta ytterlägena för markerade rutor for (int rad = 0; rad < 50; ++rad) { for (int kolumn = 0; kolumn < 50; ++kolumn) { if (spelplan[rad][kolumn] != '.') { if (rad < min_rad) min_rad = rad; if (rad > max_rad) max_rad = rad; if (kolumn < min_kolumn) min_kolumn = kolumn; if (kolumn > max_kolumn) max_kolumn = kolumn; } } } // Skriv ut den intressanta delen av spelplanen. Obs: <= och inte < for (int rad = min_rad; rad <= max_rad; ++rad) { for (int kolumn = min_kolumn; kolumn <= max_kolumn; ++kolumn) { putchar(spelplan[rad][kolumn]); } putchar('\n'); } }
....
....
#include <stdlib.h> #include <stdio.h> #include <time.h> int main(void) { int tal; int maxpoang[20]; int antal_uppgifter = 0; int i; int denna_poang; int poangsumma = 0; srand(time(NULL)); printf("Ange poängen på uppgifterna. Avsluta med talet noll.\n"); scanf("%d", &tal); while (tal != 0) { maxpoang[antal_uppgifter++] = tal; scanf("%d", &tal); } printf("Tentaresultat:\n"); for (i = 0; i < antal_uppgifter; ++i) { denna_poang = rand() % (maxpoang[i] + 1); printf("%d ", denna_poang); poangsumma += denna_poang; } printf("\n"); printf("Summa: %d\n", poangsumma); return EXIT_SUCCESS; }