根据代码int StrToInt(char *s) { char ss[32]; if(strlen(s)==1) return s[0]-'0';输入一串数字字符串,将其转换成整数输出。运用递归算法实现C语言代码
时间: 2024-05-06 13:15:04 浏览: 11
以下是使用递归算法实现将数字字符串转换成整数的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int StrToInt(char *s);
int main()
{
char s[32];
printf("请输入一个数字字符串:");
scanf("%s", s);
int num = StrToInt(s);
printf("转换后的整数为:%d\n", num);
return 0;
}
int StrToInt(char *s)
{
int len = strlen(s);
if (len == 1)
{
return s[0] - '0';
}
int num = StrToInt(s + 1); // 递归调用
return (s[0] - '0') * (int)pow(10, len - 1) + num;
}
```
代码逻辑如下:
1. 如果字符串长度为1,直接返回第一个字符减去字符0的值。
2. 如果字符串长度大于1,递归调用函数StrToInt(s + 1),将字符串的第2个字符开始的子串转换成整数。
3. 将字符串的第1个字符减去字符0的值,乘以10的(len-1)次方,再加上上一步得到的整数。返回这个结果。
相关问题
sum = sum * 10 + s[i] - '0';
这段代码的作用是将字符串 s 中第 i 个字符转换为数字,并且将其加到 sum 的末尾。
具体解释如下:
- s[i] 表示字符串 s 中的第 i 个字符。
- '0' 是字符常量,它的 ASCII 码值为 48,表示数字 0。
- s[i] - '0' 将字符转换为数字,例如字符 '5' 转换为数字 5。
- sum * 10 将 sum 的值乘以 10,相当于将 sum 左移一位。
- sum * 10 + s[i] - '0' 将新的数字加到 sum 的末尾。例如,如果 sum 的值为 123,s[i] 的值为 5,则执行后 sum 的值为 1235。
因此,这段代码的作用是将一个字符串转换为数字,具体实现可见下面的示例代码:
```c++
int strToInt(string s) {
int sum = 0;
for (int i = 0; i < s.size(); i++) {
sum = sum * 10 + s[i] - '0';
}
return sum;
}
```
写一个函数把字符串返回为 int , 如果输入不是数字字符串,返回0
好的,这是一个比较简单的问题。以下是一个示例函数实现(使用 C 语言):
```c
int strToInt(char* str) {
int len = strlen(str);
int num = 0;
int sign = 1;
int i;
if (str[0] == '-') {
// 处理负数标记
sign = -1;
i = 1;
}
else {
i = 0;
}
for (; i < len; ++i) {
if (str[i] >= '0' && str[i] <= '9') {
// 处理数字字符
num = num * 10 + (str[i] - '0');
}
else {
// 非数字字符
return 0;
}
}
return num * sign;
}
```
这个函数的思路是先处理负数标记,然后逐个处理输入字符串的字符。如果遇到非数字字符,则直接返回 0。否则,将数字字符转换为相应的数字,并将其加入到总数中。最后返回计算出的整数乘以标记。