• 字符串中数字求和


    给定一个字符串,计算字符串中数值的个数并求和。其中还包含了负号-,若紧跟负号的是一个数值,则表示这是一个负数,若后面跟着的不是数字,则不表示什么 
    输入:一个字符串 输出:数值个数 数值和 例子 
    输入: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 ",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, 0sizeof(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]='';
                    if(j>0)
                    {
                        sum+=strToint(tep);//atoi(tep);
                        memset(tep, 0sizeof(tep));
                        j=0;
                     }
                  }
            }
            
        }
        if(j>0)
        {
          sum+=strToint(tep);    
        }
        printf("%d ",sum);
        return 0;
        //312df-2ff--9

    } 

  • 相关阅读:
    PlateSpin 完全复制由于LVM没有可用空闲空间导致失败
    Linux LVM学习总结——放大LV容量
    Linux AVG ANTIVIRUS FREE使用介绍
    Linux如何查看JDK的安装路径
    Cannot set a credential for principal 'sa'. (Microsoft SQL Server,错误: 15535)
    记一次Linux服务器上查杀木马经历
    Linux NetHogs监控工具介绍
    Linux make: g++: Command not found
    Linux的NTP配置总结
    Linux内核的文件预读readahead
  • 原文地址:https://www.cnblogs.com/lanshy/p/5307545.html
Copyright © 2020-2023  润新知