数据结构与算法分析--c语言描述(原书第二版)练习答案(第五章)
时间: 2024-01-25 12:00:56 浏览: 282
数据结构与算法分析-C语言描述(原书第二版)是一本经典的计算机科学教材,它涵盖了数据结构和算法的基本概念和实现方法。下面是第五章的练习题答案:
1. 编写一个递归算法,计算一个整数n的阶乘。
```c
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
int main() {
int n = 5;
printf("Factorial of %d is %d\n", n, factorial(n));
return 0;
}
```
2. 编写一个递归算法,输出一个整数n的二进制表示。
```c
#include <stdio.h>
void decimalToBinary(int n) {
if (n > 0) {
decimalToBinary(n / 2);
printf("%d", n % 2);
}
}
int main() {
int n = 10;
printf("Decimal %d is binary ", n);
decimalToBinary(n);
printf("\n");
return 0;
}
```
3. 编写一个非递归算法,求一个数组的最大值。
```c
#include <stdio.h>
int findMax(int arr[], int size) {
int max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
int main() {
int arr[] = {2, 8, 4, 1, 6};
int size = sizeof(arr) / sizeof(arr[0]);
printf("The maximum value in the array is %d\n", findMax(arr, size));
return 0;
}
```
4. 编写一个非递归算法,将一个字符串进行反转。
```c
#include <stdio.h>
#include <string.h>
void reverseString(char str[]) {
int len = strlen(str);
for (int i = 0, j = len - 1; i < len / 2; i++, j--) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
int main() {
char str[] = "Hello World";
printf("Original string: %s\n", str);
reverseString(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
以上是第五章的练习题答案,希望对您有帮助。
阅读全文