实战案例一:计算两个数的和

在C语言中,计算两个数的和是一个非常基础的例子。以下是一个简单的代码示例:

#include <stdio.h>

int main() {
    int num1, num2, sum;

    printf("请输入第一个数:");
    scanf("%d", &num1);
    printf("请输入第二个数:");
    scanf("%d", &num2);

    sum = num1 + num2;
    printf("两个数的和是:%d\n", sum);

    return 0;
}

这个例子展示了如何从用户那里获取输入,并进行基本的算术运算。

实战案例二:判断一个数是否为素数

素数是只能被1和它本身整除的大于1的自然数。以下是一个判断素数的代码示例:

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

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

int main() {
    int num;

    printf("请输入一个数:");
    scanf("%d", &num);

    if (isPrime(num)) {
        printf("%d 是一个素数。\n", num);
    } else {
        printf("%d 不是一个素数。\n", num);
    }

    return 0;
}

这个例子展示了如何使用循环和条件语句来判断一个数是否为素数。

实战案例三:打印斐波那契数列

斐波那契数列是一个著名的数列,每一项都是前两项的和。以下是一个打印斐波那契数列的代码示例:

#include <stdio.h>

void printFibonacci(int n) {
    int first = 0, second = 1, next;
    for (int i = 0; i < n; i++) {
        if (i <= 1) {
            next = i;
        } else {
            next = first + second;
            first = second;
            second = next;
        }
        printf("%d ", next);
    }
    printf("\n");
}

int main() {
    int n;

    printf("请输入数列的长度:");
    scanf("%d", &n);

    printFibonacci(n);

    return 0;
}

这个例子展示了如何使用循环和变量来生成数列。

实战案例四:冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。以下是一个使用冒泡排序的代码示例:

#include <stdio.h>

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);

    bubbleSort(arr, n);

    printf("排序后的数组:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

这个例子展示了如何使用嵌套循环来实现冒泡排序。

实战案例五:计算字符串长度

计算字符串的长度是C语言编程中的一个常见任务。以下是一个计算字符串长度的代码示例:

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

int main() {
    char str[] = "Hello, World!";
    int length = strlen(str);

    printf("字符串的长度是:%d\n", length);

    return 0;
}

这个例子展示了如何使用strlen函数来计算字符串的长度。

实战案例六:使用指针访问数组元素

指针是C语言中的一个强大工具,可以用来访问和操作内存。以下是一个使用指针访问数组元素的代码示例:

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int *ptr = arr;

    for (int i = 0; i < 5; i++) {
        printf("arr[%d] = %d\n", i, *(ptr + i));
    }

    return 0;
}

这个例子展示了如何使用指针来访问数组中的元素。

实战案例七:结构体和指针

结构体是C语言中用于组织相关数据的类型。以下是一个使用结构体和指针的代码示例:

#include <stdio.h>

typedef struct {
    int id;
    char name[50];
} Person;

int main() {
    Person person = {1, "Alice"};
    Person *ptr = &person;

    printf("ID: %d\n", ptr->id);
    printf("Name: %s\n", ptr->name);

    return 0;
}

这个例子展示了如何使用结构体和指针来访问和修改数据。

实战案例八:文件操作

文件操作是C语言编程中的一个重要方面。以下是一个简单的文件操作的代码示例:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("无法打开文件。\n");
        return 1;
    }

    fprintf(file, "Hello, World!\n");

    fclose(file);

    return 0;
}

这个例子展示了如何打开、写入和关闭一个文件。

实战案例九:动态内存分配

动态内存分配是C语言中的一个高级特性,允许程序在运行时分配和释放内存。以下是一个使用动态内存分配的代码示例:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *arr = (int *)malloc(5 * sizeof(int));
    if (arr == NULL) {
        printf("内存分配失败。\n");
        return 1;
    }

    for (int i = 0; i < 5; i++) {
        arr[i] = i;
    }

    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    free(arr);

    return 0;
}

这个例子展示了如何使用mallocfree函数来动态分配和释放内存。

实战案例十:使用递归函数计算阶乘

递归是一种编程技巧,允许函数调用自身。以下是一个使用递归函数计算阶乘的代码示例:

#include <stdio.h>

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

int main() {
    int num;

    printf("请输入一个数:");
    scanf("%d", &num);

    printf("%d 的阶乘是:%d\n", num, factorial(num));

    return 0;
}

这个例子展示了如何使用递归函数来计算阶乘。

通过这些实战案例,我们可以看到C语言编程的多样性和魅力。每个案例都展示了C语言的一些基本特性和用法,可以帮助初学者更好地理解和掌握这门语言。