2 条题解

  • 1
    @ 2024-4-6 11:22:44
    using namespace std;
    
    int main(){
    	
    	int n;
    	cin>>n;
    	
    	string s;
    	getline(cin,s);
    	
    	for(int i=0; i<n; i++){
    		getline(cin,s);
    		stringstream ss;
    		ss.str(s);
    		
    		int a,sum=0;
    		
    		while(ss >> a){
    			sum+=a;
    		}
    		cout<<sum<<endl;
    	}
    	
    	
    	return 0;
    }
    
    • 0
      @ 2025-3-13 11:55:27
      /*
      思路分析
      思路一 (error) :
          1.用一个变量循环接收并累加数字,遇到\0时输出并重置
          ---num 是int类型 不能用 if ( num == '\n' ) 来判断
      学习思路二 :
          1.在思路一基础上进行改进, 
          2.将引入cin.fail() cin.clear() cin.ignore();
           --- 还是有小问题,输出的结果不对
           --- 不过用新的窥视函数cin.peek()函数 完美解决
           --- 遗憾的是测试结果没问题,但测评一个都过不了
      学习思路三:
          1. 关键用法 stringstream 用来分割字符串 空格为间隔
          2. getline()  获取每一行 cin.ignore() 去掉每一行的换行符
          3. ss >> num ==> 从分割出来的ss字符流中提取数字
      
      #include <bits/stdc++.h>
      using namespace std;
      
      int main()
      {
          int n;
          cin >> n;
          cin.ignore();
          int num;
          for ( int i = 1; i <= n; i++ ) {
              int sum = 0;
              for ( int j = 1; j <= 20; j++ ) { 
                  //cin.peek() 窥视函数666
                  if ( cin.peek() == '\n' || cin.peek() == EOF) { 
                      cin.ignore(); //去除\n换行符
                      break;
                  }
                  if ( cin >> num ) { //如果成功输入一个数字
                      sum += num;
                  } else { // 代表输入错误
                      //清除错误
                      cin.clear();
                      //清除当前行剩余内容
                      cin.ignore();
                      break;
                  }
              }
              cout << sum << endl;  
          }
          return 0;
      }
      */
      #include <bits/stdc++.h>
      using namespace std;
      
      int main()
      {
          int n;
          int num;
          cin >> n;
          cin.ignore();
          for ( int i = 0; i < n; i++ ) {
              int sum = 0;
              string str;
              getline(cin , str);
              //string ss = stringstream(str);
              //stringstream 是一个类,而不是一个字符串类型。
              stringstream ss(str);
              while ( ss >> num ) {
                  sum += num;
              }
              cout << sum << endl;
          }
          return 0;
      }
      
      • 1

      信息

      ID
      63
      时间
      1000ms
      内存
      256MiB
      难度
      6
      标签
      (无)
      递交数
      613
      已通过
      166
      上传者