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()来取代。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-06
#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、相加输出本回答被网友采纳
第2个回答  2008-12-11
最后怎么存放呢??
这是相加的,用两个数组就可以了

#define N 10
main()
{
int a[N],b[N];
int i,sum;
for(i=0;i<N;i++)
sum=a[i]+b[i];
……
}
第3个回答  2008-12-11
相加之后怎么存放呢?给详细点要求,我好写啊本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网