编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数,负整数)

#include<stdio.h>
int my_atof(char *str)  
{  
    int num = 0;  
    int result = 0;  
    int i;  
    if(str[0] == '-')  
    {  
        printf("-");  
        for(i = 1; str[i] != '\0';i++)  
        {  
            num = str[i] + (0 - '0');  
            result = result * 10 + num;    
        }  
    }  
    else  
    {  
        for(i = 0; str[i] != '\0';i++)  
        {  
            num = str[i] + (0 - '0');  
            result = result * 10 + num;    
        }  
    }  
    return result;  
}  
  
int main(void)  
{  
    char *str1 = "12";  
    char *str2 = "-123";  
    printf("%d\n",my_atof(str1));  
    printf("%d\n",my_atof(str2));  
    return 0;  
}  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下的函数实现将数字字符串转换整数的功能: ```c int fun(char* str) { int result = 0; int sign = 1; int i = 0; if (str[0] == '-') { sign = -1; i = 1; } for (; str[i] != '\0'; i++) { result = result * 10 + (str[i] - '0'); } return sign * result; } ``` 该函数首先判断字符串的符号,如果是数则将符号标记为-1,并从第二个字符开始遍历字符串。然后,将每个字符转换数字并将其乘以10的幂次方加到结果中。最后,将结果乘以符号并返回。 <br>### 回答2: 这个问题需要把字符串转换整数,不能使用c语言提供的将字符串转换整数函数。那么,我们可以使用字符数组遍历字符串的每一位数字,计算出它的整数值,并进行相加。在计算整数的值的时候,需要考虑到数的情况。 下面是实现这个函数的步骤: 1. 先判断字符串的第一位是否为号,如果是,则将其标记为数,并从下标1开始遍历数组;如果不是,则从下标0开始遍历数组。 2. 对每一位数字进行转换,我们需要根据字符'0',将它转换对应数字。例如字符'1',它的整数值就是1。 3. 对每一位数字整数值进行累加,并在累加时进行乘以10的操作,将前面的数向前依次推一位。具体方法是首先将结果数字乘以10,然后再将新的整数值加入到结果数字中。 4. 最后,如果字符串数,则将结果数字。 下面是具体的代码实现: ```c int fun(char* str) { int res = 0; int isNegative = 0; //标记是否为数 //判断第一位是否为号 if (str[0] == '-') { isNegative = 1; str++; } //遍历每一位数字并进行累加 while (*str) { char c = *str; if (c < '0' || c > '9') break; int digit = c - '0'; res = res * 10 + digit; str++; } //如果是数,取 if (isNegative) res = -res; return res; } ``` 这是一个简单而有效的实现,它可以将数字字符串转换整数,而不需要使用c语言提供的函数。这个函数可以用于计算机科学中的各种领域,包括算法、编程和计算机工程。 <br>### 回答3: 实现方法: 首先需要明确每个数字字符对应整数值,可以使用ASCII码表来获取,其中0对应的ASCII码值为48,1~9分别对应的ASCII码值为49~57。 1. 判断字符串的第一位是否为号,如果是,则记录符号为,否则为正。 2. 从字符串的第二位开始,依次读取每个字符的ASCII码值,将其减去48得到对应整数值。 3. 将每个整数值乘以10的若干次方(次幂为当前字符的位置减去字符串长度再加上1),再将它们相加,得到最终的整数值。 4. 如果字符串第一位为号,则最终的整数值需要乘以-1。 以下是代码实现: ```c int fun(char* str){ int len = strlen(str); int sign = 1; // 符号 int num = 0; // 整数值 int i; // 判断是否为数 if (str[0] == '-') { sign = -1; i = 1; } else { i = 0; } // 依次读取每个数字字符 for (; i < len; i++) { int digit = str[i] - '0'; // 将字符转换整数值 num = num * 10 + digit * pow(10, len - i - 1); // 计算当前位的整数值 } return sign * num; // 根据符号将整数值返回 } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值