Skip to content

Week 8: Functions and Recursion in C


Q1. Display Full Color Using Function

Question:
Write a function that takes a character representing a rainbow color (R O Y G B I V) and displays the full color. If the color is not present, display a message.

Program:

#include <stdio.h>

void vibgyor() {
    char color;
    printf("Enter color character: ");
    scanf(" %c", &color); // Notice space before %c to avoid input issues

    switch(color) {
        case 'v': case 'V': printf("Violet\n"); break;
        case 'i': case 'I': printf("Indigo\n"); break;
        case 'b': case 'B': printf("Blue\n"); break;
        case 'g': case 'G': printf("Green\n"); break;
        case 'y': case 'Y': printf("Yellow\n"); break;
        case 'o': case 'O': printf("Orange\n"); break;
        case 'r': case 'R': printf("Red\n"); break;
        default: printf("Color is not in the rainbow!\n"); break;
    }
}

int main() {
    vibgyor();
    return 0;
}
````

---

## Q2. Print Factors of a Number Using Function

**Question:**
Write a function that takes an integer and prints all factors of that number.

**Program:**

```c
#include <stdio.h>

void factor(int n) {
    int i, j;
    for(i = 1; i <= n; i++) {
        printf("Factors of %d: ", i);
        for(j = 1; j <= i; j++) {
            if(i % j == 0) {
                printf("%d ", j);
            }
        }
        printf("\n");
    }
}

int main() {
    int n;
    printf("Enter a number: ");
    scanf("%d", &n);
    factor(n);
    return 0;
}

Q3. Check Magic Number Using Function

Question: Pass a number to a function. The function checks if it is a magic number and prints an appropriate message.

Example of magic number: 145 = 1! + 4! + 5!

Program:

#include <stdio.h>

int reverse(int num) {
    int rev = 0;
    while(num != 0) {
        rev = rev * 10 + num % 10;
        num /= 10;
    }
    return rev;
}

void checkMagic(int num) {
    int sum = 0, temp = num;
    do {
        sum += temp % 10;
        temp /= 10;
    } while(temp != 0);

    int revSum = reverse(sum);
    if(num == sum * revSum)
        printf("%d is a magic number.\n", num);
    else
        printf("%d is not a magic number.\n", num);
}

int main() {
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);
    checkMagic(num);
    return 0;
}

Q4. Count Number of Digits Using Recursion

Question: Write a function using recursion to count the number of digits in a number.

Example: 123 → 3 digits

Program:

#include <stdio.h>

int countDigits(int n) {
    if(n == 0)
        return 0;
    return 1 + countDigits(n / 10);
}

int main() {
    int number;
    printf("Enter a number: ");
    scanf("%d", &number);

    if(number == 0)
        printf("The number 0 has 1 digit.\n");
    else
        printf("The number %d has %d digits.\n", number, countDigits(number));

    return 0;
}

Q5. Sum of Digits Using Recursion

Question: Write a function to calculate the sum of digits of a number using recursion.

Program:

#include <stdio.h>

int Sum(int n) {
    if(n == 0)
        return 0;
    return (n % 10) + Sum(n / 10);
}

int main() {
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);

    int result = Sum(num);
    printf("Sum of digits: %d\n", result);

    return 0;
}

Comments