字符串中数字求和

给定一个字符串,计算字符串中数值的个数并求和。其中还包含了负号-,若紧跟负号的是一个数值,则表示这是一个负数,若后面跟着的不是数字,则不表示什么

输入:一个字符串 输出:数值个数 数值和 例子

输入:312ab-2-- -9--a

输出:3 301

#include<stdio.h>
#include <stdlib.h>
#include<math.h>
#include<string.h>
int strToint(char* str)
{
    int sign,sum,k,i,len,num;
    sign = 1;
    sum = i = 0;
    len = strlen(str);
    if(str[i]==‘-‘)
    {
        sign = -sign;
        i++;
    }
    if(str[i]==‘+‘)
    {
        i++;
    }
    num = 0;
    for(;i<len;i++)
    {
        //sum += sum*int(pow(10,num))+(str[i]-‘0‘);
        sum = sum*10+(str[i]-‘0‘);
        //num++;
    }
       
    return sum*sign;
}
int main()
{
    int i,len,j;
    char str[1000001],tep[1000001],c;
    double b = 0.9999;
    int sum = 0;
    gets(str);
    len = strlen(str);
    //i = atoi(str);
    //b = atof(str);
    //printf("%lf\n",b);
    //sprintf(str,"%.3lf hello",b);
    //puts(str);
    j =0;
    for(i=0;i<len;i++)
    {
        c = str[i];
        if(str[i]==‘-‘)
        {
            if(j>0)
            {
                sum+=strToint(tep);//atoi(tep);
                memset(tep, 0, sizeof(tep));
            }
            j=0;
            if(str[i+1]>=‘0‘&&str[i+1]<=‘9‘)
            {
                tep[0]=‘-‘;
                j++;    
            }
           
        }
        else
        {
            if(str[i]>=‘0‘&&str[i]<=‘9‘)
            {
                tep[j] = str[i];
                j++;
                //if(i==len-1)
             }
             else
             {
                 tep[j]=‘\0‘;
                if(j>0)
                {
                    sum+=strToint(tep);//atoi(tep);
                    memset(tep, 0, sizeof(tep));
                    j=0;
                 }
              }
        }
        
    }
    if(j>0)
    {
      sum+=strToint(tep);    
    }
    printf("%d\n",sum);
    return 0;
    //312df-2ff--9

}

时间: 2024-10-19 05:08:59

字符串中数字求和的相关文章

字符串中数字子串的求和

字符串中数字子串的求和 题目: 给定一个字符串str,求其中全部数字串所代表的数字之和. 要求: 1.忽略小数点字符,例如"A1.3",其中包含两个数字1和3. 2.如果紧贴数字子串的左侧出现字符'-',当连续出现次数为奇数时, 则数字视为负,连续出现的数量为偶数时,则数字视为正. 例如:"A-1BC--12",其中包含数字为-1和12. 例: str = "A1CD2E33" , 返回36 str = "A-1B--2C--D6E&q

字符串问题----字符串中数字子串的求和

字符串中数字子串的求和 给定一个字符串str,求其中全部数字串所代表的数字之和 1. 忽略小数点," A1.3 " 表示的数字就是包含两个数字 1 和 3 2. 紧贴数字的左边出现 "-",其连续出现的数量如果为奇数,就视为 负,如果为偶数,就视为 正 " A-1BC--23" 表示的是 -1 和 23 [解题思路] 首先定义三个变量, res表示目前的累加和,num表示当前收集到的数字,布尔型变量flag表示将num加到res中,num是正还是

黑马程序员-OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface  类名  (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方

python提取字符串中数字

题目:[这是一个复杂问题的简化]如下是一个字符串列表,提取字符串中第二个数字,并判断是否大于1000,如果是,从列表中删除这一行. 1000\t1002\n .....[省略].... 代码: <pre name="code" class="python">oldStr = "1000\t1002\n" newStr = oldStr #匹配目标数字左侧字符串 t=newStr.index("\t") newStr

统计字符串中数字,字母,空格的个数

这是C语言课后的一道习题,网上可以找到很多相关的代码,都可以很好的基本完成题目要求 但是,我发现很多的代码都无法实现统计字符串中大于10的数字(只局限于统计0-9之间的数字) 此程序可以改进具有十位,百位,千位,甚至更大的数字的统计: #include<stdio.h> int main() { char a[50] ="1 2 3 a b c d @ 15 21 19 88 r 78 100 189 1598 46"; int i,j; int d = 0, c = 0,

Java正则表达式获得字符串中数字

下面通过一个小范例来学习如何获得一个字符串中的数字 import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static void main(String[] args) { String strInput = "[email protected];33"; String regEx = "[^0-9]";//匹配指定范围内的数字 //Pat

[算法]字符串中数字子串的求和

题目: 给定一个字符串str,求其中全部数字串所代表的数字之和. 要求: 1.忽略小数点 2.考虑‘-’,如果有连续奇数个,则为负,如果有连续偶数个,就为正数. 举例: str=“A-1B--2C--D6E” return 7 思路: 变量设置: 1.int res表示结果 2.int num表示当前数字 3.int cur表示     当前字符-‘0’ 4.boolean表示当前当前数字的正负 程序: public static int numSum(String str) { //如果字符串

perl 实现字符串中数字排序

数值类型数组排序使用: sort { $a <=> $b } @array; #升序排列 sort { $b <=> $a } @array; #降序排列 字符串类型数组排序使用: sort { $a cmp $b } @array; #升序排列 sort { $b cmp $a } @array; #降序排列 字符串比较忽略大小写使用: sort { lc($a) cmp lc($b) } @array; 字符串-数字类型数组排序使用: @list = ("ab,33,

取字符串中数字的正则

var paddleft = $(".teacher-title").css("padding-left").replace(/[^0-9]/ig, ""); var num=parseInt(paddleft); 这几天一直忙于设计. 对于代码的书写有点遗忘,在这里书写下.