Fading Coder

One Final Commit for the Last Sprint

Home > Tech > Content

Practical C Function Implementations

Tech Apr 18 10

Basic Arithmetic Evaluator

Construct a function that evaluates a simple mathematical expression given two integer operands and a character operator.

#include <stdio.h>

int compute(int val1, int val2, char op);

int main() {
    int x, y;
    char sym;
    printf("Enter expression (e.g., 5+3): ");
    scanf("%d%c%d", &x, &sym, &y);
    int outcome = compute(x, y, sym);
    printf("Result: %d\n", outcome);
    return 0;
}

int compute(int val1, int val2, char op) {
    if (op == '+') return val1 + val2;
    if (op == '-') return val1 - val2;
    if (op == '*') return val1 * val2;
    if (op == '/') return val1 / val2;
    if (op == '%') return val1 % val2;
    return 0;
}

Prime Number Verification

Design a routine that checks whether an input integer is a prime number, returning 1 for true and 0 for false.

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

int checkPrime(int num);

int main() {
    int num;
    printf("Enter an integer: ");
    scanf("%d", &num);
    printf("%d\n", checkPrime(num));
    return 0;
}

int checkPrime(int num) {
    if (num <= 1) return 0;
    int divisor = 2;
    while (divisor * divisor <= num) {
        if (num % divisor == 0) {
            return 0;
        }
        divisor++;
    }
    return 1;
}

Array Element Accumulator

Write a function that takes an integer array and its size, returning the sum of all its elements.

#include <stdio.h>

int accumulate(int arr[], int size);

int main() {
    int dataset[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int total = accumulate(dataset, 10);
    printf("Total: %d\n", total);
    return 0;
}

int accumulate(int arr[], int size) {
    int total = 0;
    for (int i = 0; i < size; i++) {
        total += arr[i];
    }
    return total;
}

Optimized Bubble Sort

Implement the bubble sort algorithm with an early-exit optimization if no swaps occur during a pass.

#include <stdio.h>

void sortArray(int data[], int len);

int main() {
    int data[] = {20, 40, 10, 5, 50, 30};
    sortArray(data, 6);
    for (int i = 0; i < 6; i++) {
        printf("%d ", data[i]);
    }
    return 0;
}

void sortArray(int data[], int len) {
    for (int i = 0; i < len - 1; i++) {
        int swapped = 0;
        for (int j = 0; j < len - i - 1; j++) {
            if (data[j] > data[j + 1]) {
                int temp = data[j];
                data[j] = data[j + 1];
                data[j + 1] = temp;
                swapped = 1;
            }
        }
        if (!swapped) break;
    }
}

Character Frequency Analyzer

Create a function that categorizes characters in a string into uppercace letters, lowercase letters, digits, spaces, and other characters, tallying each category.

#include <stdio.h>

void analyzeChars(const char text[], int counts[]);

int main() {
    char text[100];
    int counts[5] = {0}; // upper, lower, digit, space, other
    printf("Enter a string: ");
    fgets(text, sizeof(text), stdin);
    analyzeChars(text, counts);
    printf("Uppercase: %d\n", counts[0]);
    printf("Lowercase: %d\n", counts[1]);
    printf("Digits: %d\n", counts[2]);
    printf("Spaces: %d\n", counts[3]);
    printf("Others: %d\n", counts[4]);
    return 0;
}

void analyzeChars(const char text[], int counts[]) {
    int i = 0;
    while (text[i] != '\0') {
        if (text[i] >= 'A' && text[i] <= 'Z') counts[0]++;
        else if (text[i] >= 'a' && text[i] <= 'z') counts[1]++;
        else if (text[i] >= '0' && text[i] <= '9') counts[2]++;
        else if (text[i] == ' ' || text[i] == '\t') counts[3]++;
        else if (text[i] != '\n') counts[4]++;
        i++;
    }
}

String Length Determination

Implement a function equivalent to strlen that counts the number of characters in a string before the null terminater.

#include <stdio.h>

int getLength(const char str[]);

int main() {
    char str[100];
    printf("Enter a string: ");
    fgets(str, sizeof(str), stdin);
    int len = getLength(str);
    if (len > 0 && str[len - 1] == '\n') str[len - 1] = '\0';
    printf("Length: %d\n", getLength(str));
    return 0;
}

int getLength(const char str[]) {
    int len = 0;
    while (str[len] != '\0') {
        len++;
    }
    return len;
}

Uppercase to Lowercase Conversion

Write a function that modifies a string in-place, converting all uppercase alphabetic characters to their lowercase equivalents.

#include <stdio.h>

void toLowerCase(char str[]);

int main() {
    char str[100];
    printf("Enter a string: ");
    fgets(str, sizeof(str), stdin);
    toLowerCase(str);
    printf("Lowercased: %s\n", str);
    return 0;
}

void toLowerCase(char str[]) {
    for (int i = 0; str[i] != '\0'; i++) {
        if (str[i] >= 'A' && str[i] <= 'Z') {
            str[i] += 32;
        }
    }
}

String Copy Operation

Develop a function that duplicates the contents of a source character array into a destination array.

#include <stdio.h>

void copyString(char destination[], const char source[]);

int main() {
    char source[100], destination[100];
    printf("Enter a string: ");
    fgets(source, sizeof(source), stdin);
    copyString(destination, source);
    printf("Copied: %s\n", destination);
    return 0;
}

void copyString(char destination[], const char source[]) {
    int i = 0;
    while (source[i] != '\0') {
        destination[i] = source[i];
        i++;
    }
    destination[i] = '\0';
}

Lexicographical String Comaprison

Construct a function to compare two strings lexicographically, returning 1 if the first is greater, -1 if smaller, and 0 if they are identical.

#include <stdio.h>

int compareStrings(const char s1[], const char s2[]);

int main() {
    char s1[100], s2[100];
    printf("Enter first string: ");
    fgets(s1, sizeof(s1), stdin);
    printf("Enter second string: ");
    fgets(s2, sizeof(s2), stdin);
    printf("Comparison result: %d\n", compareStrings(s1, s2));
    return 0;
}

int compareStrings(const char s1[], const char s2[]) {
    int i = 0;
    while (s1[i] != '\0' || s2[i] != '\0') {
        if (s1[i] > s2[i]) return 1;
        if (s1[i] < s2[i]) return -1;
        i++;
    }
    return 0;
}

Prime Factorization

Write a function that decomposes an integer into its prime factors and prints the result as a multiplication sequence, e.g., 12=2*2*3.

#include <stdio.h>

void factorize(int value);

int main() {
    int value;
    printf("Enter an integer: ");
    scanf("%d", &value);
    factorize(value);
    return 0;
}

void factorize(int value) {
    int original = value;
    printf("%d=", original);
    int is_first = 1;
    int divisor = 2;
    while (value > 1) {
        if (value % divisor == 0) {
            if (!is_first) printf("*");
            printf("%d", divisor);
            value /= divisor;
            is_first = 0;
        } else {
            divisor++;
        }
    }
    printf("\n");
}

Integer Digit Counter

Create a function that calculates the number of digits in an integer, properly handling negative values and zero.

#include <stdio.h>

int countDigits(int number);

int main() {
    int number;
    printf("Enter an integer: ");
    scanf("%d", &number);
    printf("Digit count: %d\n", countDigits(number));
    return 0;
}

int countDigits(int number) {
    if (number == 0) return 1;
    if (number < 0) number = -number;
    int digits = 0;
    while (number > 0) {
        number /= 10;
        digits++;
    }
    return digits;
}

Related Articles

Understanding Strong and Weak References in Java

Strong References Strong reference are the most prevalent type of object referencing in Java. When an object has a strong reference pointing to it, the garbage collector will not reclaim its memory. F...

Implement Image Upload Functionality for Django Integrated TinyMCE Editor

Django’s Admin panel is highly user-friendly, and pairing it with TinyMCE, an effective rich text editor, simplifies content management significantly. Combining the two is particular useful for bloggi...

SBUS Signal Analysis and Communication Implementation Using STM32 with Fus Remote Controller

Overview In a recent project, I utilized the SBUS protocol with the Fus remote controller to control a vehicle's basic operations, including movement, lights, and mode switching. This article is aimed...

Leave a Comment

Anonymous

◎Feel free to join the discussion and share your thoughts.