1、计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
解答:
#include <iostream>
using namespace std;
#include<string>
int main() {
string s;
getline(cin,s);
int pos(-1); //初值为end的位置
for(int i=0;i<s.size();i++)
{
if(s[i] == ' ')
{
pos=i; //pos最终赋值为最后一个空格的位置
}
}
cout<<s.size()-pos-1<<endl; //若没有空格,则输出一个字符串的长度
return 0;
}
2、写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)数据范围: 1≤𝑛≤1000 1≤n≤1000 。
解答:
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s); //读取一行的字符串到s中
char c = tolower(getchar()); //输入的最后一个字符小写字母赋值给c
cout << count_if(s.begin(), s.end(), [c](char i) { return towlower(i) == c; }) << endl;
//count_if(s.begin(), s.end(),com);若com为true,则个数加1
}
例子:
bool comp(int num)
{
return num%2;
}
int main()
{
vector <int> V;
for(int i=1;i<=10;i++)
V.push_back(i);
cout<<count_if(V.begin(),V.end(),comp)<<endl;
return 0;
}
3、明明生成了𝑁N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。
数据范围: 1≤𝑛≤1000 1≤n≤1000 ,输入的数字大小满足 1≤𝑣𝑎𝑙≤500 1≤val≤500
输入描述:
第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。
输出描述:
输出多行,表示输入数据处理后的结果
解答:
#include <iostream>
using namespace std;
#include<algorithm>
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
for(int i=0;i<n;i++)
{
if(a[i]!=a[i+1])
{
cout<<a[i]<<endl;
}
}
}
4、输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
解析:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
while (cin >> str)
{
// 补0
int len = str.size();
if (len % 8 != 0)
{
int count = 8 - len % 8;
str.append(count, '0');
}
// 按格式输出
int newLen = str.size();
for (int i = 0; i < newLen; i += 8)
{
cout << str.substr(i, 8) << endl;
}
}
return 0;
}
目录