| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5107 人关注过本帖
标题:将一个字符串转换为整型数值,待转换的字符串包括正、负号和数字
只看楼主 加入收藏
拜见大佬
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2016-11-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
将一个字符串转换为整型数值,待转换的字符串包括正、负号和数字
#include<stdio.h>
#include<string.h>
#include<math.h>
int myatoi(char *string);
int main ()
{
    char string[1024];
    gets(string);
    printf("%d",myatoi(string));
    return 0;
}
int myatoi(char *string)
{
    int n,i,m=0;
    n=strlen(string);
    if(string[0]=='+')
    {
       for(i=1;i<n;i++)
          m=m+string[i]*pow(10,n-i-1);   
    }
    else
      for(i=1;i<n;i++)
          m=m+string[i]*pow(10,n-i-1);
       m=0-m;
    return m;
}
为什么总是输出一些奇怪的数呢?求大神解答
搜索更多相关主题的帖子: include return 字符串 
2016-12-02 19:21
marlow
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:125
专家分:419
注 册:2016-7-18
收藏
得分:5 
回复 楼主 拜见大佬
可以调用stdlib.h库中的atoi()函数哦

一切都在学习、尝试、摸索中
2016-12-02 20:10
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
用string[i]去做乘法运算,编译器会把该字符的ascii值用于运算
2016-12-02 20:33
拜见大佬
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2016-11-24
收藏
得分:0 
回复 3楼 yangfrancis
    a=string[i];
          m=m+a*pow(10,n-i-1);   
这样改了还是不行,输出很奇怪
2016-12-02 20:47
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:5 
函数部分代码修改如下,针对修改部分有注释:
int myatoi(char *string)
{
    int n,i,m=0;
    n=strlen(string);
    if(string[0]=='+')
    {
       for(i=1;i<n;i++)
          m=m+(string[i]-'0')*(int)pow(10.0,n-i-1);    //string[i]-'0'确保由asc码转换为对应的数值
    }
    else
    {//加一对花括号,否则else语句只执行到for语句,而不管有无+号都会输出负数
      for(i=1;i<n;i++)
          m=m+(string[i]-'0')*(int)pow(10.0,n-i-1);  ////string[i]-'0'确保由asc码转换为对应的数值
       m=0-m;
    }
    return m;
}
2016-12-02 21:06
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:5 
#include<stdio.h>
int myatoi(char *string);
int main ()
{
    char string[1024];
    gets(string);
    printf("%d\n",myatoi(string));
    return 0;
}

int myatoi(char *string)
{
    char *p = string+1;
    int m = 0;
    for (; *p; p++)
        m = m*10 + (*p-'0');
    if (*string == '-')
        m = 0-m;
    return m;
}

[此贴子已经被作者于2016-12-3 06:51编辑过]

2016-12-03 06:49
快速回复:将一个字符串转换为整型数值,待转换的字符串包括正、负号和数字
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043103 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved