#include<vector>
#include<string>
#include <iostream>
using namespace std;
int main()
{
int n = 0;
scanf("%d", &n);
vector<string> v;
for (int i = 0; i < n; ++i)
{
string s;
cin >> s;
v.push_back(s);
}
for(int i = 0; i < v.size(); ++i)
{
if(v[i].length() < 10) continue;
char head = v[i][0];
char tail = v[i][v[i].size() - 1]; // 修正这里
string mid_num = to_string(v[i].length() - 2);
v[i] = head + mid_num + tail;
}
for(int i = 0; i < v.size(); ++i)
cout << v[i] << endl;
return 0;
}
- 包含头文件
<vector> 和 <string>,用于使用C++标准库中的 vector 容器和 string 类型。 - 包含
<iostream> 头文件,用于输入输出操作。 - 使用
using namespace std; 来避免在引用标准库中的名称时需要重复使用 std:: 前缀。 - 定义
main 函数,这是程序的入口点。 - 定义一个整型变量
n,用于存储将要输入的单词数量。 - 使用
scanf("%d", &n); 读取用户输入的整数 n。 - 定义一个
vector<string> 类型的变量 v,用来存储输入的字符串。 - 进入一个
for 循环,循环次数由变量 n 决定。这里有一个错误:循环的迭代变量 i 没有声明,且 ++n 应该是 ++i。 - 在循环体内,使用
cin >> s; 读取一个字符串 s。 - 使用
v.push_back(s); 将读取的字符串添加到 vector v 中。 - 进入第二个
for 循环,遍历 vector v 中的所有字符串。 - 如果当前字符串的长度小于10,使用
continue 跳过当前循环迭代,不对短单词进行处理。 - 如果字符串长度达到或超过10,执行缩写处理:使用 v[i][0] 获取字符串的首字符 head。错误地尝试使用 v[i][v[i].size() - 1] 获取尾字符,这实际上是错误的,应该是 v[i][v[i].size() - 1] 来获取最后一个字符 tail。计算中间字符的数量,即字符串长度减去2(首尾字符),并将其转换为字符串 mid_num。构造新的缩写字符串,格式为 head + mid_num + tail,并用它替换原字符串。
- 第三个
for 循环遍历 vector v,使用 cout 输出每个处理后的字符串。 main 函数返回0,表示程序正常结束。