用c语言设计一个递归算法计算字符串长度
时间: 2023-05-26 17:01:08 浏览: 361
A:以下是用c语言设计一个递归算法计算字符串长度的代码:
```c
#include <stdio.h>
int string_length(char str[]);
int main() {
char str[100];
printf("Enter a string: ");
fgets(str, 100, stdin); // 从标准输入读取字符串
int len = string_length(str);
printf("The length of the string is %d\n", len);
return 0;
}
// 递归函数计算字符串长度
int string_length(char str[]) {
if (str[0] == '\0') { // 如果字符串为空,返回0
return 0;
} else {
return 1 + string_length(str + 1); // 递归调用计算剩余部分的长度
}
}
```
该代码通过递归函数 `string_length` 计算字符串的长度,如果字符串为空则返回0,否则先算出第一个字符的长度1,再递归调用计算剩余字符串的长度,最后返回这个长度的总和。
相关问题
对于一个采用字符数组存放的字符串str,用c语言设计一个递归算法求其字符个数
递归算法求字符串的字符个数可以按照以下步骤实现:
1. 定义一个递归函数,接收一个字符数组作为参数。
2. 在函数中判断字符数组是否为空,如果为空,则返回0。
3. 如果字符数组不为空,则递归计算其子串的字符个数,即将数组长度减1。
4. 将当前字符数组的字符个数加1,并返回该值。
下面是具体代码实现:
```
#include <stdio.h>
int countChars(char *str)
{
if (*str == '\0') // 如果字符数组为空
return 0;
else
return 1 + countChars(str + 1); // 递归计算子串的字符个数,并加1
}
int main()
{
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
printf("字符个数为:%d\n", countChars(str));
return 0;
}
```
在主函数中,先输入一个字符串,然后调用countChars函数求字符串的字符个数,并将结果输出。运行程序,可以得到如下结果:
```
请输入一个字符串:hello world
字符个数为:11
```
可以看到,该算法能够正确地计算字符串的字符个数。
C语言字符串转数字递归算法
以下是C语言字符串转数字的递归算法:
```c
int strToNum(char *str, int len) {
if (len == 1) {
return str[0] - '0';
} else {
return (10 * strToNum(str, len - 1)) + (str[len - 1] - '0');
}
}
```
这个函数接收两个参数: `str` 是待转换的字符串,`len` 是字符串的长度。该函数递归地将字符串转换为数字,最后返回数字。
当字符串长度为1时,将第一个字符转换成数字并返回。
当字符串长度大于1时,递归调用 `strToNum` 函数来计算字符串的前缀的数字值。然后将该值乘以10,再加上字符串的最后一个字符的数字值,最后返回这个结果。
使用方法:
```c
int main() {
char str[] = "1234";
int len = strlen(str);
int num = strToNum(str, len);
printf("%d\n", num); // 输出 "1234"
return 0;
}
```
阅读全文