qq_30671529
qq_30671529
采纳率100%
2015-10-24 00:09 阅读 9.1k

C++中如何将输入的字符串中的数字提取出来做加减法

5

char shu[100];
scanf("%s",shu);
int sum;
sum+=字符串中的数字
这个应该怎样完成?当我提取了字符串中的数字后,但发现字符串中的数字是以ASIii的形式运算的,这该怎么办?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

14条回答 默认 最新

  • 已采纳
    qq_27183003 ysuwood 2015-10-24 15:32
    #include "stdafx.h"
    #include <string.h>
    
    void main()
    {
        char shu[100];
        scanf("%s",shu);
        int sum;
        sum=0;
        int len=strlen(shu);
        for(int i=0; i<len; i++)
        {
            if( shu[i]>='0' && shu[i]<='9')
            sum+=shu[i]-'0';
        }
        printf("sum=%d\n",sum);
        getchar();
        getchar();
    }
    
    
    
    点赞 3 评论 复制链接分享
  • rl529014 好儿郎-志在四方 2015-10-24 00:48

    用if一个一个元素的判断,如果是数字,就把后面的元素向前移动,覆盖掉数字,就ok啦

    点赞 1 评论 复制链接分享
  • liuziangexit liuziangexit 2015-10-27 04:32

    自己百度sscanf和sprintf

    点赞 1 评论 复制链接分享
  • baiyang20140704 baiyang_sky 2015-10-24 00:33

    用函数atoi(shu)转换下就行

    点赞 评论 复制链接分享
  • lixietian123 lixietian123 2015-10-24 01:36

    楼上的只是整数,如果是一百位就gg了
    楼主可以百度一下大数加法,acm入门基础题

    点赞 评论 复制链接分享
  • u013617409 随幻 2015-10-24 02:42

    如果你字符串里全是数字 来个循环 每个字符-48 用整形接收 然后再来个循环 将每个数字按位组合 变成真正的数值 就ok了

    点赞 评论 复制链接分享
  • wangyaninglm shiter 2015-10-24 03:55

    用库函数啊,或者直接用字符串运算完后再转换成数字,atoi()

    点赞 评论 复制链接分享
  • xianfajushi 智者知已应修善业 2015-10-24 08:35
    点赞 评论 复制链接分享
  • Blade_Vioet Blade_Vioet 2015-10-24 10:40

    进行for循环每一位,i=0;从头开始遍历,如果数大于10,则continue

    点赞 评论 复制链接分享
  • qq_27183003 ysuwood 2015-10-24 15:31

    #include "stdafx.h"
    #include

    void main()
    {
    char shu[100];
    scanf("%s",shu);
    int sum;
    sum=0;
    int len=strlen(shu);
    for(int i=0; i {
    if( shu[i]>='0' && shu[i]<='9')
    sum+=shu[i]-'0';
    }
    printf("sum=%d\n",sum);
    getchar();
    getchar();
    }

    点赞 评论 复制链接分享
  • lanyans lanyans 2015-10-24 17:19

    先把非数字字符转换为同一个非数字字符,的到一个新的字符数组,然后用split函数把字符数组分割后的结果保存到一个数组中,遍历数组进行运算。
    如12ad45368zz85第一次变为12..45368..85
    第二次变换为数组12,45368,85.遍历数组运算就得到结果了。
    手机打字太累,无法提供代代码请包容。

    点赞 评论 复制链接分享
  • naxiaorongshixiatian naxiaorongshixiatian 2015-10-25 00:09

    判断好之后直接转成int型就OK的啦

    点赞 评论 复制链接分享
  • sinat_28485921 言午言若 2015-10-25 04:27

    再建立一个字符串数组,根据你的第一个数组里每个字符的下标判断ASCII码的范围是数字字符,就提取出来,最后用转型函数转型,或者自己写一个转型函数

    点赞 评论 复制链接分享
  • sinat_28485921 言午言若 2015-10-25 13:30

    我突然看到你已经提取出数字了,这就好办了,你提取是ASCII码,那你就用提取的数减48不就好了,48是0对应的十进制ASCII码,不就得到你要求的数字,如果是其它进制的ASCII码,你可以转换一下进制啊

    点赞 评论 复制链接分享

相关推荐