问题描述
输入一串字符串,只包含英文字母和数字,并保证字符串中连续数字不超过5个,输出一个数,表示字符串中符合题意的整型数据的和。
解体思路
1.找出所有数字,存入一个数组。
2.数组各项求和。
程序代码
#include<iostream>\\定义头文件。
#include<string.h>\\定义头文件。
using namespace std;
int sum[1000],tmp,sz,i,j;\\定义一些用于存入从字符串中找出的数字的变量。
char b[1000];\\定于输入的字符串。
int main()
{
cin>>b;\\输入字符串
for(i=0;i<strlen(b);i++)\\循环,用于判断是否为数字
{
if(b[i]>='0'&&b[i]<='9')\\当字符串的第i项的ASCII码值在0到9之间。(说明此项为数字)
{
sz=0;\\把临时计数变量清零。(变量用于判断其数字在哪一数位为上,代表几个10的几次方,例:as123w ,“1”在百位上,代表一个十的2次方。)
sz=b[i]-48;\\字符串的第i项对应的数值存入sz。
for(j=1;j<5;j++)\\循环,用于判断下一位是否还为数字。
{
if(b[i+j]>='0'&&b[i+j]<='9')\\如果是数字。
{
sz=sz*10;\\此项便提升一个数位。
}
else\\若不是数字
{
sum[i]=sz;\\将sz的值存入sum的第i项(其项是啥无所谓,只是用来求和。)
break;\\跳出循环。
}
}
}
}
tmp=0;\\把一个标记变量清零
for(i=0;i<strlen(b);i++)\\循环,用于求和。
{
tmp=tmp+sum[i];\\把tmp加上sum数组的每一位。
}
cout<<tmp<<endl;\\输出结果。
return 0;\\结束主函数的运行,返回值为0。
}