为什么我在输入的第一行输入测试用例数后得到一个垃圾值?

Why I am getting a garbage value after entering number of test cases in the first line of the input?

输入:

输入的第一行包含一个整数T,表示 测试用例。

每个测试用例的唯一行包含 space 分隔的部分 名字.

输出

对于每种情况,输出格式正确的名称。

约束条件:

为什么我在第一行看到“à”符号? 我创建了一个函数格式化程序来为测试用例提供一个 for 循环。

如果代码太笨拙,我提前道歉。

#include<bits/stdc++.h>
using namespace std;
int z;
void formatter(int z){
  for(int q = 0;q <= z;q++){
  string s;
  int count=0;
  int k = 0,p = 0,r = 0,t = 0,l = 0,a = 0,x = 0 ;
  getline(cin,s);
  for(int p = 0;p <= s.size();p++){
    if((s[p]==' ')||(p==0)){
       count++;
       }
  }
  if(count == 1){
    while(r<=s.size()){
    s[0] = s[0] -'a' + 'A';
        cout << s[r] ;
    r++;
  }
   cout << "\n";
  }
  if(count == 2){
    for(int l = 0;l<s.size();l++){
          if(l==0){
             s[l] = s[l] -'a' + 'A';
             cout << s[l] << ".";
             a++;
          }
          if(s[l]==' '){
          if(a==1){
            ++l;
            while(l <= s.size()){
            if(x == 0){
            s[l] = s[l] -'a' + 'A';
          }
            cout << s[l] ;
            a++;
            l++;
            x++;
          }
    }
  }
 }
            cout << "\n";
}
  if(count==3){
  for(int i=0;i<s.size();i++){
        if(i==0){
                s[i] = s[i] -'a' + 'A';
        cout << s[i] << ".";
        t++;
        }
    if(s[i]==' '){
    if(t==1){
        ++i;
        s[i] = s[i] -'a' + 'A';
        cout << s[i] << ".";
        t++;
    }
    else
    while(k<=10){
    if(k==1){
    s[i] = s[i] -'a' + 'A';
    }
        cout << s[i];
        i++;
        k++;
    }
    }


  }
}


}
 cout << "\n";
}
int main(){
  cin >> z;
  formatter(z);
 }

几件事

  • main中读取count的cin不消耗endline
  • formatter中的循环是从0到main中读取的数字,包括在内。这是错误的。
  • 考虑将 toupper 转换为大写。
  • 考虑分解处理 1、2 和 3 名称的代码。