字符串逆序
题目描述: 随机输入一个长度不超过255的字符串,将其倒置后输出。 输入 只有一行。(测试数据不含空格) 输出 只有一行,输出倒置后的字符串。 样例
输入复制
asdfghjkl123456
输出复制
654321lkjhgfdsa
解题思路:循环数组一半,对称位置交换
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l = strlen(a);
for(int i=l-1;i>=0;i)
{
cout<<a[i];
}
return 0;
}
单词倒排
题目描述: 编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出, 依然以单个空格分隔。 输入 输入为一个字符串(字符串长度至多为100)。 输出 输出为按要求排序后的字符串。
输入复制
Hello Hi How are you
输出复制
you are How Hi Hello
解题思路:双指针向前扫描,遇到空格输出。
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l=strlen(a);
int j=l;
for(int i=l-1;i>=0;i--)
{
if((a[i]!=' '&&a[i-1]==' ')||i==0)
{
for(int k=i;k<j;k++)
{
cout<<a[k];
}
j=i;
}
if(a[i]==' ')
{
cout<<" ";
j=i;
}
}
return 0;
}
首字母大写 描述 编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的首字母大写,依然 以单个空格分隔。 输入 输入为一个字符串(字符串长度至多为100)。 输出 输出为按要求排序后的字符串。样例
输入复制
this is test code.
输出复制
This Is Test Code.
解题思路:1、首字母大写 2、前一个字符如果是空格 也大写
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int n=strlen(a);
for(int i=0;i<n;i++)
{
if(i==0||(a[i]!=' '&&a[i-1]==' '))
{
a[i]=a[i]-32;
}
}
cout<<a;
return 0;
}
统计句子中单词个数
题目描述: 编写程序,读入一行英文(只包含字母和空格,单词间以单个或多个空格分隔),统计句子中单词的个数 输入 输入为一个字符串(字符串长度至多为100)。 输出 输出单词个数。 样例
输入复制
this is a test code.
输出复制
5
解题思路:1、非空格的后一位是空格或者\0,统计数+1
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l=strlen(a);
int cnt=1;
for(int i=0;i<l;i++)
{
if(a[i]!=' '&&a[i-1]==' ')
{
cnt++;
}
}
cout<<cnt;
return 0;
}
最长单词
题目描述: 编写程序,读入一行英文(只包含字母和空格,单词间以单个或多个空格分隔),输出最长的单词 输入 输入为一个字符串(字符串长度至多为100)。 输出 输出最长的单词,如果有多个,输出第一个。 样例
输入复制
this is a test programme code.
输出复制
programme
解题思路:数组连续性问题,记录最长单词的起始位置,及长度,然后输出
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l=strlen(a);
int cnt=0;
int max=-1;
int maxi=-1;
for(int i = 0;i<l;i++)
{
if(a[i]!=' ')
{
cnt++;
}
else
{
cnt = 0;
}
if(cnt>max)
{
max = cnt;
maxi = i;
}
}
maxi = maxi-max+1;
for(int i = maxi;i<max+maxi;i++)
{
cout<<a[i];
}
return 0;
}
词组缩写
题目描述: 定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写。 比如,C语言里常用的EOF就是end of file的缩写。 输入 测试数据占一行,有一个词组(总长度不超过200),每个词组由一个或多个单词组成;每组的单词个数不超过10 个,每个单词有一个或多个大写或小写字母组成; 单词长度不超过10,由一个或多个空格分隔这些单词。 输出 输出规定的缩写 样例
输入复制
end of file
输出复制
EOF
解题思路:找出首字母(第一个字符或者该字符前是空格),大写输出
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l=strlen(a);
int cnt=0;
int max=-1;
int maxi=-1;
for(int i=0;i<l;i++)
{
if((a[i]!=' '&&a[i-1]==' ')||i==0)
{
cout<<a[i]-32;
}
}
return 0;
}
字符串前K位逆序
题目描述: 随机输入一个长度不超过255的字符串,输入一个k,将字符串前k位倒置后输出。 输入 2行, 第一行一串字符。(测试数据不含空格) 第二行k 输出 只有一行,输出倒置后的字符串。 样例
输入复制
abcdefghijk
3
输出复制
cbadefghijk
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l=strlen(a);
int cnt=0;
int k;
cin>>k;
for(int i=0;i<k/2;i++)
{
int j=k-1-i;
int t=a[i];
a[i]=a[j];
a[j]=t;
}
cout<<a;
return 0;
}
单词倒置
题目描述: 输入一个句子(一行),将句子中的每一个单词翻转后输出。 输入 只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。 输出 翻转每一个单词后的字符串,单词之间的空格需与原文一致。
输入复制
asdf asdf
输出复制
fdsa fdsa
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l=strlen(a);
int cnt=0;
for(int i=0;i<l/2;i++)
{
int j=l-1-i;
int t=a[i];
a[i]=a[j];
a[j]=t;
}
cout<<a;
return 0;
}
大小写字母互换
题目描述: 把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母。 输入 输入一行:待互换的字符串。 输出 输出一行:完成互换的字符串(字符串长度小于80)。
输入复制
Hello Hi How are you
输出复制
hELLO hI hOW ARE YOU
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l=strlen(a);
int cnt=0;
for(int i=0;i<l;i++)
{
if(a[i]>=97&&a[i]<=122)
{
a[i] =a[i]-32;
}
else if(a[i]>=65&&a[i]<=90)
{
a[i]=a[i]+32;
}
}
cout<<a;
return 0;
}
最短单词
题目描述: 编写程序,读入一行英文(只包含字母和空格,单词间以单个或多个空格分隔),输出最短的单词 输入 输入为一个字符串(字符串长度至多为100)。 输出 输出最短的单词,如果有多个,输出第一个。 样例
输入复制
this is test programme code.
输出复制
is
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l=strlen(a);
int cnt=0;
int min=9999;
int mini=9999;
for(int i=0;i<l;i++)
{
if(a[i]!=' ')
{
cnt++;
}
else
{
cnt=0;
}
if(cnt<min)
{
min=cnt;
mini=i;
}
}
mini=mini-min;
for(int i=mini;i<min+mini;i++)
{
cout<<a[i];
}
return 0;
}
最长最短单词的差
题目描述: 编写程序,读入一行英文(只包含字母和空格,单词间以单个或多个空格分隔),找出最长单词与最短单词 的长度差 输入 输入为一个字符串(字符串长度至多为100)。 输出 输出最长单词最短单词长度差。 样例
输入复制
this is test programme code.
输出复制
7
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int n = strlen(a);
int cnt=0;
int min=9999;
int mini=9999;
int max=-1;
int maxi=-1;
for(int i=0;i<l;i++)
{
if(a[i]!=' ')
{
cnt++;
if(cnt>max)
{
max=cnt;
maxi=i;
}
}
else
{
if(cnt<min)
{
min=cnt;
mini=i;
}
cnt=0;
}
}
mini=mini-min;
maxi=maxi-max;
cout<<maxi-mini;
return 0;
}
过滤多余的空格
题目描述:编写程序,读入一行英文(只包含字母和空格,单词间以单个或多个空格分隔),删除单词之间多余的空格 输入 输入为一个字符串(字符串长度至多为100)。 输出 输出要求的字符串 样例
输入复制
this is test programme code.
输出复制
this is test programme code.
解题思路:本身是空格,前一个不是空格,才输出这个空格
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l=strlen(a);
int cnt=0;
for(int i=0;i<l;i++)
{
if(a[i]==' ')
{
if(a[i]==' '&&a[i-1]!=' ')
{
cout<<a[i];
}
}
else
{
cout<<a[i];
}
}
return 0;
}
每个单词长度
题目描述 :输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。 注意,如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号 串,都算作单词。 输入 一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。 输出 依次输出对应单词的长度,之间以逗号间隔。
输入复制
Hello Hi How are you
输出复制
5,2,3,3,3
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
int cnt2[300] = {0};
cin.getline(a,300);
int l=strlen(a);
int cnt=0;
int cntl=0;
for(int i=0;i<=l;i++)
{
if(a[i]==' '||a[i+1]=='\0')
{
cnt2[cntl]=cnt;
cntl++;
cnt=0;
}
else
{
cnt++;
}
}
for(int i=0;i<cntl-1;i++)
{
if(cnt2[i]!=0)
{
cout<<cnt2[i]<<",";
}
}
if(cnt2[cntl]!=0)
{
cout<<cnt2[cntl];
}
return 0;
}
所有字母转大写
题目描述: 把一个字符串中所有出现的小写字母都替换成大写字母,。 输入 输入一行:待转换的字符串。 输出 输出一行:完成转换的字符串(字符串长度小于80)。 样例
输入复制
We get Good.
输出复制
WE GET GOOD.
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
int main()
{
char a[300];
cin.getline(a,300);
int l=strlen(a);
for(int i=0;i<l;i++)
{
if(a[i]>=97&&a[i]<=122)
{
a[i]=a[i]-32;
}
}
cout<<a;
return 0;
}