1. 打印Hello World

案例背景

作为编程初学者的第一步,编写一个简单的“Hello World”程序是必不可少的。这个程序将帮助你熟悉C语言的基本语法和编译过程。

实战步骤

#include <stdio.h>

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

知识点

  • #include <stdio.h>:包含标准输入输出库
  • printf():输出函数
  • main():程序的入口点

2. 计算两个数的和

案例背景

这个案例将帮助你了解变量、赋值和基本运算。

实战步骤

#include <stdio.h>

int main() {
    int a, b, sum;
    printf("请输入两个数:");
    scanf("%d %d", &a, &b);
    sum = a + b;
    printf("两个数的和为:%d\n", sum);
    return 0;
}

知识点

  • int:整型变量
  • scanf():输入函数
  • %d:格式化输出整型

3. 判断一个数是否为素数

案例背景

这个案例将帮助你了解循环和条件语句。

实战步骤

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

bool is_prime(int num) {
    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 (is_prime(num)) {
        printf("%d 是素数\n", num);
    } else {
        printf("%d 不是素数\n", num);
    }
    return 0;
}

知识点

  • bool:布尔类型
  • for:循环语句
  • %d:格式化输出整型

4. 求阶乘

案例背景

这个案例将帮助你了解递归函数。

实战步骤

#include <stdio.h>

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

int main() {
    int n;
    printf("请输入一个数:");
    scanf("%d", &n);
    printf("%d 的阶乘为:%d\n", n, factorial(n));
    return 0;
}

知识点

  • factorial():递归函数
  • return:返回值

5. 冒泡排序

案例背景

这个案例将帮助你了解数组和排序算法。

实战步骤

#include <stdio.h>

void bubble_sort(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]);
    bubble_sort(arr, n);
    printf("排序后的数组:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

知识点

  • bubble_sort():冒泡排序函数
  • sizeof():计算数组大小

6. 查找字符串中字符出现的次数

案例背景

这个案例将帮助你了解字符串处理。

实战步骤

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

int count_char(const char *str, char c) {
    int count = 0;
    while (*str) {
        if (*str == c) {
            count++;
        }
        str++;
    }
    return count;
}

int main() {
    char str[] = "Hello World!";
    char c = 'o';
    printf("字符 '%c' 在字符串中出现的次数:%d\n", c, count_char(str, c));
    return 0;
}

知识点

  • count_char():查找字符出现次数的函数
  • while:循环语句

7. 文件操作

案例背景

这个案例将帮助你了解文件操作。

实战步骤

#include <stdio.h>

int main() {
    FILE *fp = fopen("example.txt", "w");
    if (fp == NULL) {
        printf("文件打开失败\n");
        return 1;
    }
    fprintf(fp, "Hello World!\n");
    fclose(fp);
    return 0;
}

知识点

  • fopen():打开文件
  • fprintf():写入文件
  • fclose():关闭文件

8. 动态内存分配

案例背景

这个案例将帮助你了解动态内存分配。

实战步骤

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

知识点

  • malloc():动态内存分配
  • free():释放内存

9. 结构体

案例背景

这个案例将帮助你了解结构体。

实战步骤

#include <stdio.h>

typedef struct {
    int id;
    char name[50];
    float salary;
} Employee;

int main() {
    Employee emp = {1, "张三", 5000.0};
    printf("员工ID:%d\n", emp.id);
    printf("员工姓名:%s\n", emp.name);
    printf("员工薪资:%f\n", emp.salary);
    return 0;
}

知识点

  • typedef:定义结构体类型
  • struct:结构体

10. 链表

案例背景

这个案例将帮助你了解链表。

实战步骤

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

typedef struct Node {
    int data;
    struct Node *next;
} Node;

void insert(Node **head, int data) {
    Node *new_node = (Node *)malloc(sizeof(Node));
    new_node->data = data;
    new_node->next = *head;
    *head = new_node;
}

void print_list(Node *head) {
    while (head != NULL) {
        printf("%d ", head->data);
        head = head->next;
    }
    printf("\n");
}

int main() {
    Node *head = NULL;
    insert(&head, 3);
    insert(&head, 1);
    insert(&head, 4);
    insert(&head, 1);
    insert(&head, 5);
    print_list(head);
    return 0;
}

知识点

  • typedef:定义结构体类型
  • struct:结构体
  • malloc():动态内存分配
  • free():释放内存