1. 打印“Hello, World!”

在C语言编程中,第一个程序通常是打印“Hello, World!”。这是一个简单的入门级示例,用于展示C语言的基本语法。

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

2. 计算两个数的和

这个案例展示了如何使用变量和运算符来计算两个数的和。

#include <stdio.h>

int main() {
    int num1, num2, sum;
    printf("Enter two numbers: ");
    scanf("%d %d", &num1, &num2);
    sum = num1 + num2;
    printf("Sum = %d\n", sum);
    return 0;
}

3. 判断一个数是奇数还是偶数

这个案例展示了如何使用条件语句来判断一个数是奇数还是偶数。

#include <stdio.h>

int main() {
    int num;
    printf("Enter an integer: ");
    scanf("%d", &num);
    if (num % 2 == 0)
        printf("%d is even.\n", num);
    else
        printf("%d is odd.\n", num);
    return 0;
}

4. 计算阶乘

阶乘是一个常用的数学概念,这个案例展示了如何使用循环来计算一个数的阶乘。

#include <stdio.h>

int main() {
    int num, fact = 1;
    printf("Enter a positive integer: ");
    scanf("%d", &num);
    for (int i = 1; i <= num; i++)
        fact *= i;
    printf("Factorial of %d = %d\n", num, fact);
    return 0;
}

5. 检查一个数是否为素数

素数是一个只有1和它本身两个因数的数。这个案例展示了如何检查一个数是否为素数。

#include <stdio.h>
#include <stdbool.h>

int main() {
    int num, i;
    bool isPrime = true;
    printf("Enter an integer: ");
    scanf("%d", &num);
    if (num <= 1)
        isPrime = false;
    else {
        for (i = 2; i <= num / 2; i++) {
            if (num % i == 0) {
                isPrime = false;
                break;
            }
        }
    }
    if (isPrime)
        printf("%d is a prime number.\n", num);
    else
        printf("%d is not a prime number.\n", num);
    return 0;
}

6. 计算最大公约数

最大公约数是两个或多个整数共有的约数中最大的一个。这个案例展示了如何使用辗转相除法来计算两个数的最大公约数。

#include <stdio.h>

int gcd(int a, int b) {
    if (b == 0)
        return a;
    return gcd(b, a % b);
}

int main() {
    int num1, num2, result;
    printf("Enter two positive integers: ");
    scanf("%d %d", &num1, &num2);
    result = gcd(num1, num2);
    printf("GCD of %d and %d is %d\n", num1, num2, result);
    return 0;
}

7. 计算最小公倍数

最小公倍数是两个或多个整数共有的倍数中最小的一个。这个案例展示了如何使用最大公约数来计算最小公倍数。

#include <stdio.h>

int gcd(int a, int b) {
    if (b == 0)
        return a;
    return gcd(b, a % b);
}

int lcm(int a, int b) {
    return (a * b) / gcd(a, b);
}

int main() {
    int num1, num2, result;
    printf("Enter two positive integers: ");
    scanf("%d %d", &num1, &num2);
    result = lcm(num1, num2);
    printf("LCM of %d and %d is %d\n", num1, num2, result);
    return 0;
}

8. 判断闰年

闰年是指能被4整除但不能被100整除的年份,或者能被400整除的年份。这个案例展示了如何判断一个年份是否为闰年。

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

9. 计算斐波那契数列

斐波那契数列是一个著名的数列,其中每个数是前两个数的和。这个案例展示了如何使用递归和循环来计算斐波那契数列。

#include <stdio.h>

int factorial(int n) {
    if (n <= 1)
        return 1;
    return n * factorial(n - 1);
}

int main() {
    int n;
    printf("Enter a positive integer: ");
    scanf("%d", &n);
    printf("Factorial of %d = %d\n", n, factorial(n));
    return 0;
}

10. 计算斐波那契数列的前n项

这个案例展示了如何使用循环来计算斐波那契数列的前n项。

#include <stdio.h>

int main() {
    int n, i;
    printf("Enter the number of terms: ");
    scanf("%d", &n);
    int first = 0, second = 1, next;
    printf("Fibonacci Series: ");
    for (i = 1; i <= n; i++) {
        printf("%d ", first);
        next = first + second;
        first = second;
        second = next;
    }
    return 0;
}

11. 计算素数列表

这个案例展示了如何使用循环和条件语句来找出一个范围内的所有素数。

#include <stdio.h>
#include <stdbool.h>

bool isPrime(int num) {
    if (num <= 1)
        return false;
    for (int i = 2; i <= num / 2; i++) {
        if (num % i == 0)
            return false;
    }
    return true;
}

int main() {
    int n;
    printf("Enter the range: ");
    scanf("%d", &n);
    printf("Prime numbers between 1 and %d are: ", n);
    for (int i = 2; i <= n; i++) {
        if (isPrime(i))
            printf("%d ", i);
    }
    printf("\n");
    return 0;
}

12. 计算字符串长度

这个案例展示了如何使用指针来计算一个字符串的长度。

#include <stdio.h>

int stringLength(const char *str) {
    const char *ptr = str;
    while (*ptr != '\0')
        ptr++;
    return ptr - str;
}

int main() {
    char str[100];
    printf("Enter a string: ");
    scanf("%99s", str);
    printf("Length of the string is: %d\n", stringLength(str));
    return 0;
}

13. 查找字符串中第一个出现的子串

这个案例展示了如何使用指针和循环来查找一个字符串中第一个出现的子串。

#include <stdio.h>

int findSubstring(const char *str, const char *subStr) {
    const char *ptr = str;
    while (*ptr != '\0') {
        if (strncmp(ptr, subStr, strlen(subStr)) == 0)
            return ptr - str;
        ptr++;
    }
    return -1;
}

int main() {
    char str[100], subStr[100];
    printf("Enter a string: ");
    scanf("%99s", str);
    printf("Enter a substring: ");
    scanf("%99s", subStr);
    int index = findSubstring(str, subStr);
    if (index != -1)
        printf("Substring found at index: %d\n", index);
    else
        printf("Substring not found.\n");
    return 0;
}

14. 字符串反转

这个案例展示了如何使用指针和循环来反转一个字符串。

#include <stdio.h>

void reverseString(char *str) {
    char *end = str;
    while (*end != '\0')
        end++;
    end--; // Set end to the last character of the string
    while (str < end) {
        char temp = *str;
        *str = *end;
        *end = temp;
        str++;
        end--;
    }
}

int main() {
    char str[100];
    printf("Enter a string: ");
    scanf("%99s", str);
    reverseString(str);
    printf("Reversed string: %s\n", str);
    return 0;
}

15. 字符串排序

这个案例展示了如何使用冒泡排序算法来对一个字符串进行排序。

#include <stdio.h>
#include <string.h>

void sortString(char *str) {
    int len = strlen(str);
    for (int i = 0; i < len - 1; i++) {
        for (int j = 0; j < len - i - 1; j++) {
            if (str[j] > str[j + 1]) {
                char temp = str[j];
                str[j] = str[j + 1];
                str[j + 1] = temp;
            }
        }
    }
}

int main() {
    char str[100];
    printf("Enter a string: ");
    scanf("%99s", str);
    sortString(str);
    printf("Sorted string: %s\n", str);
    return 0;
}

16. 字符串替换

这个案例展示了如何使用指针和循环来替换一个字符串中的所有指定字符。

#include <stdio.h>

void replaceChar(char *str, char oldChar, char newChar) {
    char *ptr = str;
    while (*ptr != '\0') {
        if (*ptr == oldChar)
            *ptr = newChar;
        ptr++;
    }
}

int main() {
    char str[100];
    printf("Enter a string: ");
    scanf("%99s", str);
    char oldChar, newChar;
    printf("Enter the character to replace: ");
    scanf(" %c", &oldChar); // 注意前面的空格,用于消除前一个输入后的换行符
    printf("Enter the new character: ");
    scanf(" %c", &newChar);
    replaceChar(str, oldChar, newChar);
    printf("String after replacement: %s\n", str);
    return 0;
}

17. 字符串比较

这个案例展示了如何使用字符串比较函数strcmp来比较两个字符串。

#include <stdio.h>
#include <string.h>

int main() {
    char str1[100], str2[100];
    printf("Enter first string: ");
    scanf("%99s", str1);
    printf("Enter second string: ");
    scanf("%99s", str2);
    int result = strcmp(str1, str2);
    if (result == 0)
        printf("Both strings are equal.\n");
    else if (result < 0)
        printf("First string is less than second string.\n");
    else
        printf("First string is greater than second string.\n");
    return 0;
}

18. 字符串连接

这个案例展示了如何使用字符串连接函数strcat来连接两个字符串。

#include <stdio.h>
#include <string.h>

int main() {
    char str1[100], str2[100];
    printf("Enter first string: ");
    scanf("%99s", str1);
    printf("Enter second string: ");
    scanf("%99s", str2);
    strcat(str1, str2);
    printf("Concatenated string: %s\n", str1);
    return 0;
}

19. 字符串复制

这个案例展示了如何使用字符串复制函数strcpy来复制一个字符串。

#include <stdio.h>
#include <string.h>

int main() {
    char str1[100], str2[100];
    printf("Enter a string: ");
    scanf("%99s", str1);
    strcpy(str2, str1);
    printf("Copied string: %s\n", str2);
    return 0;
}

20. 字符串查找

这个案例展示了如何使用字符串查找函数strstr来查找一个字符串中第一个出现的子串。

#include <stdio.h>
#include <string.h>

int main() {
    char str[100], subStr[100];
    printf("Enter a string: ");
    scanf("%99s", str);
    printf("Enter a substring: ");
    scanf("%99s", subStr);
    char *result = strstr(str, subStr);
    if (result != NULL)
        printf("Substring found at index: %ld\n", result - str);
    else
        printf("Substring not found.\n");
    return 0;
}

通过以上20个实用编程案例,你将能够深入了解C语言的基本语法和编程技巧。这些案例涵盖了字符串操作、数学计算、逻辑判断等多个方面,可以帮助你逐步掌握C语言编程。记住,编程是一个实践的过程,只有不断练习和尝试,你才能在编程的道路上越走越远。