1 条题解

  • 0
    @ 2025-8-24 22:16:53

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Pethly_Cat
    东隅已逝,桑榆非晚。

    搬运于2025-08-24 22:16:53,当前版本为作者最后更新于2020-02-11 12:41:21,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    一道基本的字符串练习题。

    我们把整个字符串遍历一遍,看到数字就保存到变量sumsum中。如果前面的位置是数字,而本位不是,那就跳过,再把前面得到的数加起来,sumsum清零。

    另外,再用一个boolbool变量来判断字符串里有没有数字,如果有则不输出。

    代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    string s;
    int n,sum;
    bool flag,f;
    int main()
    {
        while(getline(cin,s)){
        	n=sum=0;
        	flag=false;
        	f=false;
        	for(int i=0;i<s.size();i++){
        		if(s[i]>='0'&&s[i]<='9') f=true;//判断字符串有没有数字
        		if(s[i-1]>='0'&&s[i-1]<='9'&&(s[i]<'0'||s[i]>'9')) continue;//数字在前面且该字符不是数字,跳过字符
        		if(s[i]=='-'&&s[i+1]>='0'&&s[i+1]<='9') flag=true;//判断是否为负数
        		if(s[i]>='0'&&s[i]<='9'){//如果为数字,保存到计数器里
        			n=n*10+(s[i]-'0');
        			if(s[i+1]<'0'||s[i+1]>'9'){
        				if(flag==true) n=-n,flag=false;
        				sum+=n,n=0;
    				}
    			}
    		}
    		if(f==true) cout<<sum<<endl;
    	}
        return 0;
    }
    

    只求二字:

    过和赞

    • 1

    信息

    ID
    3884
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者