目录
1. 函数的定义与调用
2. 数组与字符串操作
3. 指针基础
4. 动态内存管理
5. 综合项目实战
1. 函数的定义与调用
1.1 函数的基本结构
函数由返回值类型、函数名、参数列表和函数体组成。例如:
int get_max(int x, int y) {
return (x > y) ? x : y;
}
1.2 函数的声明与调用
若函数定义在main()
之后,需提前声明:
int get_max(int, int); // 声明
int main() {
int a = 10, b = 20;
printf("Max: %d\n", get_max(a, b)); // 调用
return 0;
}
1.3 习题与编译结果
题目:编写一个递归函数factorial
,计算阶乘。
示例代码:
#include <stdio.h>
int factorial(int n) {
return (n == 0) ? 1 : n * factorial(n - 1);
}
int main() {
int num = 5;
printf("%d! = %d\n", num, factorial(num));
return 0;
}
编译结果:
5! = 120
2. 数组与字符串操作
2.1 一维数组
数组用于存储同类型数据,例如:
int numbers[5] = {1, 2, 3, 4, 5};
2.2 字符串处理
字符串本质是字符数组,常用strcpy
、strlen
等库函数:
#include <string.h>
int main() {
char str1[20] = "Hello";
char str2[20] = "World";
strcpy(str1, str2); // 复制字符串
printf("%s\n", str1); // 输出 "World"
return 0;
}
2.3 习题与编译结果
题目:编写函数reverse_string
,反转字符串。
示例代码:
#include <string.h>
void reverse_string(char *str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str[] = "C语言";
reverse_string(str);
printf("%s\n", str); // 输出 "言语C"
return 0;
}
编译结果:
言语C
3. 指针基础
3.1 指针与内存地址
指针存储变量的地址,例如:
int a = 10;
int *ptr = &a; // ptr指向a的地址
3.2 指针作为参数
通过指针修改实参的值:
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main() {
int a = 5, b = 10;
swap(&a, &b);
printf("a=%d, b=%d\n", a, b); // 输出 "a=10, b=5"
return 0;
}
3.3 习题与编译结果
题目:编写函数sum_array
,计算整数数组的和。
示例代码:
#include <stdio.h>
int sum_array(int *arr, int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
printf("Sum: %d\n", sum_array(arr, 5)); // 输出 "Sum: 15"
return 0;
}
编译结果:
Sum: 15
4. 动态内存管理
4.1 malloc
与free
动态分配和释放内存:
int *arr = (int *)malloc(5 * sizeof(int)); // 分配5个整数的空间
free(arr); // 释放内存
4.2 习题与编译结果
题目:编写动态数组,输入5个数字后输出。
示例代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
int n = 5;
int *arr = (int *)malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("输入的数字:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
编译结果(输入:1 2 3 4 5):
输入的数字:1 2 3 4 5
5. 综合项目实战
5.1 计算器程序
实现加减乘除功能:
#include <stdio.h>
void add(int a, int b) { printf("%d\n", a + b); }
void subtract(int a, int b) { printf("%d\n", a - b); }
// ... 其他运算函数
int main() {
int choice, a, b;
while (1) {
printf("选择操作:1-加 2-减 3-退出\n");
scanf("%d", &choice);
if (choice == 3) break;
scanf("%d %d", &a, &b);
switch (choice) {
case 1: add(a, b); break;
case 2: subtract(a, b); break;
// ... 其他case
}
}
return 0;
}
5.2 学生成绩管理系统
实现录入、查询、排序功能(需结合结构体与数组)。
学习建议:
- 每日完成1-2个习题,通过调试工具(如GDB)观察变量变化。
- 参考网页中的经典题目强化练习。
- 尝试将函数模块化,提升代码复用性。