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;
}