C Tutorial

C Examples

120 complete C17 programs with int main(void), including STEM labs from maths, physics, and chemistry. Compile them at /c/try with gcc.

120 copy-and-run snippets. Open one in Try C at /c/try, change a value, and run it again. Each language has its own shelf and its own editor.

Basics

Hello, C

#include <stdio.h>

int main(void) {
  printf("Hello, C\n");
  return 0;
}
Related lesson →

Print a name

#include <stdio.h>

int main(void) {
  printf("Ada in %d\n", 2026);
  return 0;
}
Related lesson →

Print int and float

#include <stdio.h>

int main(void) {
  int n = 7;
  double x = 3.5;
  printf("%d %.1f\n", n, x);
  return 0;
}
Related lesson →

Print a character

#include <stdio.h>

int main(void) {
  char mark = 'C';
  printf("%c\n", mark);
  return 0;
}
Related lesson →

Variables

#include <stdio.h>

int main(void) {
  int a = 8;
  int b = 11;
  printf("%d\n", a + b);
  return 0;
}
Related lesson →

Constants

#include <stdio.h>

int main(void) {
  const int seats = 12;
  printf("seats: %d\n", seats);
  return 0;
}
Related lesson →

Sizeof types

#include <stdio.h>

int main(void) {
  printf("int %zu\n", sizeof(int));
  printf("double %zu\n", sizeof(double));
  return 0;
}
Related lesson →

Arithmetic

#include <stdio.h>

int main(void) {
  printf("%d %d %d\n", 7 + 3, 7 - 3, 7 * 3);
  return 0;
}
Related lesson →

Division and remainder

#include <stdio.h>

int main(void) {
  printf("%d %d\n", 17 / 5, 17 % 5);
  return 0;
}
Related lesson →

Float average

#include <stdio.h>

int main(void) {
  int sum = 8 + 11 + 5;
  printf("%.2f\n", sum / 3.0);
  return 0;
}
Related lesson →

Increment

#include <stdio.h>

int main(void) {
  int n = 4;
  n++;
  printf("%d\n", n);
  return 0;
}
Related lesson →

Char as number

#include <stdio.h>

int main(void) {
  char letter = 'A';
  printf("%c %d\n", letter, letter);
  return 0;
}
Related lesson →

Boolean via stdbool

#include <stdio.h>
#include <stdbool.h>

int main(void) {
  bool ready = true;
  printf("%s\n", ready ? "yes" : "no");
  return 0;
}
Related lesson →

Enum days

#include <stdio.h>

int main(void) {
  enum Day { Mon = 1, Tue, Wed };
  printf("%d\n", Tue);
  return 0;
}
Related lesson →

Hex output

#include <stdio.h>

int main(void) {
  printf("%x\n", 255);
  return 0;
}
Related lesson →

Width padding

#include <stdio.h>

int main(void) {
  printf("%04d\n", 7);
  return 0;
}
Related lesson →

Cast double to int

#include <stdio.h>

int main(void) {
  printf("%d\n", (int)9.8);
  return 0;
}
Related lesson →

Define macro

#include <stdio.h>

int main(void) {
  printf("%d\n", 12);
  return 0;
}
Related lesson →

Multiple declarations

#include <stdio.h>

int main(void) {
  int x = 1, y = 2, z = 3;
  printf("%d\n", x + y + z);
  return 0;
}
Related lesson →

Unsigned

#include <stdio.h>

int main(void) {
  unsigned int n = 4000000000u;
  printf("%u\n", n);
  return 0;
}
Related lesson →

Control

If else

#include <stdio.h>

int main(void) {
  int n = 7;
  if (n % 2 == 0) {
    printf("even\n");
  } else {
    printf("odd\n");
  }
  return 0;
}
Related lesson →

Nested if

#include <stdio.h>

int main(void) {
  int score = 82;
  if (score >= 90) {
    printf("A\n");
  } else if (score >= 80) {
    printf("B\n");
  } else {
    printf("C\n");
  }
  return 0;
}
Related lesson →

Ternary

#include <stdio.h>

int main(void) {
  int n = 4;
  printf("%s\n", n % 2 == 0 ? "even" : "odd");
  return 0;
}
Related lesson →

Switch

#include <stdio.h>

int main(void) {
  int day = 3;
  switch (day) {
    case 1: printf("Mon\n"); break;
    case 2: printf("Tue\n"); break;
    default: printf("later\n");
  }
  return 0;
}
Related lesson →

For loop

#include <stdio.h>

int main(void) {
  int n;
  for (n = 1; n <= 5; n++) {
    printf("%d\n", n);
  }
  return 0;
}
Related lesson →

While loop

#include <stdio.h>

int main(void) {
  int n = 3;
  while (n > 0) {
    printf("%d\n", n);
    n--;
  }
  return 0;
}
Related lesson →

Do while

#include <stdio.h>

int main(void) {
  int n = 0;
  do {
    printf("%d\n", n);
    n++;
  } while (n < 3);
  return 0;
}
Related lesson →

Break

#include <stdio.h>

int main(void) {
  int n;
  for (n = 0; n < 10; n++) {
    if (n == 4) {
      break;
    }
    printf("%d\n", n);
  }
  return 0;
}
Related lesson →

Continue

#include <stdio.h>

int main(void) {
  int n;
  for (n = 0; n < 6; n++) {
    if (n % 2 == 0) {
      continue;
    }
    printf("%d\n", n);
  }
  return 0;
}
Related lesson →

FizzBuzz

#include <stdio.h>

int main(void) {
  int n;
  for (n = 1; n <= 15; n++) {
    if (n % 15 == 0) printf("FizzBuzz\n");
    else if (n % 3 == 0) printf("Fizz\n");
    else if (n % 5 == 0) printf("Buzz\n");
    else printf("%d\n", n);
  }
  return 0;
}
Related lesson →

Even or odd range

#include <stdio.h>

int main(void) {
  int n;
  for (n = 1; n <= 8; n++) {
    printf("%d %s\n", n, n % 2 == 0 ? "even" : "odd");
  }
  return 0;
}
Related lesson →

Max of three

#include <stdio.h>

int main(void) {
  int a = 8, b = 11, c = 5;
  int best = a;
  if (b > best) best = b;
  if (c > best) best = c;
  printf("%d\n", best);
  return 0;
}
Related lesson →

Leap year

#include <stdio.h>

int main(void) {
  int year = 2024;
  int leap = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
  printf("%s\n", leap ? "leap" : "common");
  return 0;
}
Related lesson →

Nested loops table

#include <stdio.h>

int main(void) {
  int r, c;
  for (r = 1; r <= 3; r++) {
    for (c = 1; c <= 3; c++) {
      printf("%d ", r * c);
    }
    printf("\n");
  }
  return 0;
}
Related lesson →

Countdown

#include <stdio.h>

int main(void) {
  int n;
  for (n = 5; n >= 1; n--) {
    printf("%d\n", n);
  }
  return 0;
}
Related lesson →

Arrays

Array sum

#include <stdio.h>

int main(void) {
  int nums[] = {8, 11, 5};
  int i, sum = 0;
  for (i = 0; i < 3; i++) sum += nums[i];
  printf("%d\n", sum);
  return 0;
}
Related lesson →

Array max

#include <stdio.h>

int main(void) {
  int nums[] = {4, 17, 9, 2, 13};
  int i, best = nums[0];
  for (i = 1; i < 5; i++) {
    if (nums[i] > best) best = nums[i];
  }
  printf("%d\n", best);
  return 0;
}
Related lesson →

Array min

#include <stdio.h>

int main(void) {
  int nums[] = {4, 17, 9, 2};
  int i, low = nums[0];
  for (i = 1; i < 4; i++) {
    if (nums[i] < low) low = nums[i];
  }
  printf("%d\n", low);
  return 0;
}
Related lesson →

Reverse array

#include <stdio.h>

int main(void) {
  int nums[] = {1, 2, 3, 4};
  int i;
  for (i = 3; i >= 0; i--) printf("%d ", nums[i]);
  printf("\n");
  return 0;
}
Related lesson →

Linear search

#include <stdio.h>

int main(void) {
  int nums[] = {4, 17, 9};
  int i, found = -1;
  for (i = 0; i < 3; i++) {
    if (nums[i] == 9) found = i;
  }
  printf("%d\n", found);
  return 0;
}
Related lesson →

Count evens

#include <stdio.h>

int main(void) {
  int nums[] = {1, 2, 3, 4, 5, 6};
  int i, n = 0;
  for (i = 0; i < 6; i++) if (nums[i] % 2 == 0) n++;
  printf("%d\n", n);
  return 0;
}
Related lesson →

Bubble sort

#include <stdio.h>

int main(void) {
  int nums[] = {9, 2, 7, 1};
  int i, j, tmp;
  for (i = 0; i < 4; i++) {
    for (j = 0; j < 3; j++) {
      if (nums[j] > nums[j + 1]) {
        tmp = nums[j];
        nums[j] = nums[j + 1];
        nums[j + 1] = tmp;
      }
    }
  }
  for (i = 0; i < 4; i++) printf("%d ", nums[i]);
  printf("\n");
  return 0;
}
Related lesson →

2D array print

#include <stdio.h>

int main(void) {
  int grid[2][3] = {{1, 2, 3}, {4, 5, 6}};
  int r, c;
  for (r = 0; r < 2; r++) {
    for (c = 0; c < 3; c++) printf("%d ", grid[r][c]);
    printf("\n");
  }
  return 0;
}
Related lesson →

Matrix sum

#include <stdio.h>

int main(void) {
  int a[2][2] = {{1, 2}, {3, 4}};
  int r, c, sum = 0;
  for (r = 0; r < 2; r++) for (c = 0; c < 2; c++) sum += a[r][c];
  printf("%d\n", sum);
  return 0;
}
Related lesson →

Copy array

#include <stdio.h>

int main(void) {
  int src[] = {1, 2, 3};
  int dest[3];
  int i;
  for (i = 0; i < 3; i++) dest[i] = src[i];
  printf("%d\n", dest[2]);
  return 0;
}
Related lesson →

Average array

#include <stdio.h>

int main(void) {
  int nums[] = {8, 11, 5, 16};
  int i, sum = 0;
  for (i = 0; i < 4; i++) sum += nums[i];
  printf("%.2f\n", sum / 4.0);
  return 0;
}
Related lesson →

Frequency of a value

#include <stdio.h>

int main(void) {
  int nums[] = {3, 1, 3, 2, 3};
  int i, n = 0;
  for (i = 0; i < 5; i++) if (nums[i] == 3) n++;
  printf("%d\n", n);
  return 0;
}
Related lesson →

Strings

String print

#include <stdio.h>

int main(void) {
  char word[] = "compiler";
  printf("%s\n", word);
  return 0;
}
Related lesson →

String length walk

#include <stdio.h>

int main(void) {
  char word[] = "compiler";
  int n = 0;
  while (word[n] != '\0') n++;
  printf("%d\n", n);
  return 0;
}
Related lesson →

strlen

#include <stdio.h>
#include <string.h>

int main(void) {
  printf("%zu\n", strlen("grid"));
  return 0;
}
Related lesson →

strcpy

#include <stdio.h>
#include <string.h>

int main(void) {
  char dest[16];
  strcpy(dest, "Ada");
  printf("%s\n", dest);
  return 0;
}
Related lesson →

strcat

#include <stdio.h>
#include <string.h>

int main(void) {
  char dest[16] = "Try ";
  strcat(dest, "C");
  printf("%s\n", dest);
  return 0;
}
Related lesson →

strcmp

#include <stdio.h>
#include <string.h>

int main(void) {
  printf("%d\n", strcmp("ada", "ada"));
  printf("%d\n", strcmp("ada", "kai"));
  return 0;
}
Related lesson →

Reverse a string

#include <stdio.h>

int main(void) {
  char word[] = "compiler";
  int i, n = 0;
  while (word[n] != '\0') n++;
  for (i = n - 1; i >= 0; i--) printf("%c", word[i]);
  printf("\n");
  return 0;
}
Related lesson →

Palindrome check

#include <stdio.h>

int main(void) {
  char word[] = "level";
  int i, n = 5, ok = 1;
  for (i = 0; i < n / 2; i++) {
    if (word[i] != word[n - 1 - i]) ok = 0;
  }
  printf("%s\n", ok ? "palindrome" : "no");
  return 0;
}
Related lesson →

Count vowels

#include <stdio.h>

int main(void) {
  char word[] = "compiler";
  int i, n = 0;
  for (i = 0; word[i]; i++) {
    char c = word[i];
    if (c=='a'||c=='e'||c=='i'||c=='o'||c=='u') n++;
  }
  printf("%d\n", n);
  return 0;
}
Related lesson →

To uppercase

#include <stdio.h>

int main(void) {
  char word[] = "Ada";
  int i;
  for (i = 0; word[i]; i++) {
    if (word[i] >= 'a' && word[i] <= 'z') word[i] -= 32;
  }
  printf("%s\n", word);
  return 0;
}
Related lesson →

Char count

#include <stdio.h>

int main(void) {
  char word[] = "mississippi";
  int i, n = 0;
  for (i = 0; word[i]; i++) if (word[i] == 's') n++;
  printf("%d\n", n);
  return 0;
}
Related lesson →

First and last char

#include <stdio.h>

int main(void) {
  char word[] = "python";
  printf("%c %c\n", word[0], word[5]);
  return 0;
}
Related lesson →

Digits in a string

#include <stdio.h>

int main(void) {
  char text[] = "room 12";
  int i, n = 0;
  for (i = 0; text[i]; i++) if (text[i] >= '0' && text[i] <= '9') n++;
  printf("%d\n", n);
  return 0;
}
Related lesson →

strncmp

#include <stdio.h>
#include <string.h>

int main(void) {
  printf("%d\n", strncmp("python", "py", 2));
  return 0;
}
Related lesson →

Pointers and structs

Address of

#include <stdio.h>

int main(void) {
  int n = 7;
  printf("%d\n", n);
  printf("%p\n", (void *)&n);
  return 0;
}
Related lesson →

Dereference

#include <stdio.h>

int main(void) {
  int n = 7;
  int *p = &n;
  *p = 12;
  printf("%d\n", n);
  return 0;
}
Related lesson →

Pointer to array

#include <stdio.h>

int main(void) {
  int nums[] = {1, 2, 3};
  int *p = nums;
  printf("%d\n", *(p + 1));
  return 0;
}
Related lesson →

Swap via pointers

#include <stdio.h>

int main(void) {
  int a = 3, b = 9, tmp;
  int *pa = &a, *pb = &b;
  tmp = *pa;
  *pa = *pb;
  *pb = tmp;
  printf("%d %d\n", a, b);
  return 0;
}
Related lesson →

Struct point

#include <stdio.h>

int main(void) {
  struct Point { double x; double y; };
  struct Point p;
  p.x = 3;
  p.y = 4;
  printf("%.0f %.0f\n", p.x, p.y);
  return 0;
}
Related lesson →

Point distance

#include <stdio.h>
#include <math.h>

int main(void) {
  struct Point { double x; double y; };
  struct Point a = {0, 0};
  struct Point b = {3, 4};
  double dx = b.x - a.x;
  double dy = b.y - a.y;
  printf("%.1f\n", sqrt(dx * dx + dy * dy));
  return 0;
}
Related lesson →

Pointer to struct

#include <stdio.h>

int main(void) {
  struct User { int score; };
  struct User u = {88};
  struct User *p = &u;
  printf("%d\n", p->score);
  return 0;
}
Related lesson →

Typedef struct

#include <stdio.h>

int main(void) {
  typedef struct { int x; int y; } Point;
  Point p = {2, 5};
  printf("%d\n", p.x + p.y);
  return 0;
}
Related lesson →

Union overlay

#include <stdio.h>

int main(void) {
  union Bits { int n; char bytes[4]; };
  union Bits b;
  b.n = 1;
  printf("%d\n", b.bytes[0]);
  return 0;
}
Related lesson →

Malloc array

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  int *nums = malloc(3 * sizeof(int));
  if (!nums) return 1;
  nums[0] = 1; nums[1] = 2; nums[2] = 3;
  printf("%d\n", nums[2]);
  free(nums);
  return 0;
}
Related lesson →

Sizeof pointer

#include <stdio.h>

int main(void) {
  int *p = 0;
  printf("%zu\n", sizeof p);
  return 0;
}
Related lesson →

Nested struct

#include <stdio.h>

int main(void) {
  struct Point { int x; int y; };
  struct Rect { struct Point a; struct Point b; };
  struct Rect r = {{0, 0}, {4, 3}};
  printf("%d\n", r.b.x);
  return 0;
}
Related lesson →

Functions

Add function

#include <stdio.h>

int add(int a, int b) {
  return a + b;
}

int main(void) {
  printf("%d\n", add(8, 11));
  return 0;
}
Related lesson →

Factorial

#include <stdio.h>

int factorial(int n) {
  int result = 1;
  int i;
  for (i = 2; i <= n; i++) result *= i;
  return result;
}

int main(void) {
  printf("%d\n", factorial(5));
  return 0;
}
Related lesson →

Recursive factorial

#include <stdio.h>

int factorial(int n) {
  if (n < 2) return 1;
  return n * factorial(n - 1);
}

int main(void) {
  printf("%d\n", factorial(6));
  return 0;
}
Related lesson →

Fibonacci

#include <stdio.h>

int fib(int n) {
  if (n < 2) return n;
  return fib(n - 1) + fib(n - 2);
}

int main(void) {
  int i;
  for (i = 0; i < 10; i++) printf("%d ", fib(i));
  printf("\n");
  return 0;
}
Related lesson →

GCD

#include <stdio.h>

int gcd(int a, int b) {
  while (b) {
    int t = a % b;
    a = b;
    b = t;
  }
  return a;
}

int main(void) {
  printf("%d\n", gcd(48, 18));
  return 0;
}
Related lesson →

Is prime

#include <stdio.h>
#include <stdbool.h>

bool is_prime(int n) {
  int d;
  if (n < 2) return false;
  for (d = 2; d * d <= n; d++) {
    if (n % d == 0) return false;
  }
  return true;
}

int main(void) {
  int n;
  for (n = 2; n <= 20; n++) if (is_prime(n)) printf("%d ", n);
  printf("\n");
  return 0;
}
Related lesson →

Power by loop

#include <stdio.h>

int power(int base, int exp) {
  int result = 1;
  int i;
  for (i = 0; i < exp; i++) result *= base;
  return result;
}

int main(void) {
  printf("%d\n", power(2, 10));
  return 0;
}
Related lesson →

Print array helper

#include <stdio.h>

void show(int *nums, int n) {
  int i;
  for (i = 0; i < n; i++) printf("%d ", nums[i]);
  printf("\n");
}

int main(void) {
  int nums[] = {4, 17, 9};
  show(nums, 3);
  return 0;
}
Related lesson →

Celsius to F

#include <stdio.h>

double to_f(double c) {
  return c * 9.0 / 5.0 + 32.0;
}

int main(void) {
  printf("%.1f\n", to_f(20));
  return 0;
}
Related lesson →

Function pointer

#include <stdio.h>

int twice(int n) { return n * 2; }

int main(void) {
  int (*fn)(int) = twice;
  printf("%d\n", fn(7));
  return 0;
}
Related lesson →

Static local

#include <stdio.h>

int tick(void) {
  static int n = 0;
  n++;
  return n;
}

int main(void) {
  printf("%d %d %d\n", tick(), tick(), tick());
  return 0;
}
Related lesson →

Scope blocks

#include <stdio.h>

int main(void) {
  int n = 1;
  {
    int n = 2;
    printf("%d\n", n);
  }
  printf("%d\n", n);
  return 0;
}
Related lesson →

Bits and library

Bitwise AND

#include <stdio.h>

int main(void) {
  printf("%d\n", 12 & 10);
  return 0;
}
Related lesson →

Bitwise OR

#include <stdio.h>

int main(void) {
  printf("%d\n", 12 | 10);
  return 0;
}
Related lesson →

Bitwise XOR

#include <stdio.h>

int main(void) {
  printf("%d\n", 12 ^ 10);
  return 0;
}
Related lesson →

Shift left

#include <stdio.h>

int main(void) {
  printf("%d\n", 1 << 5);
  return 0;
}
Related lesson →

Shift right

#include <stdio.h>

int main(void) {
  printf("%d\n", 32 >> 2);
  return 0;
}
Related lesson →

Swap with XOR

#include <stdio.h>

int main(void) {
  int a = 3, b = 9;
  a ^= b; b ^= a; a ^= b;
  printf("%d %d\n", a, b);
  return 0;
}
Related lesson →

Sqrt and pow

#include <stdio.h>
#include <math.h>

int main(void) {
  printf("%.1f %.0f\n", sqrt(25.0), pow(2.0, 8.0));
  return 0;
}
Related lesson →

Fabs and round

#include <stdio.h>
#include <math.h>

int main(void) {
  printf("%.0f %.0f\n", fabs(-4.2), round(4.6));
  return 0;
}
Related lesson →

Qsort ints

#include <stdio.h>
#include <stdlib.h>

int cmp(const void *a, const void *b) {
  return (*(const int *)a - *(const int *)b);
}

int main(void) {
  int nums[] = {9, 2, 7, 1};
  int i;
  qsort(nums, 4, sizeof(int), cmp);
  for (i = 0; i < 4; i++) printf("%d ", nums[i]);
  printf("\n");
  return 0;
}
Related lesson →

Atoi

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  printf("%d\n", atoi("42"));
  return 0;
}
Related lesson →

Abs

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  printf("%d\n", abs(-12));
  return 0;
}
Related lesson →

Time now

#include <stdio.h>
#include <time.h>

int main(void) {
  time_t now = time(NULL);
  printf("%s", ctime(&now));
  return 0;
}
Related lesson →

Const pointer target

#include <stdio.h>

int main(void) {
  const int n = 7;
  printf("%d\n", n);
  return 0;
}
Related lesson →

Ternary grade

#include <stdio.h>

int main(void) {
  int score = 71;
  printf("%s\n", score >= 70 ? "pass" : "retry");
  return 0;
}
Related lesson →

Command-line argc

#include <stdio.h>

int main(void) {
  printf("this program received argc in main\n");
  return 0;
}
Related lesson →

Null pointer check

#include <stdio.h>
#include <stddef.h>

int main(void) {
  int *p = NULL;
  printf("%s\n", p == NULL ? "null" : "set");
  return 0;
}
Related lesson →

Array length idiom

#include <stdio.h>

int main(void) {
  int nums[] = {1, 2, 3, 4};
  printf("%zu\n", sizeof nums / sizeof nums[0]);
  return 0;
}
Related lesson →

Char array vs pointer

#include <stdio.h>

int main(void) {
  char word[] = "C";
  printf("%s %zu\n", word, sizeof word);
  return 0;
}
Related lesson →

Putchar loop

#include <stdio.h>

int main(void) {
  char word[] = "grid";
  int i;
  for (i = 0; word[i]; i++) putchar(word[i]);
  putchar('\n');
  return 0;
}
Related lesson →

STEM

Ohm's law

#include <stdio.h>

int main(void) {
  double I = 0.020;
  double R = 220.0;
  printf("V = %.2f V\n", I * R);
  return 0;
}
Related lesson →

Pythagoras

#include <stdio.h>
#include <math.h>

int main(void) {
  printf("c = %.1f m\n", sqrt(3.0 * 3.0 + 4.0 * 4.0));
  return 0;
}
Related lesson →

Kinetic energy

#include <stdio.h>

double ke(double m, double v) {
  return 0.5 * m * v * v;
}

int main(void) {
  printf("KE = %.1f J\n", ke(2.0, 3.0));
  return 0;
}
Related lesson →

Free fall

#include <stdio.h>

int main(void) {
  int t;
  for (t = 1; t <= 3; t++) {
    printf("t=%d s, s=%.2f m\n", t, 0.5 * 9.81 * t * t);
  }
  return 0;
}
Related lesson →

pH acidic?

#include <stdio.h>
#include <stdbool.h>

int main(void) {
  double ph = 4.2;
  bool acidic = ph < 7.0;
  printf("%s\n", acidic ? "acidic" : "not acidic");
  return 0;
}
Related lesson →

Fever check

#include <stdio.h>

int main(void) {
  double temp_c = 38.4;
  printf("%s\n", temp_c >= 38.0 ? "fever" : "normal");
  return 0;
}
Related lesson →

DNA strand

#include <stdio.h>

int main(void) {
  char dna[] = "ATGCCAT";
  printf("%s first=%c\n", dna, dna[0]);
  return 0;
}
Related lesson →

Class mean

#include <stdio.h>

int main(void) {
  int marks[] = {72, 81, 64, 90, 77};
  int i, sum = 0;
  for (i = 0; i < 5; i++) sum += marks[i];
  printf("mean = %.1f\n", sum / 5.0);
  return 0;
}
Related lesson →

2x2 determinant

#include <stdio.h>

int main(void) {
  double m[2][2] = {{3, 1}, {2, 4}};
  printf("det = %.1f\n", m[0][0] * m[1][1] - m[0][1] * m[1][0]);
  return 0;
}
Related lesson →

Force magnitude

#include <stdio.h>
#include <math.h>

int main(void) {
  struct Force { double fx; double fy; };
  struct Force f = {3.0, 4.0};
  printf("|F| = %.1f N\n", sqrt(f.fx * f.fx + f.fy * f.fy));
  return 0;
}
Related lesson →

Half-life loop

#include <stdio.h>

int main(void) {
  double mass = 8.0;
  int n = 0;
  while (mass >= 1.0) { mass /= 2.0; n++; }
  printf("%d steps -> %.3f g\n", n, mass);
  return 0;
}
Related lesson →

Moles from grams

#include <stdio.h>

int main(void) {
  double grams = 36.0;
  double Mr = 18.0;
  printf("n = %.2f mol\n", grams / Mr);
  return 0;
}
Related lesson →

Quadratic roots

#include <stdio.h>
#include <math.h>

int main(void) {
  double a = 1, b = -5, c = 6;
  double d = b * b - 4 * a * c;
  printf("%.1f %.1f\n", (-b + sqrt(d)) / (2 * a), (-b - sqrt(d)) / (2 * a));
  return 0;
}
Related lesson →

BMI

#include <stdio.h>

int main(void) {
  double bmi = 68.0 / (1.72 * 1.72);
  printf("BMI = %.1f\n", bmi);
  return 0;
}
Related lesson →

Sensor flags

#include <stdio.h>

int main(void) {
  int OVERTEMP = 1 << 0;
  int status = OVERTEMP;
  printf("over-temp? %d\n", (status & OVERTEMP) != 0);
  return 0;
}
Related lesson →

FAQ: C Examples

Common questions about this page.

What is the StudyGrid C tutorial?

The StudyGrid C tutorial is a full beginner-to-advanced track: syntax, types, input, loops, functions, pointers, structs, files, and the standard library. Each chapter has copy-and-run examples.

Should I run c examples examples locally for better learning?

Yes. Use the browser editor on StudyGrid for a quick check, then Download the example and run it on your computer. Local runs show real errors and the real toolchain, which is one of the fastest ways to learn c examples in this C C lesson (C Examples).

Is the C editor the same as Try Python, Try HTML, or Try C++?

No. Try C compiles with gcc at /c/try and shows stdout plus compiler messages. Try Python stays at /try. Try HTML stays at /html/try. Try C++ stays at /cpp/try. C lessons never open those editors.

Do I need to install a compiler to learn C?

No. Open a chapter, click Try it in C, and compile in the browser. You can also download a .c file and compile locally with gcc.

Where should I start the C tutorial?

Start at C Intro, then Get Started and Syntax. After the first program, continue to output, variables, and if-else. After pointers, open C Examples, then files and bitwise. Use Next at the bottom of each chapter.

Is the C tutorial free?

Yes. The C workshop on StudyGrid (studygrid.in) is free: dashboard, chapters, and the compile-and-run editor.