对字符串中的整数进行求和,并且显示求和结果。

使用c语言 使用简单的c语言语句 不使用strlen等
(每种字符串长度不超过80个字符)。
从键盘输入的字符串中包含多个正整数。(This12345is a23456bc 98765test.)。(注意: 整数位数不超过10位数。)
完成:对字符串中的整数进行求和,并且显示求和结果。
结果应为:sum=134566

img

使用照片中提及的语句

可以参考:

#include <stdio.h>
#include<string.h>
 
int main(void)
{
    char c1[80];
    int i=0,j=0,sum=0;
    int a[80]={0};
    gets(c1);
    i=j=0;
    while(c1[i]!='\0'){
        if(c1[i]>='0' && c1[i]<='9')
            {a[j] = a[j] * 10 + (c1[i] - '0');}
            
        else
            {sum += a[j];
            if (c1[i - 1] >= '0' && c1[i-1] <= '9')
                j++;}
        //printf("%c",a[i]);
        i++;
    }
    printf("%d",sum);
}



int main()

{

int sum =0;

int flag = 0;

char str[100];

cout << "输入字符串:";

                cin >> str;

int len = strlen(str);

cout << str << endl;

char temp[100];

memset(temp, 0, sizeof(temp)); 

int n=0;

for (int i=0; i<len; i++ )

{

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

{

temp[n] = str[i];

n++;

flag =1;

}

else

{

   if (flag == 1)

   {

temp[n] ='\0';

cout << temp << endl;

sum += atoi(temp);

   }

   memset(temp, 0, sizeof(temp)); 

   flag =0;

   n=0;

}

}

cout << sum << endl;

return 0;

}

业务代码就是截图中的,接收键盘输入的字符串然后遍历就ok了。

代码如下,你提供的代码有些问题,我做了修改:

#include<stdio.h>
void main()
{
    char c1[100];
    int i = 0, j = 0;
    int a[100] = {0};
    int sum=0,cnt=0;
    gets(c1);
    while (c1[i] != '\0') 
    {
        if (c1[i] >= '0' &&  c1[i] <= '9')  //修改a为c1
            a[j] = a[j] * 10 + (c1[i] - '0');
        else
        {
            sum += a[j];
            if (c1[i - 1] >= '0' && c1[i-1] <= '9')
                j++;
        }
        i++;
    }
    sum+=a[j];
    printf("%d",sum);
}