50 Important Programs
अभ्यास क्यों + compiler कैसे चलता है
सिर्फ़ पढ़कर C नहीं सीख सकते — आप programs लिखकर और चलाकर सीखते हैं। यह page आपको 50 महत्वपूर्ण C programs पूरे solutions के साथ देता है: पूरा code, sample input, और output। हर एक के साथ एक Try it Yourself button भी है जो इसी page पर असली C compiler खोलता है, ताकि आप program चलाएँ, input बदलें, और तुरंत result देखें।
हर program scanf() इस्तेमाल करता है ताकि आप values डालें। हर बार अपने numbers आज़माइए — ऐसे ही logic सच में समझ आता है।
सभी 50 programs एक नज़र में
किसी भी program पर सीधे जाएँ। पहले शुरुआती groups, फिर arrays और strings।
Number Programs
1. Even या Odd जाँचना
#include <stdio.h>
int main() {
int n;
printf("Enter a number: ");
scanf("%d", &n);
if (n % 2 == 0) printf("%d is Even\n", n);
else printf("%d is Odd\n", n);
return 0;
}
% 2: शेष 0 मतलब even, वरना odd।
2. Prime Number जाँचना
#include <stdio.h>
int main() {
int n, i, isPrime = 1;
printf("Enter a number: ");
scanf("%d", &n);
if (n <= 1) isPrime = 0;
for (i = 2; i <= n / 2; i++)
if (n % i == 0) { isPrime = 0; break; }
if (isPrime) printf("%d is Prime\n", n);
else printf("%d is Not Prime\n", n);
return 0;
}
Prime का 1 और खुद के अलावा कोई भाजक नहीं, तो 2 से n/2 तक जाँचें।
3. Number का Factorial
#include <stdio.h>
int main() {
int n, i;
long long fact = 1;
printf("Enter a number: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) fact *= i;
printf("Factorial of %d = %lld\n", n, fact);
return 0;
}
1 से n तक गुणा। long long क्योंकि factorial तेज़ी से बढ़ता है।
4. Fibonacci Series
#include <stdio.h>
int main() {
int n, i, a = 0, b = 1, c;
printf("Enter terms: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("%d ", a);
c = a + b; a = b; b = c;
}
printf("\n");
return 0;
}
हर पद पिछले दो का जोड़, 0 और 1 से।
5. Number Reverse करना
#include <stdio.h>
int main() {
int n, rev = 0;
printf("Enter a number: ");
scanf("%d", &n);
while (n != 0) {
rev = rev * 10 + n % 10;
n = n / 10;
}
printf("Reversed = %d\n", rev);
return 0;
}
% 10 आख़िरी digit; rev*10 + digit reverse बनाता है।
6. Digits का योग
#include <stdio.h>
int main() {
int n, sum = 0;
printf("Enter a number: ");
scanf("%d", &n);
while (n != 0) { sum += n % 10; n = n / 10; }
printf("Sum of digits = %d\n", sum);
return 0;
}
% 10 से हर digit जोड़ता, / 10 से हटाता है।
7. Palindrome Number जाँचना
#include <stdio.h>
int main() {
int n, rev = 0, temp;
printf("Enter a number: ");
scanf("%d", &n);
temp = n;
while (temp != 0) { rev = rev * 10 + temp % 10; temp /= 10; }
if (n == rev) printf("%d is a Palindrome\n", n);
else printf("%d is Not a Palindrome\n", n);
return 0;
}
Number reverse करके मूल से तुलना करता है।
8. Armstrong Number जाँचना
#include <stdio.h>
int main() {
int n, temp, rem, sum = 0;
printf("Enter a number: ");
scanf("%d", &n);
temp = n;
while (temp != 0) { rem = temp % 10; sum += rem*rem*rem; temp /= 10; }
if (n == sum) printf("%d is Armstrong\n", n);
else printf("%d is Not Armstrong\n", n);
return 0;
}
3 अंकों को cubes जोड़ता: 1³+5³+3³ = 153।
9. तीन में सबसे बड़ा
#include <stdio.h>
int main() {
int a, b, c;
printf("Enter three numbers: ");
scanf("%d %d %d", &a, &b, &c);
if (a >= b && a >= c) printf("Largest = %d\n", a);
else if (b >= c) printf("Largest = %d\n", b);
else printf("Largest = %d\n", c);
return 0;
}
हर number की दूसरों से if-else तुलना।
10. पहाड़ा (Table)
#include <stdio.h>
int main() {
int n, i;
printf("Enter a number: ");
scanf("%d", &n);
for (i = 1; i <= 10; i++)
printf("%d x %d = %d\n", n, i, n * i);
return 0;
}
1 से 10 तक loop जो n गुणा i print करता है।
11. Decimal से Binary
#include <stdio.h>
int main() {
int n, bin[32], i = 0;
printf("Enter a number: ");
scanf("%d", &n);
while (n > 0) { bin[i++] = n % 2; n /= 2; }
printf("Binary = ");
for (int j = i - 1; j >= 0; j--) printf("%d", bin[j]);
printf("\n");
return 0;
}
2 से भाग करके शेष store करता, उल्टा print करता है।
12. GCD और LCM
#include <stdio.h>
int main() {
int a, b, x, y, gcd, lcm;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
x = a; y = b;
while (y != 0) { int t = y; y = x % y; x = t; }
gcd = x; lcm = (a * b) / gcd;
printf("GCD = %d, LCM = %d\n", gcd, lcm);
return 0;
}
GCD को Euclidean algorithm, फिर LCM = (a×b)/GCD।
Pattern Programs
13. समकोण Star Triangle
#include <stdio.h>
int main() {
int rows, i, j;
printf("Enter rows: ");
scanf("%d", &rows);
for (i = 1; i <= rows; i++) {
for (j = 1; j <= i; j++) printf("* ");
printf("\n");
}
return 0;
}
Row i, nested loops से i stars print करता है।
14. उल्टा Star Triangle
#include <stdio.h>
int main() {
int rows, i, j;
printf("Enter rows: ");
scanf("%d", &rows);
for (i = rows; i >= 1; i--) {
for (j = 1; j <= i; j++) printf("* ");
printf("\n");
}
return 0;
}
बाहरी loop घटता है, तो हर row में कम stars।
15. Stars का Pyramid
#include <stdio.h>
int main() {
int rows, i, j;
printf("Enter rows: ");
scanf("%d", &rows);
for (i = 1; i <= rows; i++) {
for (j = 1; j <= rows - i; j++) printf(" ");
for (j = 1; j <= 2*i - 1; j++) printf("*");
printf("\n");
}
return 0;
}
spaces फिर (2i-1) stars से हर row center करता है।
16. Number Triangle
#include <stdio.h>
int main() {
int rows, i, j;
printf("Enter rows: ");
scanf("%d", &rows);
for (i = 1; i <= rows; i++) {
for (j = 1; j <= i; j++) printf("%d", j);
printf("\n");
}
return 0;
}
अंदरूनी loop हर row पर 1 से i print करता है।
17. Floyd's Triangle
#include <stdio.h>
int main() {
int rows, i, j, num = 1;
printf("Enter rows: ");
scanf("%d", &rows);
for (i = 1; i <= rows; i++) {
for (j = 1; j <= i; j++) printf("%d ", num++);
printf("\n");
}
return 0;
}
एक counter सारी rows में बढ़ता रहता है।
18. Pascal's Triangle
#include <stdio.h>
int main() {
int rows, i, j, c = 1;
printf("Enter rows: ");
scanf("%d", &rows);
for (i = 0; i < rows; i++) {
c = 1;
for (j = 0; j <= i; j++) {
printf("%d ", c);
c = c * (i - j) / (j + 1);
}
printf("\n");
}
return 0;
}
हर value binomial coefficient formula इस्तेमाल करती है।
19. Diamond Pattern
#include <stdio.h>
int main() {
int n, i, j;
printf("Enter rows: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
for (j = 1; j <= n - i; j++) printf(" ");
for (j = 1; j <= 2*i - 1; j++) printf("*");
printf("\n");
}
for (i = n - 1; i >= 1; i--) {
for (j = 1; j <= n - i; j++) printf(" ");
for (j = 1; j <= 2*i - 1; j++) printf("*");
printf("\n");
}
return 0;
}
ऊपर pyramid और नीचे उल्टा pyramid।
20. खोखला Square Pattern
#include <stdio.h>
int main() {
int n, i, j;
printf("Enter size: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
if (i == 1 || i == n || j == 1 || j == n) printf("*");
else printf(" ");
}
printf("\n");
}
return 0;
}
सिर्फ़ border rows और columns पर star print करता है।
Array और Matrix Programs
21. Array में सबसे बड़ा-छोटा
#include <stdio.h>
int main() {
int n, i, arr[100];
printf("Enter size: ");
scanf("%d", &n);
printf("Enter elements: ");
for (i = 0; i < n; i++) scanf("%d", &arr[i]);
int max = arr[0], min = arr[0];
for (i = 1; i < n; i++) {
if (arr[i] > max) max = arr[i];
if (arr[i] < min) min = arr[i];
}
printf("Largest = %d, Smallest = %d\n", max, min);
return 0;
}
एक ही pass में max और min track करता है।
22. Array का योग और औसत
#include <stdio.h>
int main() {
int n, i, arr[100], sum = 0;
printf("Enter size: ");
scanf("%d", &n);
printf("Enter elements: ");
for (i = 0; i < n; i++) { scanf("%d", &arr[i]); sum += arr[i]; }
printf("Sum = %d, Average = %.2f\n", sum, (float)sum / n);
return 0;
}
सारे elements जोड़कर n से भाग। दशमलव को float cast।
23. Array Reverse करना
#include <stdio.h>
int main() {
int n, i, arr[100];
printf("Enter size: ");
scanf("%d", &n);
printf("Enter elements: ");
for (i = 0; i < n; i++) scanf("%d", &arr[i]);
printf("Reversed: ");
for (i = n - 1; i >= 0; i--) printf("%d ", arr[i]);
printf("\n");
return 0;
}
Array को आख़िरी index से पहले तक print करता है।
24. Array Sort (Bubble Sort)
#include <stdio.h>
int main() {
int n, i, j, arr[100];
printf("Enter size: ");
scanf("%d", &n);
printf("Enter elements: ");
for (i = 0; i < n; i++) scanf("%d", &arr[i]);
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (arr[j] > arr[j+1]) {
int t = arr[j]; arr[j] = arr[j+1]; arr[j+1] = t;
}
printf("Sorted: ");
for (i = 0; i < n; i++) printf("%d ", arr[i]);
printf("\n");
return 0;
}
Bubble sort बगल के elements swap करता है जब तक sort न हो।
25. Linear Search
#include <stdio.h>
int main() {
int n, i, key, arr[100], found = -1;
printf("Enter size: ");
scanf("%d", &n);
printf("Enter elements: ");
for (i = 0; i < n; i++) scanf("%d", &arr[i]);
printf("Enter number to search: ");
scanf("%d", &key);
for (i = 0; i < n; i++)
if (arr[i] == key) { found = i; break; }
if (found != -1) printf("Found at position %d\n", found);
else printf("Not found\n");
return 0;
}
हर element एक-एक जाँचता है जब तक key न मिले।
26. Binary Search
#include <stdio.h>
int main() {
int n, i, key, arr[100];
printf("Enter size: ");
scanf("%d", &n);
printf("Enter sorted elements: ");
for (i = 0; i < n; i++) scanf("%d", &arr[i]);
printf("Enter number to search: ");
scanf("%d", &key);
int low = 0, high = n - 1, pos = -1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == key) { pos = mid; break; }
else if (arr[mid] < key) low = mid + 1;
else high = mid - 1;
}
if (pos != -1) printf("Found at position %d\n", pos);
else printf("Not found\n");
return 0;
}
हर step range आधी करता है (sorted array चाहिए)।
27. Array में दूसरा सबसे बड़ा
#include <stdio.h>
#include <limits.h>
int main() {
int n, i, arr[100];
printf("Enter size: ");
scanf("%d", &n);
printf("Enter elements: ");
for (i = 0; i < n; i++) scanf("%d", &arr[i]);
int first = INT_MIN, second = INT_MIN;
for (i = 0; i < n; i++) {
if (arr[i] > first) { second = first; first = arr[i]; }
else if (arr[i] > second && arr[i] != first) second = arr[i];
}
printf("Second largest = %d\n", second);
return 0;
}
एक pass में largest और second largest track करता है।
28. Array में Even-Odd गिनना
#include <stdio.h>
int main() {
int n, i, arr[100], even = 0, odd = 0;
printf("Enter size: ");
scanf("%d", &n);
printf("Enter elements: ");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
if (arr[i] % 2 == 0) even++;
else odd++;
}
printf("Even = %d, Odd = %d\n", even, odd);
return 0;
}
हर element को even या odd counter बढ़ाता है।
29. दो Arrays Merge करना
#include <stdio.h>
int main() {
int a[50], b[50], c[100], n1, n2, i, k = 0;
printf("Enter size of first: ");
scanf("%d", &n1);
printf("Enter first elements: ");
for (i = 0; i < n1; i++) scanf("%d", &a[i]);
printf("Enter size of second: ");
scanf("%d", &n2);
printf("Enter second elements: ");
for (i = 0; i < n2; i++) scanf("%d", &b[i]);
for (i = 0; i < n1; i++) c[k++] = a[i];
for (i = 0; i < n2; i++) c[k++] = b[i];
printf("Merged: ");
for (i = 0; i < k; i++) printf("%d ", c[i]);
printf("\n");
return 0;
}
पहले array, फिर दूसरा, एक बड़े array में copy करता है।
30. Matrix जोड़
#include <stdio.h>
int main() {
int a[10][10], b[10][10], c[10][10], r, col, i, j;
printf("Enter rows and cols: ");
scanf("%d %d", &r, &col);
printf("Enter first matrix: ");
for (i = 0; i < r; i++) for (j = 0; j < col; j++) scanf("%d", &a[i][j]);
printf("Enter second matrix: ");
for (i = 0; i < r; i++) for (j = 0; j < col; j++) scanf("%d", &b[i][j]);
for (i = 0; i < r; i++) for (j = 0; j < col; j++) c[i][j] = a[i][j] + b[i][j];
printf("Sum:\n");
for (i = 0; i < r; i++) {
for (j = 0; j < col; j++) printf("%d ", c[i][j]);
printf("\n");
}
return 0;
}
मेल खाते cells जोड़ता है: c[i][j] = a[i][j] + b[i][j]।
31. Matrix गुणा
#include <stdio.h>
int main() {
int a[10][10], b[10][10], c[10][10], i, j, k, n;
printf("Enter size n (n x n): ");
scanf("%d", &n);
printf("Enter first matrix: ");
for (i=0;i<n;i++) for (j=0;j<n;j++) scanf("%d", &a[i][j]);
printf("Enter second matrix: ");
for (i=0;i<n;i++) for (j=0;j<n;j++) scanf("%d", &b[i][j]);
for (i=0;i<n;i++) for (j=0;j<n;j++) {
c[i][j] = 0;
for (k=0;k<n;k++) c[i][j] += a[i][k] * b[k][j];
}
printf("Product:\n");
for (i=0;i<n;i++) { for (j=0;j<n;j++) printf("%d ", c[i][j]); printf("\n"); }
return 0;
}
हर cell A की row का B की column से dot product (तीन loops)।
32. Matrix का Transpose
#include <stdio.h>
int main() {
int a[10][10], r, c, i, j;
printf("Enter rows and cols: ");
scanf("%d %d", &r, &c);
printf("Enter matrix: ");
for (i=0;i<r;i++) for (j=0;j<c;j++) scanf("%d", &a[i][j]);
printf("Transpose:\n");
for (i=0;i<c;i++) {
for (j=0;j<r;j++) printf("%d ", a[j][i]);
printf("\n");
}
return 0;
}
a[j][i] print करके rows और columns बदलता है।
String Programs
33. String की Length
#include <stdio.h>
int main() {
char str[100];
int len = 0;
printf("Enter a string: ");
scanf("%s", str);
while (str[len] != '\0') len++;
printf("Length = %d\n", len);
return 0;
}
null terminator '\0' तक characters गिनता है।
34. String Reverse करना
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
int len = strlen(str);
printf("Reversed: ");
for (int i = len - 1; i >= 0; i--) printf("%c", str[i]);
printf("\n");
return 0;
}
characters को आख़िरी index से पहले तक print करता है।
35. String Palindrome जाँचना
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
int len = strlen(str), i, isPal = 1;
for (i = 0; i < len / 2; i++)
if (str[i] != str[len - 1 - i]) { isPal = 0; break; }
if (isPal) printf("Palindrome\n");
else printf("Not a Palindrome\n");
return 0;
}
दोनों सिरों से characters अंदर की ओर तुलना करता है।
36. Vowels-Consonants गिनना
#include <stdio.h>
int main() {
char str[100];
int v = 0, c = 0, i;
printf("Enter a string: ");
scanf("%s", str);
for (i = 0; str[i] != '\0'; i++) {
char ch = str[i];
if (ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u'||
ch=='A'||ch=='E'||ch=='I'||ch=='O'||ch=='U') v++;
else c++;
}
printf("Vowels = %d, Consonants = %d\n", v, c);
return 0;
}
हर character को vowels की list से जाँचता है।
37. Uppercase में बदलना
#include <stdio.h>
int main() {
char str[100];
int i;
printf("Enter a string: ");
scanf("%s", str);
for (i = 0; str[i] != '\0'; i++)
if (str[i] >= 'a' && str[i] <= 'z') str[i] -= 32;
printf("Uppercase: %s\n", str);
return 0;
}
हर lowercase अक्षर के ASCII से 32 घटाता है।
38. वाक्य में शब्द गिनना
#include <stdio.h>
int main() {
char str[200];
int i, words = 1;
printf("Enter a sentence: ");
fgets(str, sizeof(str), stdin);
for (i = 0; str[i] != '\0'; i++)
if (str[i] == ' ') words++;
printf("Words = %d\n", words);
return 0;
}
spaces गिनकर एक जोड़ता है। पूरी line को fgets।
39. Anagram जाँचना
#include <stdio.h>
#include <string.h>
int main() {
char a[100], b[100];
int count[26] = {0}, i;
printf("Enter first string: ");
scanf("%s", a);
printf("Enter second string: ");
scanf("%s", b);
if (strlen(a) != strlen(b)) { printf("Not Anagram\n"); return 0; }
for (i = 0; a[i]; i++) count[a[i]-'a']++;
for (i = 0; b[i]; i++) count[b[i]-'a']--;
int anagram = 1;
for (i = 0; i < 26; i++) if (count[i] != 0) anagram = 0;
printf(anagram ? "Anagram\n" : "Not Anagram\n");
return 0;
}| Step | i ki value | Condition | Kya hua | i ab |
|---|---|---|---|---|
| 1 | 0 | 0 < 26 → true | loop body chalta hai | i → 1 |
| 2 | 1 | 1 < 26 → true | loop body chalta hai | i → 2 |
| 3 | 2 | 2 < 26 → true | loop body chalta hai | i → 3 |
| 4 | 3 | 3 < 26 → true | loop body chalta hai | i → 4 |
| 5 | 4 | 4 < 26 → true | loop body chalta hai | i → 5 |
| 6 | 5 | 5 < 26 → true | loop body chalta hai | i → 6 |
| 7 | 6 | 6 < 26 → true | loop body chalta hai | i → 7 |
| 8 | 7 | 7 < 26 → true | loop body chalta hai | i → 8 |
| 9 | 8 | 8 < 26 → true | loop body chalta hai | i → 9 |
| 10 | 9 | 9 < 26 → true | loop body chalta hai | i → 10 |
| 11 | 10 | 10 < 26 → true | loop body chalta hai | i → 11 |
| 12 | 11 | 11 < 26 → true | loop body chalta hai | i → 12 |
| 13 | 12 | 12 < 26 → true | loop body chalta hai | i → 13 |
| 14 | 13 | 13 < 26 → true | loop body chalta hai | i → 14 |
| 15 | 14 | 14 < 26 → true | loop body chalta hai | i → 15 |
| 16 | 15 | 15 < 26 → true | loop body chalta hai | i → 16 |
| 17 | 16 | 16 < 26 → true | loop body chalta hai | i → 17 |
| 18 | 17 | 17 < 26 → true | loop body chalta hai | i → 18 |
| 19 | 18 | 18 < 26 → true | loop body chalta hai | i → 19 |
| 20 | 19 | 19 < 26 → true | loop body chalta hai | i → 20 |
| 21 | 20 | 20 < 26 → true | loop body chalta hai | i → 21 |
| 22 | 21 | 21 < 26 → true | loop body chalta hai | i → 22 |
| 23 | 22 | 22 < 26 → true | loop body chalta hai | i → 23 |
| 24 | 23 | 23 < 26 → true | loop body chalta hai | i → 24 |
| 25 | 24 | 24 < 26 → true | loop body chalta hai | i → 25 |
| … loop isi tarah chalta rahता hai | ||||
एक शब्द के अक्षर जोड़, दूसरे के घटा; सब zero मतलब anagram।
40. दो Strings जोड़ना
#include <stdio.h>
#include <string.h>
int main() {
char a[100], b[100];
printf("Enter first string: ");
scanf("%s", a);
printf("Enter second string: ");
scanf("%s", b);
strcat(a, b);
printf("Result: %s\n", a);
return 0;
}
strcat दूसरी string को पहली के अंत में जोड़ता है।
अन्य और Projects
41. दो Numbers Swap करना
#include <stdio.h>
int main() {
int a, b, temp;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
temp = a; a = b; b = temp;
printf("After swap: a = %d, b = %d\n", a, b);
return 0;
}
दो values बदलने को एक temporary variable इस्तेमाल करता है।
42. सरल Calculator
#include <stdio.h>
int main() {
double a, b;
char op;
printf("Enter expression (e.g. 5 + 3): ");
scanf("%lf %c %lf", &a, &op, &b);
switch (op) {
case '+': printf("= %.2f\n", a + b); break;
case '-': printf("= %.2f\n", a - b); break;
case '*': printf("= %.2f\n", a * b); break;
case '/':
if (b != 0) printf("= %.2f\n", a / b);
else printf("Cannot divide by zero\n");
break;
default: printf("Invalid operator\n");
}
return 0;
}
दो numbers और operator पढ़कर switch इस्तेमाल करता है।
43. Celsius से Fahrenheit
#include <stdio.h>
int main() {
float c, f;
printf("Enter Celsius: ");
scanf("%f", &c);
f = (c * 9 / 5) + 32;
printf("Fahrenheit = %.2f\n", f);
return 0;
}
Formula F = (C × 9/5) + 32 लगाता है।
44. Leap Year जाँचना
#include <stdio.h>
int main() {
int year;
printf("Enter a year: ");
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
printf("%d is a Leap Year\n", year);
else
printf("%d is Not a Leap Year\n", year);
return 0;
}
4 से भाज्य पर 100 से नहीं, या 400 से भाज्य।
45. पहले N प्राकृत numbers का योग
#include <stdio.h>
int main() {
int n, i, sum = 0;
printf("Enter n: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) sum += i;
printf("Sum = %d\n", sum);
return 0;
}
loop में 1 से n जोड़ता है (या n*(n+1)/2)।
46. Number में digits गिनना
#include <stdio.h>
int main() {
int n, count = 0;
printf("Enter a number: ");
scanf("%d", &n);
if (n == 0) count = 1;
while (n != 0) { count++; n /= 10; }
printf("Digits = %d\n", count);
return 0;
}
हर loop / 10 से एक digit हटाकर loops गिनता है।
47. Number की Power
#include <stdio.h>
int main() {
int base, exp, i;
long long result = 1;
printf("Enter base and exponent: ");
scanf("%d %d", &base, &exp);
for (i = 1; i <= exp; i++) result *= base;
printf("%d^%d = %lld\n", base, exp, result);
return 0;
}
base को exp बार खुद से गुणा करता है।
48. Perfect Number जाँचना
#include <stdio.h>
int main() {
int n, i, sum = 0;
printf("Enter a number: ");
scanf("%d", &n);
for (i = 1; i < n; i++)
if (n % i == 0) sum += i;
if (sum == n) printf("%d is Perfect\n", n);
else printf("%d is Not Perfect\n", n);
return 0;
}
Perfect number अपने भाजकों के जोड़ के बराबर (6 = 1+2+3)।
49. Positive-Negative-Zero गिनना
#include <stdio.h>
int main() {
int n, i, x, pos = 0, neg = 0, zero = 0;
printf("Enter how many numbers: ");
scanf("%d", &n);
printf("Enter numbers: ");
for (i = 0; i < n; i++) {
scanf("%d", &x);
if (x > 0) pos++;
else if (x < 0) neg++;
else zero++;
}
printf("Positive=%d Negative=%d Zero=%d\n", pos, neg, zero);
return 0;
}
हर number को if-else-if से तीन counters में बाँटता है।
इन programs की 7 आम ग़लतियाँ (असली output के साथ)
1. Factorial overflow: int इस्तेमाल करना
int f = 1; long long g = 1;
for (int i = 1; i <= 13; i++) { f *= i; g *= i; }
printf("13! with int = %d\n", f);
printf("13! with long long = %lld\n", g);
int लगभग 2.1 अरब तक रखता है, इसलिए 13! overflow हो जाता है। C में signed overflow undefined behaviour है – चुपचाप ग़लत संख्या मिलती है। इसीलिए program 3 में long long है (20! तक सही)।
2. Condition में == की जगह =
int marks = 35;
if (marks = 40) printf("Passed with %d\n", marks);
Condition 40 assign करती है, जो non-zero है, इसलिए हमेशा true। gcc -Wall से compile करें – compiler चेतावनी देता है।
3. scanf में & भूलना
scanf("%d", n); address की जगह value भेजता है, इसलिए program crash हो सकता है या कचरा पढ़ सकता है। हमेशा scanf("%d", &n); – strings को छोड़कर (char name[50]; scanf("%49s", name);), क्योंकि array का नाम पहले से address है।
4. Loops और arrays में off-by-one
Size 5 वाले array के indexes 0–4 हैं। for (i = 0; i <= n; i++) अंत से एक element आगे पढ़ता है। Arrays के लिए i < n लिखें और सबसे छोटे input (n = 1) से test करें।
5. धीमा prime check
n = 1000003 (a prime)
loop to n/2 : 500000 checks
loop to sqrt(n) : 999 checks
अगर n का कोई divisor √n से बड़ा है तो एक √n से छोटा भी होगा, इसलिए i * i <= n तक जाँचना काफ़ी है – यहाँ 500 गुना तेज़। Program 2 सरलता के लिए n/2 इस्तेमाल करता है; exams और interviews में √n वाला सुधार बताइए।
6. असुरक्षित string input
gets() कभी न लिखें – C11 से हटा दिया गया क्योंकि यह array size पर रुक नहीं सकता। fgets(str, sizeof str, stdin) इस्तेमाल करके आख़िरी newline हटाएँ, या एक शब्द के लिए scanf("%49s", str)।
7. Integer division
int variables के साथ avg = sum / n; दशमलव हिस्सा हटा देता है (7 / 2 = 3)। पहले cast करें: avg = (float) sum / n; – program 22 देखें।
मुख्य programs की Time complexity
| Program | Time complexity | क्यों |
|---|---|---|
| Prime check (n/2 तक) | O(n) | n/2 तक एक loop |
| Prime check (√n तक) | O(√n) | i * i > n पर रुकें |
| Digits का योग / reverse / गिनती | O(d) | d = digits की संख्या |
| GCD (Euclid) | O(log min(a, b)) | शेषफल तेज़ी से घटता है |
| Linear search | O(n) | हर element जाँच सकता है |
| Binary search | O(log n) | हर step में sorted array आधा |
| Bubble sort | O(n²) | array पर nested loops |
| Matrix multiplication (n×n) | O(n³) | तीन nested loops |
| n rows वाला pattern | O(n²) | row loop × column loop |
अच्छे से अभ्यास कैसे करें
- पहले कोशिश, फिर देखिए। Problem पढ़िए, खुद code करने की कोशिश कीजिए, तभी solution देखिए।
- Input बदलिए। हर program को compiler में अपने values से चलाकर edge cases test कीजिए।
- हाथ से trace कीजिए। कठिन वालों (reverse, prime, patterns) को छोटे input के साथ कागज़ पर loop follow कीजिए।
- याद से दोबारा लिखिए। समझने के बाद, page बंद करके program फिर type कीजिए।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
ये C programs page पर कैसे चलाऊँ?
क्या ये C programs user input लेते हैं?
scanf() इस्तेमाल करता है ताकि आप खुद values डालें। जब आप compiler में program चलाते हैं, input box में अपना input type कीजिए और वो program को दिया जाता है, बिल्कुल आपके अपने computer जैसा।