| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 760 人关注过本帖, 1 人收藏
标题:一道小题目交流--计算字符串中数字之和
只看楼主 加入收藏
longhai123
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-11-20
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:14 
一道小题目交流--计算字符串中数字之和
背景:学生时代没有好好学习,导致现在在培训机构学习想走C开发道路
    今日考试,最后一道编程题当场没有做出来,感觉想多了。
    后来自己实现了,但是感觉不是很牛X
题目:计算字符串中所有数字之和
    譬如:12fs234hgi23 结果为12+234+23=269
目的:有没有高手有更好的方法,一起交流学习。
(注:第一次发帖)

代码:

#include <stdio.h>
#include <string.h>
int strnumsum(char *str){
    int count = 0;
    int sum = 0;
    int i = 0;
    int size = strlen(str);
    int arr[size];
    for(i=0; i<size; i++){
        arr[i] = 0;
    }
    while(*str != '\0'){
        if(*str <= '9' && *str >= '0'){      
            arr[count] = arr[count] * 10 + (*str - '0');           
        }else{
            count++;
        }
        str++;
    }
    for(i=0; i<size; i++){
        sum += arr[i];
    }
    return sum;
}
int main(void){
    int sum = 0;
    char *str = "12fs234hgi23";
    sum = strnumsum(str);
    printf("%d\n", sum);
}

结果:269 算是对吧
搜索更多相关主题的帖子: include 培训机构 字符串 count 开发 
2013-11-20 19:00
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:3 
提供给楼主另一种思路
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
    int sum = 0, i = 0 , flg =0;
    char *str = "12fs234hgi23";
    char num[20] = {0};
   
    while(*str != '\0')
    {
        if(*str >= '0' && *str <= '9')
        {
            num[i] = *str;
            i++;
            flg = 1;
        }
        else if(flg == 1)
        {
            sum += atoi(num);
            flg = 0;            
            i=0;
            memset(num,0,sizeof(num[0])*20);
        }
        str++;
    }
    sum += atoi(num);
    printf("%d\n", sum);
}

埋头做牛,抬头做人,低头做狗
2013-11-21 12:49
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
含小数不

DO IT YOURSELF !
2013-11-21 14:45
ljx小子
Rank: 8Rank: 8
来 自:星星
等 级:蝙蝠侠
威 望:2
帖 子:222
专家分:916
注 册:2013-10-7
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <string.h>
#define N 100

void main()
{
char s[N];
int i,n,j,a[N]={0},num=0;
printf("请输入字符串");
scanf("%s",s);
n=strlen(s);
for(i=0;i<n;i++)

 if('0'<=s[i]&&s[i]<='9')
     a[i]+=s[i]-'0';

 else 
     continue;
for(i=0;i<n;i++)

 for(j=1;j<n;j++)
   if(a[i+j]>0)
      a[i]*=10;
   else break;

 for(i=0;i<n;i++)
     num+=a[i];

 printf("%d",num);
}

。。。。。。。。。。。
2013-11-21 16:37
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:3 
楼主在哪个培训机构?
我想了解一下. 看在我下面的代码的份上, 告诉我吧. 谢谢.
程序代码:
/* 我觉得这个计算不要用到数组, 所以写了下面的代码,一起交流. */

#include<stdio.h>
#include <ctype.h>

int main()
{
    char *str = {"12ew456we789"};   // 串可以输入,实现不难, 我就直接初始化了.    
    int sum;                        //
    int x;                          // 各数的值
    sum = 0;
    

    while (*str) {
        x = 0;
        while (isdigit(*str)) {               // 判断是否为数字.
            x = x*10 + (*str - '0');          // 字符型转化成整型
            str++;
        }
        sum += x;                             // 求和
        str++;
    }

    printf("%d \n", sum);
    return 0;
    }

要处理小数可能要多点代码, 但实现也不难, 楼主可以自己试试.

2013-11-21 17:11
longhai123
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-11-20
收藏
得分:0 
回复 4楼 ljx小子
我在西安北邮3g,我觉得您的C应该学的不多吧?
个人觉得培训机构都差不多,学的东西肯定不会特别多,还得看自己好好钻研了。
2013-11-22 17:43
longhai123
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-11-20
收藏
得分:0 
回复 4楼 ljx小子
多谢!
刚刚回复错了人了,包涵
2013-11-22 17:47
longhai123
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-11-20
收藏
得分:0 
回复 5楼 pangshch
我在西安北邮3g,我觉得您的C应该学的不错吧?
个人觉得培训机构都差不多,学的东西肯定不会特别多,还得看自己好好钻研了。
2013-11-22 17:47
longhai123
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-11-20
收藏
得分:0 
回复 3楼 wp231957
要不帅哥来个有浮点的?
我好偷偷师

2013-11-22 17:49
longhai123
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-11-20
收藏
得分:0 
回复 2楼 pink_duo
多谢!
待我好好研究一下。。。
2013-11-22 17:50
快速回复:一道小题目交流--计算字符串中数字之和
数据加载中...
 
   



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

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