Here's how to solve each of the 20 C programming problems step-by-step. I’ll give brief logic for each and sample function headers. Let me know which full programs you want:
int sum_of_divisors(int n) {
int sum = 0;
for (int i = 1; i <= n; i++)
if (n % i == 0) sum += i;
return sum;
}
void mergeSort(int arr[], int left, int right);
void merge(int arr[], int left, int mid, int right);
Use recursive divide-and-conquer + merge logic.
int count_digits(char str[]) {
int count = 0;
for (int i = 0; str[i] != '\0'; i++)
if (isdigit(str[i])) count++;
return count;
}
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
void insertionSort(int arr[], int n);
Loop from i=1 to n, insert arr[i] in the sorted left part.
Reverse the full string, then reverse each word:
void reverseWords(char* str);
void count_vowels_consonants(char str[], int *vowels, int *consonants);
Check with isalpha()
and vowel comparison.
int isArmstrong(int n) {
int sum = 0, temp = n;
while (temp) {
int d = temp % 10;
sum += d * d * d;
temp /= 10;
}
return sum == n;
}
int sum_of_squares(int arr[], int n) {
int sum = 0;
for (int i = 0; i < n; i++)
sum += arr[i] * arr[i];
return sum;
}
If extra space is not allowed, use in-place merge like:
void mergeSortedArrays(int a[], int b[], int m, int n);
int isPerfectSquare(int num) {
int root = sqrt(num);
return root * root == num;
}
void rotateMatrix(int matrix[N][N]);
Transpose + reverse rows or columns.
int power(int x, int n) {
if (n == 0) return 1;
return x * power(x, n - 1);
}
Use slow and fast pointers:
struct Node* findMiddle(struct Node* head);
Sort array, then shift unique values:
int removeDuplicates(int arr[], int n);
Use 2D dynamic programming:
int LCS(char* X, char* Y, int m, int n);
void printPascalsTriangle(int n);
Use combinatorics: nCr = n! / (r!(n-r)!)
.
void sumOddEven(int arr[], int n, int *oddSum, int *evenSum);
void reverseInGroups(int arr[], int n, int k);
Use a stack to match (
and )
:
int isValidParentheses(char* str);
Would you like me to provide full C code for all, or start with a few specific ones (e.g. 1–5)?