c语言把数字字符串中的数字相加的程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言把数字字符串中的数字相加的程序相关的知识,希望对你有一定的参考价值。

如果有两个数字字符串分别是“1234”和“4567”,求让他们各位各位数相加的程序。(让他们1和4相加,2和5相加……)。不要只限制在这两个数上。谢谢各位了。

代码如下:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main()

   char str[100];

   char buf[10];

   int i;

   int n = 0;

   bool flag = 0;

   int j = 0;

   //gets(str);

   scanf("%s", str);

   for (i = 0; i != strlen(str); ++ i)

   

      if (str[i] >= '0' && str[i] <= '9')

     

         buf[j] = str[i];

         j++;

         flag = 1;

     

      else if (flag)

     

         n += atoi(buf);

         memset(buf,0,10);//清空缓存区

         flag = 0;

         j = 0;

     

   

   printf("%s",buf);

   printf("%d\\n", n);

扩展资料

(C语言)常见字符函数和字符串函数

1、strlen

功能:计算字符串长度,不包含’\\0’

返回值:返回字符串的字符数

说明:strlen() 函数计算的是字符串的实际长度,遇到第一个’\\0’结束;参数指向的字符串必须以 ’ \\0 ‘结束。函数返回值一定是size_t ,是无符号的。如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到’\\0’停止。

sizeof返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen()是函数。

2、strcpy

功 能: 将参数src字符串拷贝至参数dest所指的地址

返回值: 返回参数dest的字符串起始地址

说明:源字符串必须以’\\0’结束。会将源字符串的’\\0’拷贝到目标空间。目标空间必须可变。如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别留意,或者用strncpy()来取代。

参考技术A #include <stdio.h>

main()

char a[20];
char b[20];
char c[20];
int a_len;
int b_len;
int i;

printf ("please input string a: ");
scanf ("%s", a);
printf ("please input string b: ");
scanf ("%s", b);

a_len = strlen (a);
b_len = strlen (b);

for (i = 0; i < a_len; i++)

if (a[i] < '0' || a[i] > '9')

printf ("输入数字串a有错误%s\n");
return;



memset (c, 0, sizeof (c));
sprintf (c, "%d\n", atol (a)+atol(b));
printf ("相加后的数字=%s\n", c);

1、先输入
2、检查合法性
3、相加输出
参考技术B 最后怎么存放呢??
这是相加的,用两个数组就可以了

#define N 10
main()

int a[N],b[N];
int i,sum;
for(i=0;i<N;i++)
sum=a[i]+b[i];
……
参考技术C 相加之后怎么存放呢?给详细点要求,我好写啊本回答被提问者采纳

用c语言或者python将文件中特定字符串后面的数字相加

从点评网爬了一些餐馆的评论
每家餐馆是一个文件,现在想统计评论数,求读取每个文件中 “评论人数:60” 中 的60并相加,求具体程序,60是个例子

代码应该不难吧。既然用爬虫爬下来了,为什么爬取数据的时候没做处理呢。

之前用过Scrapy爬虫框架,挺好用的,你可研究下。

代码:

#!coding=utf-8
import os
import re
import random

# 获取当前目录文件列表
def getNum():
    flist = os.listdir(os.getcwd())
    # 遍历文件
    for f in flist:
        if f != os.path.basename(__file__):
            with open(f, 'r') as fn:
                text = fn.read()
                num = re.findall(r'评论人数:(\\d+)', text)
                print f, num


# 文件写入测试
def test():
    for i in range(10):
        with open('%d.txt' % i, 'w') as f:
            f.write('文件:%d\\n每家餐馆是一个文件,统计评论数,求读取每个文件中 “评论人数:%d” 中 的60并相加,求具体程序,60是个例子' % (i, random.randint(1, 200)))
    print u'文件写入完毕'

if __name__ == '__main__':
    # test()
    getNum()

代码基本符合要求,但健壮性有些差。你自己用的时候修改吧

测试结果:

C:\\Python27\\python.exe D:/11/c.py
文件写入完毕
0.txt ['131']
1.txt ['181']
2.txt ['56']
3.txt ['119']
4.txt ['18']
5.txt ['103']
6.txt ['88']
7.txt ['115']
8.txt ['160']
9.txt ['136']

Process finished with exit code 0

追问

大神,文件路径怎么改?我没学过Python,代码都是别人给的。。

追答# 你把下面这句修改了
flist = os.listdir(os.getcwd())

# 改成下面的
flist = ''
print u'路径必须为全路径:如下示例'
print u'D:/test/'
flist = str(raw_input(u'输入路径,默认为当前目录'))
if list == '':
    flist = os.listdir(os.getcwd())

这样应该可以了

追问

谢谢大神了

参考技术A 1、先把字符串后面的数字截取出来,转换成数字格式即可相加。
2、C语言有atoi、atol、atof等库函数,可分别把ASCII编码的字符串转化为int、long、float类型的数字。
头文件:stdlib.h
函数原型:int atoi(const char* nptr);
(另外两个类似)

举个例子:
char *str="123";
int num=atoi(str);
执行后,num的值被初始化为123

以上是关于c语言把数字字符串中的数字相加的程序的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何将数字变成字符串啊?

用c语言或者python将文件中特定字符串后面的数字相加

C语言字符串读取数字

一个觉得很难的C语言问题。对两个数字字符串相加。

C语言 字符串转数字 急急急

c语言一串字符串中提取数字并相加的问题