数字字符串转换成数值

留有一个作业,题如下:
完成字符串“12345”转成整数12345
那这个代码,我们怎么实现?
既然学习了字符数组,这个问题就是很简单的问题了。我们可以看一下思路:
首先,它是字符串就需要char型的数组来存储。
其次,既然我们把字符串存到了字符数组中,那么我们就可以一个一个进行数组元素取出操作。
最后,进行对每个元素进行操作。

按照这样的思路,代码如下:

#include <stdio.h>
#include <math.h>

/* 完成数字字符串的转换,要求转换成对应的整数 */

void main()
{
    char str[] = "12345"; 
    int  a[5] = {0};
    int  b = 0;
    int  c = 1;
    int  i = 0;
    int  j = 0;

    for(i=0; i < 5; i++)
    {
        a[i] = str[i]-'0';  //  转化成数字
    }
    for(i=0,j=4; i < 5; i++,j--)
    {
        c = (int)pow(10,j);   // 10的i次幂
        b = a[i]*c + b;       // 转换成整数形式
    }
    printf("b=%d\n",b);

}

运行结果为:
12345
注意:代码中pow()函数在头文件math.h中,所以需要保护该头文件。
这样就完成了字符串的转换,当然转换的方法有很多种。现在我们再用一种方法来完成,该字符串的转换。
方法二
我们可以直接调用stdlib.h中的库函数完成字符串的转换。

#include <stdio.h>
#include <stdlib.h>

/* 完成数字字符串的转换,要求转换成对应的整数 */

/*
atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数。
函数原型:int atoi(const char *nptr);
参数   nptr为字符串指针
说明:
参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,
之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。
包含在头文件stdlib.h中
*/

void main()
{
    char str[] = "12345"; 
    int  a[5] = {0};
    int  b = 0;
    int  c = 1;
    int  i = 0;
    int  j = 0;

    b = atoi(str);   // 之间调用atoi标准库函数完成此动作
    printf("b=%d\n",b);

}

方法三:
仅用自己学过的方法完成。
我们可能认为方法一中pow()函数和方法二中atoi()函数没有学过,那么我们只用学过的知识同样能够完成这样的程序编码。
代码如下:

#include <stdio.h>
#include <string.h>

/* 完成数字字符串的转换,要求转换成对应的整数 */

void main()
{
    char str[] = "12345"; 
    int  a[5] = {0};
    int  result = 0;
    int  b = 0;
    int  i = 0;
    int  j = 1;
    int  len = 0;

    len = strlen(str);
    printf("len= %d\n",len);

    for(i=len-1; i>=0; i--)
    {
        b = str[i]-'0'; //  转化成数字
        a[i] = b*j;     //  转化成对应的位数,如4是十位上了,则转成40
        j*=10;
    }
    for(i=0; i < 5; i++)
    {
        result = result + a[i];   // 求和操作
    }
    printf("result=%d\n",result);

}

这样同样能够得出所要求的结果。

供大家参考一下!

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小材大用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值