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 第一个整

