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():释放内存
