ExamplesC Programming

One Dimensional Arrays

Arrays / One Dimensional Arrays

Code Walkthrough
Intermediate
11 min

Learning Objective

Study worked examples for One Dimensional Arrays until you can trace the idea without guessing.

Why It Matters

Reading and running code turns the idea into behavior you can debug, modify, and reuse.

ArraysOne-DimensionalDemonstratesTopicsDeclaration
Private notes
0/8000

Notes stay private to your browser until account sync is configured.

Examples
examples.cšŸ”§
/*
 * =============================================================================
 * ONE-DIMENSIONAL ARRAYS - EXAMPLES FILE
 * =============================================================================
 * 
 * This file demonstrates one-dimensional arrays in C.
 * Topics: declaration, initialization, access, operations, and more.
 * 
 * Compilation: gcc examples.c -o examples
 * Execution: ./examples
 * =============================================================================
 */

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

/*
 * =============================================================================
 * EXAMPLE 1: Array Declaration and Initialization
 * =============================================================================
 */
void example1_declaration_init(void) {
    printf("\n=== Example 1: Array Declaration and Initialization ===\n");
    
    // Method 1: Declare then initialize
    int arr1[5];
    arr1[0] = 10;
    arr1[1] = 20;
    arr1[2] = 30;
    arr1[3] = 40;
    arr1[4] = 50;
    
    // Method 2: Initialize at declaration
    int arr2[5] = {10, 20, 30, 40, 50};
    
    // Method 3: Partial initialization (rest are 0)
    int arr3[5] = {10, 20};  // {10, 20, 0, 0, 0}
    
    // Method 4: All zeros
    int arr4[5] = {0};  // {0, 0, 0, 0, 0}
    
    // Method 5: Size from initializer
    int arr5[] = {10, 20, 30};  // Size is 3
    
    printf("arr1: ");
    for (int i = 0; i < 5; i++) printf("%d ", arr1[i]);
    
    printf("\narr2: ");
    for (int i = 0; i < 5; i++) printf("%d ", arr2[i]);
    
    printf("\narr3 (partial): ");
    for (int i = 0; i < 5; i++) printf("%d ", arr3[i]);
    
    printf("\narr4 (all zeros): ");
    for (int i = 0; i < 5; i++) printf("%d ", arr4[i]);
    
    printf("\narr5 (auto size): ");
    int size5 = sizeof(arr5) / sizeof(arr5[0]);
    for (int i = 0; i < size5; i++) printf("%d ", arr5[i]);
    printf("(size: %d)\n", size5);
}

/*
 * =============================================================================
 * EXAMPLE 2: Accessing Array Elements
 * =============================================================================
 */
void example2_access(void) {
    printf("\n=== Example 2: Accessing Array Elements ===\n");
    
    int numbers[5] = {100, 200, 300, 400, 500};
    
    printf("Array contents:\n");
    for (int i = 0; i < 5; i++) {
        printf("  numbers[%d] = %d\n", i, numbers[i]);
    }
    
    // Modifying elements
    printf("\nModifying elements:\n");
    numbers[0] = 111;
    numbers[2] = 333;
    numbers[4] = 555;
    
    printf("After modification:\n");
    for (int i = 0; i < 5; i++) {
        printf("  numbers[%d] = %d\n", i, numbers[i]);
    }
    
    // Using expressions as index
    int index = 2;
    printf("\nUsing variable as index:\n");
    printf("  numbers[index] where index=%d: %d\n", index, numbers[index]);
    printf("  numbers[index+1]: %d\n", numbers[index + 1]);
}

/*
 * =============================================================================
 * EXAMPLE 3: Array Memory Layout
 * =============================================================================
 */
void example3_memory(void) {
    printf("\n=== Example 3: Array Memory Layout ===\n");
    
    int arr[5] = {10, 20, 30, 40, 50};
    
    printf("Memory layout of int arr[5]:\n\n");
    printf("Index    Address         Value\n");
    printf("─────────────────────────────────\n");
    
    for (int i = 0; i < 5; i++) {
        printf("  [%d]    %p    %d\n", i, (void*)&arr[i], arr[i]);
    }
    
    printf("\nSize information:\n");
    printf("  sizeof(arr) = %zu bytes (total)\n", sizeof(arr));
    printf("  sizeof(arr[0]) = %zu bytes (per element)\n", sizeof(arr[0]));
    printf("  Number of elements = %zu\n", sizeof(arr) / sizeof(arr[0]));
    
    printf("\nAddress arithmetic:\n");
    printf("  Base address: %p\n", (void*)arr);
    printf("  &arr[0]: %p (same as base)\n", (void*)&arr[0]);
    printf("  &arr[1]: %p (+4 bytes)\n", (void*)&arr[1]);
    printf("  &arr[2]: %p (+8 bytes)\n", (void*)&arr[2]);
}

/*
 * =============================================================================
 * EXAMPLE 4: Array Input from User
 * =============================================================================
 */
void example4_input(void) {
    printf("\n=== Example 4: Array Input ===\n");
    
    int arr[5];
    
    // Simulating user input with predefined values
    printf("Simulating input of 5 numbers: 15, 25, 35, 45, 55\n");
    int inputs[] = {15, 25, 35, 45, 55};
    
    for (int i = 0; i < 5; i++) {
        arr[i] = inputs[i];
        printf("  Entered arr[%d] = %d\n", i, arr[i]);
    }
    
    printf("\nArray contents: ");
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

/*
 * =============================================================================
 * EXAMPLE 5: Finding Sum and Average
 * =============================================================================
 */
void example5_sum_average(void) {
    printf("\n=== Example 5: Sum and Average ===\n");
    
    int numbers[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
    int size = sizeof(numbers) / sizeof(numbers[0]);
    
    // Calculate sum
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += numbers[i];
    }
    
    // Calculate average
    double average = (double)sum / size;
    
    printf("Array: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");
    
    printf("Sum: %d\n", sum);
    printf("Average: %.2f\n", average);
}

/*
 * =============================================================================
 * EXAMPLE 6: Finding Maximum and Minimum
 * =============================================================================
 */
void example6_max_min(void) {
    printf("\n=== Example 6: Maximum and Minimum ===\n");
    
    int arr[] = {45, 12, 89, 33, 76, 21, 98, 54};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    int max = arr[0];
    int min = arr[0];
    int maxIndex = 0;
    int minIndex = 0;
    
    for (int i = 1; i < size; i++) {
        if (arr[i] > max) {
            max = arr[i];
            maxIndex = i;
        }
        if (arr[i] < min) {
            min = arr[i];
            minIndex = i;
        }
    }
    
    printf("Array: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    printf("Maximum: %d (at index %d)\n", max, maxIndex);
    printf("Minimum: %d (at index %d)\n", min, minIndex);
}

/*
 * =============================================================================
 * EXAMPLE 7: Linear Search
 * =============================================================================
 */
void example7_search(void) {
    printf("\n=== Example 7: Linear Search ===\n");
    
    int arr[] = {23, 45, 12, 67, 34, 89, 11, 56};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    printf("Array: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    // Search for different values
    int targets[] = {67, 100, 11};
    
    for (int t = 0; t < 3; t++) {
        int target = targets[t];
        int found = -1;
        
        for (int i = 0; i < size; i++) {
            if (arr[i] == target) {
                found = i;
                break;
            }
        }
        
        if (found != -1) {
            printf("Searching for %d: Found at index %d\n", target, found);
        } else {
            printf("Searching for %d: Not found\n", target);
        }
    }
}

/*
 * =============================================================================
 * EXAMPLE 8: Reversing an Array
 * =============================================================================
 */
void example8_reverse(void) {
    printf("\n=== Example 8: Reversing an Array ===\n");
    
    int arr[] = {1, 2, 3, 4, 5, 6, 7};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    printf("Original: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    // Reverse in place
    for (int i = 0; i < size / 2; i++) {
        int temp = arr[i];
        arr[i] = arr[size - 1 - i];
        arr[size - 1 - i] = temp;
    }
    
    printf("Reversed: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

/*
 * =============================================================================
 * EXAMPLE 9: Copying Arrays
 * =============================================================================
 */
void example9_copy(void) {
    printf("\n=== Example 9: Copying Arrays ===\n");
    
    int source[] = {10, 20, 30, 40, 50};
    int size = sizeof(source) / sizeof(source[0]);
    int dest[5];
    
    // Method 1: Element by element
    for (int i = 0; i < size; i++) {
        dest[i] = source[i];
    }
    
    printf("Source: ");
    for (int i = 0; i < size; i++) printf("%d ", source[i]);
    printf("\n");
    
    printf("Dest (after copy): ");
    for (int i = 0; i < size; i++) printf("%d ", dest[i]);
    printf("\n");
    
    // Method 2: Using memcpy
    int dest2[5];
    memcpy(dest2, source, sizeof(source));
    
    printf("Dest2 (memcpy): ");
    for (int i = 0; i < size; i++) printf("%d ", dest2[i]);
    printf("\n");
}

/*
 * =============================================================================
 * EXAMPLE 10: Counting Occurrences
 * =============================================================================
 */
void example10_count(void) {
    printf("\n=== Example 10: Counting Occurrences ===\n");
    
    int arr[] = {1, 3, 2, 1, 4, 1, 3, 2, 1, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    printf("Array: ");
    for (int i = 0; i < size; i++) printf("%d ", arr[i]);
    printf("\n\n");
    
    // Count occurrences of each number (1-5)
    for (int num = 1; num <= 5; num++) {
        int count = 0;
        for (int i = 0; i < size; i++) {
            if (arr[i] == num) count++;
        }
        printf("Number %d appears %d time(s)\n", num, count);
    }
}

/*
 * =============================================================================
 * EXAMPLE 11: Array with Different Data Types
 * =============================================================================
 */
void example11_types(void) {
    printf("\n=== Example 11: Arrays of Different Types ===\n");
    
    // Integer array
    int integers[] = {1, 2, 3, 4, 5};
    printf("int array: ");
    for (int i = 0; i < 5; i++) printf("%d ", integers[i]);
    printf("\n");
    
    // Float array
    float floats[] = {1.1f, 2.2f, 3.3f, 4.4f, 5.5f};
    printf("float array: ");
    for (int i = 0; i < 5; i++) printf("%.1f ", floats[i]);
    printf("\n");
    
    // Double array
    double doubles[] = {1.11, 2.22, 3.33, 4.44, 5.55};
    printf("double array: ");
    for (int i = 0; i < 5; i++) printf("%.2f ", doubles[i]);
    printf("\n");
    
    // Char array
    char chars[] = {'H', 'e', 'l', 'l', 'o'};
    printf("char array: ");
    for (int i = 0; i < 5; i++) printf("%c", chars[i]);
    printf("\n");
    
    // Size comparison
    printf("\nMemory sizes:\n");
    printf("  int[5]: %zu bytes\n", sizeof(integers));
    printf("  float[5]: %zu bytes\n", sizeof(floats));
    printf("  double[5]: %zu bytes\n", sizeof(doubles));
    printf("  char[5]: %zu bytes\n", sizeof(chars));
}

/*
 * =============================================================================
 * EXAMPLE 12: Shifting Array Elements
 * =============================================================================
 */
void example12_shift(void) {
    printf("\n=== Example 12: Shifting Elements ===\n");
    
    int arr[] = {1, 2, 3, 4, 5};
    int size = 5;
    
    printf("Original: ");
    for (int i = 0; i < size; i++) printf("%d ", arr[i]);
    printf("\n");
    
    // Left shift by 1
    int first = arr[0];
    for (int i = 0; i < size - 1; i++) {
        arr[i] = arr[i + 1];
    }
    arr[size - 1] = first;
    
    printf("Left shift: ");
    for (int i = 0; i < size; i++) printf("%d ", arr[i]);
    printf("\n");
    
    // Reset and right shift
    int arr2[] = {1, 2, 3, 4, 5};
    int last = arr2[size - 1];
    for (int i = size - 1; i > 0; i--) {
        arr2[i] = arr2[i - 1];
    }
    arr2[0] = last;
    
    printf("Right shift: ");
    for (int i = 0; i < size; i++) printf("%d ", arr2[i]);
    printf("\n");
}

/*
 * =============================================================================
 * EXAMPLE 13: Removing Duplicates
 * =============================================================================
 */
void example13_remove_duplicates(void) {
    printf("\n=== Example 13: Removing Duplicates ===\n");
    
    int arr[] = {1, 2, 2, 3, 4, 4, 4, 5, 5};
    int size = 9;
    
    printf("Original: ");
    for (int i = 0; i < size; i++) printf("%d ", arr[i]);
    printf("\n");
    
    int uniqueArr[9];
    int uniqueSize = 0;
    
    for (int i = 0; i < size; i++) {
        int isDuplicate = 0;
        for (int j = 0; j < uniqueSize; j++) {
            if (arr[i] == uniqueArr[j]) {
                isDuplicate = 1;
                break;
            }
        }
        if (!isDuplicate) {
            uniqueArr[uniqueSize++] = arr[i];
        }
    }
    
    printf("Unique: ");
    for (int i = 0; i < uniqueSize; i++) printf("%d ", uniqueArr[i]);
    printf("(%d elements)\n", uniqueSize);
}

/*
 * =============================================================================
 * EXAMPLE 14: Merging Two Arrays
 * =============================================================================
 */
void example14_merge(void) {
    printf("\n=== Example 14: Merging Arrays ===\n");
    
    int arr1[] = {1, 3, 5, 7};
    int arr2[] = {2, 4, 6, 8, 10};
    int size1 = 4, size2 = 5;
    int merged[9];
    
    // Simple concatenation
    for (int i = 0; i < size1; i++) {
        merged[i] = arr1[i];
    }
    for (int i = 0; i < size2; i++) {
        merged[size1 + i] = arr2[i];
    }
    
    printf("Array 1: ");
    for (int i = 0; i < size1; i++) printf("%d ", arr1[i]);
    printf("\n");
    
    printf("Array 2: ");
    for (int i = 0; i < size2; i++) printf("%d ", arr2[i]);
    printf("\n");
    
    printf("Merged: ");
    for (int i = 0; i < size1 + size2; i++) printf("%d ", merged[i]);
    printf("\n");
}

/*
 * =============================================================================
 * MAIN FUNCTION
 * =============================================================================
 */
int main(void) {
    printf("╔════════════════════════════════════════════════════════════╗\n");
    printf("ā•‘      ONE-DIMENSIONAL ARRAYS - DEMONSTRATION PROGRAM        ā•‘\n");
    printf("ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•\n");
    
    example1_declaration_init();
    example2_access();
    example3_memory();
    example4_input();
    example5_sum_average();
    example6_max_min();
    example7_search();
    example8_reverse();
    example9_copy();
    example10_count();
    example11_types();
    example12_shift();
    example13_remove_duplicates();
    example14_merge();
    
    printf("\n╔════════════════════════════════════════════════════════════╗\n");
    printf("ā•‘                    EXAMPLES COMPLETED                       ā•‘\n");
    printf("ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•\n");
    
    return 0;
}

Skill Check

Test this lesson

Answer 4 quick questions to lock in the lesson and feed your adaptive practice queue.

--
Score
0/4
Answered
Not attempted
Status
1

Which module does this lesson belong to?

2

Which section is covered in this lesson content?

3

Which term is most central to this lesson?

4

What is the best way to use this lesson for real learning?

Your answers save locally first, then sync when account storage is available.
Practice queue