C语言非常道 6.4习题解答
发布人:shili8
发布时间:2025-03-13 19:15
阅读次数:0
**C语言非常道6.4习题解答**
###习题1#### 题目编写一个函数 `int max(int a, int b)`,返回两个整数中较大的那个。
#### 解答
c// max.c#include <stdio.h> /** * @brief 返回两个整数中较大的那个。 * * @param a 第一个整数。 * @param b 第二个整数。 * @return两个整数中较大的那个。 */ int max(int a, int b) { // 如果a大于b,则返回a if (a > b) { return a; } // 否则,返回b else { return b; } } // main.c#include <stdio.h> #include "max.h" int main() { int num1 =10, num2 =20; printf("较大数是:%d ", max(num1, num2)); return0; }
###习题2#### 题目编写一个函数 `void swap(int *a, int *b)`,交换两个整数的值。
#### 解答
c// swap.c#include <stdio.h> /** * @brief 交换两个整数的值。 * * @param a 第一个整数的地址。 * @param b 第二个整数的地址。 */ void swap(int *a, int *b) { // 使用临时变量交换两个整数 int temp = *a; *a = *b; *b = temp; } // main.c#include <stdio.h> #include "swap.h" int main() { int num1 =10, num2 =20; printf("交换前:num1=%d,num2=%d ", num1, num2); swap(&num1, &num2); printf("交换后:num1=%d,num2=%d ", num1, num2); return0; }
###习题3#### 题目编写一个函数 `int sum(int a, int b)`,返回两个整数的和。
#### 解答
c// sum.c#include <stdio.h> /** * @brief 返回两个整数的和。 * * @param a 第一个整数。 * @param b 第二个整数。 * @return两个整数的和。 */ int sum(int a, int b) { // 直接返回a+b return a + b; } // main.c#include <stdio.h> #include "sum.h" int main() { int num1 =10, num2 =20; printf("两个整数的和是:%d ", sum(num1, num2)); return0; }
###习题4#### 题目编写一个函数 `void print(int a)`,打印一个整数。
#### 解答
c// print.c#include <stdio.h> /** * @brief 打印一个整数。 * * @param a 整数。 */ void print(int a) { // 直接使用printf打印a printf("%d ", a); } // main.c#include <stdio.h> #include "print.h" int main() { int num =10; print(num); return0; }
###习题5#### 题目编写一个函数 `void swap2(int *a, int *b)`,交换两个整数的值。
#### 解答
c// swap2.c#include <stdio.h> /** * @brief 交换两个整数的值。 * * @param a 第一个整数的地址。 * @param b 第二个整数的地址。 */ void swap2(int *a, int *b) { // 使用^运算符交换两个整数 *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b; } // main.c#include <stdio.h> #include "swap2.h" int main() { int num1 =10, num2 =20; printf("交换前:num1=%d,num2=%d ", num1, num2); swap2(&num1, &num2); printf("交换后:num1=%d,num2=%d ", num1, num2); return0; }
###习题6#### 题目编写一个函数 `int min(int a, int b)`,返回两个整数中较小的那个。
#### 解答
c// min.c#include <stdio.h> /** * @brief 返回两个整数中较小的那个。 * * @param a 第一个整数。 * @param b 第二个整数。 * @return两个整数中较小的那个。 */ int min(int a, int b) { // 如果a小于b,则返回a if (a < b) { return a; } // 否则,返回b else { return b; } } // main.c#include <stdio.h> #include "min.h" int main() { int num1 =10, num2 =20; printf("较小数是:%d ", min(num1, num2)); return0; }
###习题7#### 题目编写一个函数 `void print_array(int *arr, int len)`,打印一个整数数组。
#### 解答
c// print_array.c#include <stdio.h> /** * @brief 打印一个整数数组。 * * @param arr 整数数组的地址。 * @param len 数组长度。 */ void print_array(int *arr, int len) { // 遍历打印每个元素 for (int i =0; i < len; i++) { printf("%d ", arr[i]); } printf(" "); } // main.c#include <stdio.h> #include "print_array.h" int main() { int arr[] = {1,2,3,4,5}; int len = sizeof(arr) / sizeof(arr[0]); print_array(arr, len); return0; }
###习题8#### 题目编写一个函数 `int max_array(int *arr, int len)`,返回一个整数数组中最大元素。
#### 解答
c// max_array.c#include <stdio.h> /** * @brief 返回一个整数数组中最大元素。 * * @param arr 整数数组的地址。 * @param len 数组长度。 * @return 数组中最大元素。 */ int max_array(int *arr, int len) { // 初始化最大值为负无穷 int max = -2147483648; // 遍历找出最大值 for (int i =0; i < len; i++) { if (arr[i] > max) { max = arr[i]; } } return max; } // main.c#include <stdio.h> #include "max_array.h" int main() { int arr[] = {1,2,3,4,5}; int len = sizeof(arr) / sizeof(arr[0]); printf("数组中最大元素是:%d ", max_array(arr, len)); return0; }
###习题9#### 题目编写一个函数 `int min_array(int *arr, int len)`,返回一个整数数组中最小元素。
#### 解答
c// min_array.c#include <stdio.h> /** * @brief 返回一个整数数组中最小元素。 * * @param arr 整数数组的地址。 * @param len 数组长度。 * @return 数组中最小元素。 */ int min_array(int *arr, int len) { // 初始化最小值为正无穷 int min =2147483647; // 遍历找出最小值 for (int i =0; i < len; i++) { if (arr[i] < min) { min = arr[i]; } } return min; } // main.c#include <stdio.h> #include "min_array.h" int main() { int arr[] = {1,2,3,4,5}; int len = sizeof(arr) / sizeof(arr[0]); printf("数组中最小元素是:%d ", min_array(arr, len)); return0; }
###习题10#### 题目编写一个函数 `void swap3(int *a, int *b)`,交换两个整数的值。
#### 解答
c// swap3.c#include <stdio.h> /** * @brief 交换两个整数的值。 * * @param a 第一个整