इस अध्याय में, हम कुछ सामान्य और महत्वपूर्ण C प्रोग्राम्स के बारे में जानेंगे। ये प्रोग्राम्स न केवल प्रोग्रामिंग की मूलभूत अवधारणाओं को समझने में मदद करते हैं, बल्कि प्रोग्रामिंग कौशल को भी निखारते हैं। हम प्रत्येक प्रोग्राम के लिए संक्षिप्त विवरण, कोड, कोड की व्याख्या हिंदी में, इनपुट और आउटपुट उदाहरण, और संबंधित फंक्शन्स का सिंटैक्स प्रदान करेंगे।
1. फ़िबोनैचि सीरीज (Fibonacci Series)
विवरण: फ़िबोनैचि सीरीज एक श्रृंखला है जिसमें प्रत्येक संख्या पिछले दो संख्याओं के योग के बराबर होती है।
कोड:
#include <stdio.h> void printFibonacci(int n) { int t1 = 0, t2 = 1, nextTerm; for (int i = 1; i <= n; ++i) { printf("%d, ", t1); nextTerm = t1 + t2; t1 = t2; t2 = nextTerm; } } int main() { int n; printf("Enter the number of terms: "); scanf("%d", &n); printf("Fibonacci Series: "); printFibonacci(n); return 0; }
कोड और लॉजिक की व्याख्या (Explanation of Code and Logic):
printFibonacci
फंक्शन n टर्म्स की फ़िबोनैचि सीरीज प्रिंट करता है।t1
औरt2
पहले दो टर्म्स को रखते हैं।for
लूप के माध्यम से, हम अगले टर्म की गणना करते हैं और प्रिंट करते हैं।main
फंक्शन उपयोगकर्ता से टर्म्स की संख्या इनपुट के रूप में लेता है औरprintFibonacci
फंक्शन को कॉल करता है।
इनपुट:
Enter the number of terms: 5
आउटपुट:
Fibonacci Series: 0, 1, 1, 2, 3,
2. अभाज्य संख्या (Prime Number)
विवरण: एक अभाज्य संख्या वह होती है जो केवल 1 और स्वयं से विभाजित होती है।
कोड:
#include <stdio.h> #include <stdbool.h> bool isPrime(int n) { if (n <= 1) { return false; } for (int i = 2; i <= n / 2; i++) { if (n % i == 0) { return false; } } return true; } int main() { int n; printf("Enter a number: "); scanf("%d", &n); if (isPrime(n)) { printf("%d is a prime number.\n", n); } else { printf("%d is not a prime number.\n", n); } return 0; }
कोड व्याख्या:
isPrime
फंक्शन n की अभाज्यता की जांच करता है।- यदि संख्या 1 या उससे कम है, तो वह अभाज्य नहीं है।
- लूप के माध्यम से, हम जांचते हैं कि क्या n किसी भी संख्या से विभाजित होता है।
इनपुट:
Enter a number: 17
आउटपुट:
17 is a prime number.
3. पैलिंड्रोम संख्या (Palindrome Number)
विवरण: एक पैलिंड्रोम संख्या वह होती है जो उलटने पर भी समान रहती है।
कोड:
#include <stdio.h> #include <stdbool.h> bool isPalindrome(int n) { int reversed = 0, original = n, remainder; while (n != 0) { remainder = n % 10; reversed = reversed * 10 + remainder; n /= 10; } return original == reversed; } int main() { int n; printf("Enter a number: "); scanf("%d", &n); if (isPalindrome(n)) { printf("%d is a palindrome number.\n", n); } else { printf("%d is not a palindrome number.\n", n); } return 0; }
कोड व्याख्या:
isPalindrome
फंक्शन n को उलटता है और जांचता है कि वह मूल संख्या के बराबर है या नहीं।- यदि हाँ, तो संख्या पैलिंड्रोम है।
इनपुट:
Enter a number: 121
आउटपुट:
121 is a palindrome number.
4. दो स्ट्रिंग्स की तुलना (Compare Two Strings)
विवरण: दो स्ट्रिंग्स की तुलना यह देखने के लिए की जाती है कि वे समान हैं या नहीं।
कोड:
#include <stdio.h> #include <string.h> int main() { char str1[100], str2[100]; printf("Enter first string: "); gets(str1); printf("Enter second string: "); gets(str2); if (strcmp(str1, str2) == 0) { printf("Strings are equal.\n"); } else { printf("Strings are not equal.\n"); } return 0; }
सिंटैक्स:
int strcmp(const char *str1, const char *str2);
पैरामीटर्स:
str1
: पहली स्ट्रिंग का पॉइंटर।str2
: दूसरी स्ट्रिंग का पॉइंटर।
रिटर्न टाइप:
- यह 0 लौटाता है यदि दोनों स्ट्रिंग्स समान हैं। अन्यथा, यह एक नकारात्मक या सकारात्मक संख्या लौटाता है जो स्ट्रिंग्स के बीच तुलना के परिणाम को दर्शाता है।
कोड व्याख्या:
strcmp
फंक्शन का उपयोग करके दो स्ट्रिंग्स की तुलना की जाती है।- यदि तुलना का परिणाम 0 है, तो स्ट्रिंग्स समान हैं, अन्यथा वे भिन्न हैं।
इनपुट:
Enter first string: hello Enter second string: hello
आउटपुट:
Strings are equal.
5. स्ट्रिंग्स संयोजन (Strings Concatenation)
विवरण: दो स्ट्रिंग्स को जोड़कर एक नई स्ट्रिंग बनाना।
कोड:
#include <stdio.h> #include <string.h> int main() { char str1[100], str2[100]; printf("Enter first string: "); gets(str1); printf("Enter second string: "); gets(str2); strcat(str1, str2); printf("Concatenated string: %s\n", str1); return 0; }
कोड व्याख्या:
strcat
फंक्शन का उपयोग करके दो स्ट्रिंग्स को जोड़कर एक नई स्ट्रिंग बनाई जाती है।
सिंटैक्स:
char *strcat(char *dest, const char *src);
पैरामीटर्स:
dest
: गंतव्य स्ट्रिंग का पॉइंटर।src
: स्रोत स्ट्रिंग का पॉइंटर।
रिटर्न टाइप:
- यह गंतव्य स्ट्रिंग का पॉइंटर लौटाता है जिसमें स्रोत स्ट्रिंग जुड़ी होती है।
इनपुट:
Enter first string: hello Enter second string: world
आउटपुट:
Concatenated string: helloworld
6. फैक्टोरियल (Factorial)
विवरण: एक संख्या का फैक्टोरियल सभी प्राकृतिक संख्याओं का गुणा होता है जो उससे कम या उसके बराबर होती हैं।
कोड:
#include <stdio.h> int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } } int main() { int n; printf("Enter a number: "); scanf("%d", &n); printf("Factorial of %d is %d\n", n, factorial(n)); return 0; }
कोड व्याख्या:
factorial
फंक्शन रेकर्सन का उपयोग करके एक संख्या का फैक्टोरियल निकालता है।- यदि संख्या 0 है, तो फैक्टोरियल 1 होता है।
इनपुट:
Enter a number: 5
आउटपुट:
Factorial of 5 is 120
7. आर्मस्ट्रांग संख्या (Armstrong Number)
विवरण: एक संख्या आर्मस्ट्रांग होती है यदि प्रत्येक अंक के घातांक का योग संख्या के बराबर होता है।
कोड:
#include <stdio.h> #include <math.h> int main() { int n, originalNum, remainder, result = 0, nDigits = 0; printf("Enter a number: "); scanf("%d", &n); originalNum = n; // संख्या में अंकों की संख्या गिनना while (originalNum != 0) { originalNum /= 10; nDigits++; } originalNum = n; // आर्मस्ट्रांग संख्या की जांच while (originalNum != 0) { remainder = originalNum % 10; result += pow(remainder, nDigits); originalNum /= 10; } if (result == n) { printf("%d is an Armstrong number.\n", n); } else { printf("%d is not an Armstrong number.\n", n); } return 0; }
कोड व्याख्या:
- संख्या के प्रत्येक अंक का nDigits की घातांक का योग निकाला जाता है और मूल संख्या से तुलना की जाती है।
इनपुट:
Enter a number: 153
आउटपुट:
153 is an Armstrong number.
8. अंकों का योग (Sum of Digits)
विवरण: एक संख्या के सभी अंकों का योग निकालना।
कोड:
#include <stdio.h> int sumOfDigits(int n) { int sum = 0; while (n != 0) { sum += n % 10; n /= 10; } return sum; } int main() { int n; printf("Enter a number: "); scanf("%d", &n); printf("Sum of digits of %d is %d\n", n, sumOfDigits(n)); return 0; }
कोड व्याख्या:
sumOfDigits
फंक्शन का उपयोग करके एक संख्या के सभी अंकों का योग निकाला जाता है।- लूप का उपयोग करके प्रत्येक अंक को जोड़ा जाता है।
इनपुट:
Enter a number: 1234
आउटपुट:
Sum of digits of 1234 is 10
9. अंकों की संख्या गिनना (Count the Number of Digits)
विवरण: एक संख्या में अंकों की कुल संख्या गिनना।
कोड:
#include <stdio.h> int countDigits(int n) { int count = 0; while (n != 0) { n /= 10; count++; } return count; } int main() { int n; printf("Enter a number: "); scanf("%d", &n); printf("Number of digits in %d is %d\n", n, countDigits(n)); return 0; }
कोड व्याख्या:
countDigits
फंक्शन लूप का उपयोग करके एक संख्या में अंकों की कुल संख्या गिनता है।
इनपुट:
Enter a number: 1234
आउटपुट:
Number of digits in 1234 is 4
10. संख्या उलटना (Reverse Number)
विवरण: एक संख्या को उलटने का प्रोग्राम।
कोड:
#include <stdio.h> int reverseNumber(int n) { int reversed = 0; while (n != 0) { reversed = reversed * 10 + n % 10; n /= 10; } return reversed; } int main() { int n; printf("Enter a number: "); scanf("%d", &n); printf("Reversed number is %d\n", reverseNumber(n)); return 0; }
कोड व्याख्या:
reverseNumber
फंक्शन लूप का उपयोग करके एक संख्या को उलटता है।
इनपुट:
Enter a number: 1234
आउटपुट:
Reversed number is 4321
11. संख्या अदला-बदली (Swap Numbers)
विवरण: दो संख्याओं को अदला-बदली करने का प्रोग्राम।
कोड:
#include <stdio.h> void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int x, y; printf("Enter first number: "); scanf("%d", &x); printf("Enter second number: "); scanf("%d", &y); swap(&x, &y); printf("After swapping, first number is %d and second number is %d\n", x, y); return 0; }
कोड की लाइन-दर-लाइन व्याख्या (Line-by-Line Explanation of the Code)
- फ़ंक्शन घोषणा (Function Declaration)
void
swap(int *a, int *b)void
इंगित करता है कि यह फ़ंक्शन कोई वैल्यू रिटर्न नहीं करेगा।swap
फ़ंक्शन का नाम है।int *a
औरint *b
दो इंटीजर पॉइंटर्स हैं जिन्हें इस फ़ंक्शन में पैरामीटर के रूप में पास किया जाएगा। ये पॉइंटर्स उन संख्याओं के एड्रेस को रखते हैं जिन्हें हमें अदला-बदली करनी है।
- अस्थायी वेरिएबल की घोषणा और असाइनमेंट (Temporary Variable Declaration and Assignment)
int temp = *a;
temp
एक अस्थायी इंटीजर वेरिएबल है।*a
द्वाराa
पॉइंटर के माध्यम से वैल्यू को एक्सेस किया जाता है और इसेtemp
में स्टोर किया जाता है।- इस लाइन के बाद,
temp
मेंa
पॉइंटर की वैल्यू होती है।
- पहली वैल्यू को दूसरी वैल्यू से बदलना (Swapping the First Value with the Second Value)
*a = *b;
*a
द्वाराa
पॉइंटर के माध्यम से वैल्यू को एक्सेस किया जाता है और इसे*b
की वैल्यू से बदल दिया जाता है।- इस लाइन के बाद,
a
पॉइंटर की वैल्यूb
पॉइंटर की वैल्यू के बराबर हो जाती है।
- दूसरी वैल्यू को अस्थायी वैल्यू से बदलना (Swapping the Second Value with the Temporary Value)
*b = temp;
*b
द्वाराb
पॉइंटर के माध्यम से वैल्यू को एक्सेस किया जाता है और इसेtemp
की वैल्यू से बदल दिया जाता है।- इस लाइन के बाद,
b
पॉइंटर की वैल्यूtemp
की वैल्यू के बराबर हो जाती है, जो कि मूलa
पॉइंटर की वैल्यू थी।
इनपुट:
Enter first number: 5 Enter second number: 10
आउटपुट:
After swapping, first number is 10 and second number is 5