题目描述
写一函数,将两个字符串连接
输入
两行字符串
输出
链接后的字符串
样例输入
copy123 abc
样例输出
123abc
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a,b;
cin>>a>>b;
a+=b;
cout<<a;
}
题目描述
写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。
输入
一行字符
输出
逆序后的字符串
样例输入
copy123456abcdef
样例输出
fedcba654321
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
cin >> a;
reverse(a.begin(), a.end());
cout << a;
}
题目描述
编写程序,判断输入的一个字符串是否为回文。若是则输出“Yes”,否则输出“No”。所谓回文是指順读和倒读都是一样的字符串。
样例输入
copyabcddcba
样例输出
Yes
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
cin >> a;
b=a;
reverse(a.begin(), a.end());
if (a == b)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
题目描述
将字符串t插入到字符串s中,在位置pos后插入。不得使用字符串操作函数,输出组合成的字符串。
输入
输入两个字符串(t和s)和要插入的位置(pos)
输出
输出组合后的字符串
样例输入
copyqwe jij 3
样例输出
jijqwe
#include<iostream>
#include<string>
using namespace std;
int main()
{
int pos;
string t,s;
cin>>t>>s;
cin>>pos;
s.insert(s.begin()+pos,t.begin(),t.end());
cout<<s;
}
题目描述
一个字符串,存放在一个数组中,编程序将其改造之后输出:
(1)将S的所有第偶数个字符按照从大到小的次序放在S的后半部分;
(2)将S的所有第奇数个字符按照从小到大的次序放在S的前半部分;
输入
输入一个字符串
输出
输出改造后的字符串
样例输入
copyABCDEFGHIJKL
样例输出
ACEGIKLJHFDB
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<iostream>
using namespace std;
char a[101],b[101],c[101];
bool cmp(char a,char b)
{
return a>b;
}
int main()
{
gets(a);
int len=strlen(a);
int k=0;
for(int i=0;i<len;i+=2)
c[k++]=a[i];
c[k]='\0';///奇数
int j=0;
for(int i=1;i<len;i+=2)
b[j++]=a[i];
b[j]='\0';///偶数
sort(c,c+k);
printf("%s",c);
sort(b,b+j,cmp);
printf("%s",b);
}
题目描述
从一个字符串中的第p个位置起删除指定长度的字符串,输出最终结果,若输入不合法,则输出 Illegal input
输入
输入一个字符串s、位置p、长度n
输出
删除子串后的字符串
样例输入
copyadfasdf12 6 5
样例输出
Illegal input
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
int p,n;
cin>>a>>p>>n;
if(p+n>a.length())
cout<<"Illegal input";
else
{
a.erase(p-1,n);
cout<<a;
}
}
题目描述
编写一个C程序实现将字符串中的所有"you"替换成"we"
输入
输入包含多行数据
每行数据是一个字符串,长度不超过1000
数据以EOF结束输出
对于输入的每一行,输出替换后的字符串
样例输入
copyyou are what you do
样例输出
we are what we do
#include<stdio.h>
char a[1001];
int main()
{
gets(a);
for(int i=0;a[i]!='\0';i++)
{
if(a[i]=='y'&&a[i+1]=='o'&&a[i+2]=='u')
{
a[i]='w';
a[i+1]='e';
a[i+2]='p';
}
}
for(int i=0;a[i]!='\0';i++)
{
if(a[i]=='p')
continue;
printf("%c",a[i]);
}
}
题目描述
输入一长度为n的字符串,若其n为偶数,则将字符串从中间反转,若为奇数,则将前后各(n-1)/2个字符反转,中间字符不动。
样例输入
asdfghjkl qwerty
样例输出
fdsaglkjh ewqytr
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
while(cin>>a)
{
int len=a.length();
reverse(a.begin(),a.begin()+len/2);
if(len&1)///奇数长度
reverse(a.begin()+len/2+1,a.end());
else
reverse(a.begin()+len/2,a.end());
cout<<a<<endl;
}
}
题目描述
输入一行字符串(只包含字母),截取最后一位放首位,然后其它的取每一位给asc码+3 。测试数据有多组,一次性输入与输出。
样例输入
copyasdf awxz
样例输出
fdvg zdz{
#include<stdio.h>
#include<string.h>
char a[11];
int main()
{
while(gets(a))
{
int len=strlen(a);
int c=a[len-1];
for(int i=len-1;i>0;i--)
a[i]=a[i-1]+3;
a[0]=c;
puts(a);
}
}
1064: 输入三个字符串,按由小到大的顺序输出
时间限制: 1 Sec 内存限制: 128 MB
提交: 1261 解决: 558
[提交][状态][讨论版][命题人:外部导入]题目描述
输入三个字符串,按由小到大的顺序输出。分别使用指针和引用方式实现两个排序函数。在主函数中输入和输出数据。
输入
3行字符串
输出
按照从小到大输出成3行。由指针方式实现。
按照从小到大输出成3行。由引用方式实现。
样例输入
copycde afg abc
样例输出
abc afg cde abc afg cde
提示
主函数已给定如下,提交时不需要包含下述主函数
/* C++代码 */
int main()
{
void sort1(char *,char *,char *);
void sort2(string &,string &,string &);
char s1[100],s2[100],s3[100];
char *p1,*p2,*p3;
string r1,r2,r3;
cin>>s1>>s2>>s3;
r1=string(s1);
r2=string(s2);
r3=string(s3);
p1=s1;
p2=s2;
p3=s3;
sort1(p1,p2,p3);
cout<<s1<<endl<<s2<<endl<<s3<<endl;
sort2(r1,r2,r3);
cout<<r1<<endl<<r2<<endl<<r3<<endl;
return 0;
}
来源
#include<bits/stdc++.h>
using namespace std;
void sort1(char *p1,char *p2,char *p3)//指针
{
char a[101];///需要中间变量的字符串数组
if(strcmp(p1,p2)>0)
strcpy(a,p1),strcpy(p1,p2),strcpy(p2,a);
if(strcmp(p1,p3)>0)
strcpy(a,p1),strcpy(p1,p3),strcpy(p3,a);
if(strcmp(p2,p3)>0)
strcpy(a,p2),strcpy(p2,p3),strcpy(p3,a);
}
void sort2(string &r1,string &r2,string &r3)
{///引用字符串
string t;
if(r1>r2)
swap(r1,r2);
if(r1>r3)
swap(r1,r3);
if(r2>r3)
swap(r2,r3);
}
1068: 复制字符串
时间限制: 1 Sec 内存限制: 128 MB
提交: 1688 解决: 856
[提交][状态][讨论版][命题人:外部导入]题目描述
有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
输入
数字n 一行字符串数字m
输出
从m开始的子串
样例输入
copy6 abcdef 3
样例输出
cdef
提示
主函数已给定如下,提交时不需要包含下述主函数
/* C代码 */
int main()
{
char s1[256],s2[256];
int n,pos,i;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
scanf("%c",&s1[i]);
s1[n]='\0';
scanf("%d",&pos);
strcpypos(s2,s1,pos);
printf("%s\n",s2);
return 0;
}
/* C++代码 */
int main()
{
char s1[256],s2[256];
int n,pos,i;
cin>>n;
cin.get();
cin.getline(s1,n+1);
cin>>pos;
strcpypos(s2,s1,pos);
cout<<s2<<endl;
return 0;
}
来源
#include<iostream>
#include<string.h>
using namespace std;
void strcpypos(char s2[],char s1[],int pos)
{
int i,j=0;
for(i=pos-1;s1[i]!='\0';i++)
{
s2[j]=s1[i];
j++;
}
}
1097: 字符串的输入输出处理
时间限制: 1 Sec 内存限制: 64 MB
提交: 352 解决: 85
[提交][状态][讨论版][命题人:外部导入]题目描述
字符串的输入输出处理。
输入
第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。
输出
先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。
样例输入
copy2 www.njupt.edu.cn NUPT A C M N U P Ter
样例输出
www.njupt.edu.cn NUPT A C M N U P Ter
来源
#include<iostream>
#include<string.h>
using namespace std;
char a[1002];
int main()
{
int n;
cin>>n;
getchar();
while(n--)
{
gets(a);
puts(a);
cout<<endl;
}
while(gets(a))
{
for(int i=0;a[i]!='\0';i++)
{
if(a[i]==' ')
cout<<endl<<endl;
else
cout<<a[i];
}
cout<<endl<<endl;
}
}
3276: 字符串比较
时间限制: 1 Sec 内存限制: 128 MB
提交: 69 解决: 16
[提交][状态][讨论版][命题人:外部导入]题目描述
给定三个字符串,输出其中最大者。
输入
三个长短不定的字符串。
输出
比较并输出最大的字符串。
样例输入
copyA abc hxl
样例输出
hxl
提示
注意:比较大小应按照ASCII码进行排序,而不是长度。
#include<iostream>
#include<string.h>
using namespace std;
char a[100001],b[1000001];
int main()
{
gets(a);
for(int i=0;i<2;i++)
{
gets(b);
if(strcmp(b,a)>0)
strcpy(a,b);
}
cout<<a;
}
3259: 2.字符串处理
时间限制: 1 Sec 内存限制: 128 MB
提交: 315 解决: 149
[提交][状态][讨论版][命题人:lyh]题目描述
字符串处理,输出字符串不重复字符的数目。
输入
输入字符串(字符总数小于50)
输出
不相同字符的个数
样例输入
copyabca
样例输出
3
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
char a[101];
int main()
{
gets(a);
int len=strlen(a);
sort(a,a+len);
int c=len;
for(int i=0;i<c;i++)
{
if(a[i]==a[i+1])
len--;
}
cout<<len;
}
2760: 字符串---首字母变大写
时间限制: 1 Sec 内存限制: 128 MB
提交: 1192 解决: 522
[提交][状态][讨论版][命题人:smallgyy]题目描述
输入一行英文句子,将每个单词的第一个字母改成大写字母。
输入
一个长度不超过100的英文句子
输出
将原先句子中单词的第一个字母改成大写字母输出
样例输入
copyi want to get an accepted
样例输出
I Want To Get An Accepted
来源
#include<iostream>
using namespace std;
char a[101];
int main()
{
gets(a);
for(int i=0;a[i]!='\0';i++)
{
if(i==0&&a[0]!=' ')
a[0]-=32;
if(a[i]>='a'&&a[i]<='z'&&a[i-1]==' ')
a[i]-=32;
}
cout<<a;
}
2415: C语言习题 输出A打头的字符串
时间限制: 1 Sec 内存限制: 128 MB
提交: 673 解决: 488
[提交][状态][讨论版][命题人:lyh]题目描述
输出n个字符串,把其中以字母A打头的字符串输出。
输入
第一行 n
第二行到第n+1行,每行一个字符串
输出
A打头的字符串
样例输入
copy3 Ada Bob Alice
样例输出
Ada Alice
来源
#include<iostream>
using namespace std;
string a[11];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
if(a[i][0]=='A')
cout<<a[i]<<endl;
}
2284: 将字符串格式化后输出(串)
时间限制: 1 Sec 内存限制: 128 MB
提交: 107 解决: 80
[提交][状态][讨论版][命题人:外部导入]题目描述
输入一个字符串,将其按给定的长度n格式化并输出,若n=0,则输出原字符串
输入
输入一个字符串
输出
格式化并输出
样例输入
copyasdfasdf 3
样例输出
asd fas df
#include<iostream>
#include<string.h>
using namespace std;
char a[101];
int main()
{
int n;
gets(a);
cin>>n;
if(n==0)
puts(a);
else
{
for(int i=0;a[i]!='\0';i++)
{
cout<<a[i];
if((i+1)%n==0)
cout<<endl;
}
}
}
2781: 重复字符串
时间限制: 1 Sec 内存限制: 128 MB
提交: 364 解决: 232
[提交][状态][讨论版][命题人:helijian_teacher]题目描述
输入一个字符串,将其重复若干次,例如,输入goal和5,得到的就是球迷的欢呼:goalgoalgoalgoalgoal。
不急着欢呼,先补充完整下面的程序。还需要注意的是,给出的程序段中,还藏着一个小Bug,需要你将其改过来。
#include <iostream>
#include <cstdio>
using namespace std;
void strcopy(char*,char*,int);
int main( )
{
char str1[80];
char str2[80];
int n;
gets(str1);
cin>>n;
strcopy(str2,str1,4);
cout<<str2<<endl;
return 0;
}输入
一个待重复的字符串
重复的次数输出
重复后的文字
样例输入
copygoal 5
样例输出
goalgoalgoalgoalgoal
提示
提交全部代码
来源
#include<iostream>
#include<cstdio>
using namespace std;
void strcopy(char str2[],char str1[],int n)
{
int j=0,i,k;
for(i=0;i<n;i++)
{
k=0;
while(str1[k]!='\0')
{
str2[j++]=str1[k++];
}
}
str2[j]='\0';
}
void strcopy(char*,char*,int);
int main( )
{
char str1[80];
char str2[80];
int n;
gets(str1);
cin>>n;
strcopy(str2,str1,n);
cout<<str2<<endl;
return 0;
}
2426: C语言习题 字符串排序
时间限制: 1 Sec 内存限制: 128 MB
提交: 1290 解决: 732
[提交][状态][讨论版][命题人:lyh]题目描述
用指向指针的指针的方法对5个字符串排序并输出。要求将排序单独写成一个函数。字符串和n在主函数中输入。最后在主函数中输出。
输入
n和n个字符串
输出
排序后的字符串
样例输入
copy5 12345 123 abce abcde abcd
样例输出
123 12345 abcd abcde abce
提示
/* C代码 */
int main()
{
void sort(char **,int );
int i,n;
char **p,*pstr[20],str[20][80];
scanf("%d",&n);
for (i=0; i<n; i++)
pstr[i]=str[i];
for (i=0; i<n; i++)
scanf("%s",pstr[i]);
p=pstr;
sort(p,n);
for (i=0; i<n; i++)
printf("%s\n",pstr[i]);
return 0;
}
/* C++代码 */
int main()
{
void sort(char **,int );
int i,n;
char **p,*pstr[20],str[20][80];
cin>>n;
for (i=0; i<n; i++)
pstr[i]=str[i];
for (i=0; i<n; i++)
cin>>pstr[i];
p=pstr;
sort(p,n);
for (i=0; i<n; i++)
cout<<pstr[i]<<endl;
return 0;
}
来源
#include<iostream>
#include<string.h>
using namespace std;
void sort(char **p,int n)
{
char *temp;
for (int i=0; i<n; i++)
{
for (int j=i+1; j<n; j++)
{
if (strcmp(*(p+i),*(p+j))>0)
{
temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
}
2806: 将整数转换成字符串。
时间限制: 1 Sec 内存限制: 128 MB
提交: 549 解决: 300
[提交][状态][讨论版][命题人:touming]题目描述
用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。提交函数convert即可。
输入
一个整数。
输出
对应的字符串。
样例输入
copy483
样例输出
483
提示
#include <iostream>
using namespace std;
int main()
{void convert(int n);
int number;
cin>>number;
if (number<0)
number=-number;
convert(number);
return 0;}
void convert(int n)
{
if(int i=n/10)
convert(i);
putchar(n%10+'0');
}
2874: 包含B的字符串
时间限制: 1 Sec 内存限制: 128 MB
提交: 226 解决: 153
[提交][状态][讨论版][命题人:helijian_teacher]题目描述
输出n个字符串,把其中以包含字母B或b的字符串输出。
输入
第一行 n
第二行到第n+1行,每行一个字符串输出
包含字母B或b的字符串
样例输入
copy6 Ada Bob Tom Brown Jobs Alice
样例输出
Bob Brown Jobs
来源
#include<iostream>
using namespace std;
char a[101];
int main()
{
int n;
cin>>n;
getchar();
for(int i=0;i<n;i++)
{
gets(a);
int count=0;
for(int j=0;a[j]!='\0';j++)
{
if(a[j]=='B'||a[j]=='b')
{
count=1;
break;
}
}
if(count)
cout<<a<<endl;
}
}
2414: C语言习题 字符串排序
时间限制: 1 Sec 内存限制: 128 MB
提交: 1143 解决: 578
[提交][状态][讨论版][命题人:lyh]题目描述
输入n个字符串,将它们按字母由小到大的顺序排列并输出。编写三个函数实现,input 用于输出n个字符串,sortstr用于排序n个字符串,output 用于输出n个字符串。
输入
第一行 n
第二行到第n+1行,每行一个字符串
输出
排序后的字符串
样例输入
copy3 YTU ACM COM
样例输出
ACM COM YTU
提示
主函数已给定如下,提交时不需要包含下述主函数
/* C++代码 */
int main()
{
string str[10];
int n;
cin>>n;
input( str, n);
sortstr( str, n);
output( str, n);
return 0;
}
来源
#include<bits/stdc++.h>
#include <iostream>
using namespace std;
void input(string str[],int n)
{
for(int i=0;i<n;i++)
cin>>str[i];
}
void sortstr(string str[],int n)
{
sort(str,str+n);
}
void output(string str[],int n)
{
for(int i=0;i<n;i++)
cout<<str[i]<<endl;
}
3222: C语言习题 字符串比较—C语言版
时间限制: 1 Sec 内存限制: 128 MB
提交: 447 解决: 221
[提交][状态][讨论版][命题人:smallgyy]题目描述
写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为
int stringcmp(char *p1,char *p2);
设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返回值为0,若s1≠s2,返回它们二者第1个不同字符的ASCII码差值(如"BOY"与"BAD",第2个字母不同,"O"与"A"之差为79-65=14)。如果s1>s2,则输出正值,如s1<s2,则输出负值。输入
两个字符串
输出
比较结果
样例输入
copyBOY BAD
样例输出
14
提示
主函数已给定如下,提交时不需要包含下述主函数
#include<stdio.h>
int main()
{
int stringcmp(char *,char *);
int m;
char str1[80],str2[80],*p1,*p2;
gets(str1);
gets(str2);
p1=&str1[0];
p2=&str2[0];
m=stringcmp(p1,p2);
printf("%d\n",m);
return 0;
}
int stringcmp(char *p1, char *p2)
{
while (*p1 || *p2)
{
if (*p1 != *p2)
return(*p1 - *p2);
else
{
p1++;
p2++;
}
}
return 0;
}
2260: 字符串的排列(栈和队列)
时间限制: 1 Sec 内存限制: 1000 MB
提交: 13 解决: 7
[提交][状态][讨论版][命题人:外部导入]题目描述
题目:输入一个字符串,打印出该字符串中字符的所有排列。
例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串
abc、acb、bac、bca、cab和cba。输入
输入:
abc
输出
输出:
abc acb bac bca cab cba
样例输入
copyabc
样例输出
abc acb bac bca cab cba
来源
#include<bits/stdc++.h>
using namespace std;
char a[11];
int main()
{
gets(a);
int len=strlen(a);
do
{
for(int i=0; i<len; i++)
cout<<a[i];
cout<<" ";
}
while(next_permutation(a,a+len));
}
2262: 在字符串中删除特定的字符(栈和队列)
时间限制: 1 Sec 内存限制: 1000 MB
提交: 14 解决: 12
[提交][状态][讨论版][命题人:外部导入]题目描述
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如,输入”They are students.”和”aeiou”,
则删除之后的第一个字符串变成”Thy r stdnts.”。输入
输入:
They are students.
aeiou
输出
输出:
Thy r stdnts.
样例输入
copyThey are students. aeiou
样例输出
Thy r stdnts.
来源
#include<iostream>
#include<string.h>
using namespace std;
char a[101],b[101];
bool h[128];
int main()
{
gets(a);
gets(b);
for(int i=0;b[i]!='\0';i++)
h[b[i]]=true;
for(int i=0;a[i]!='\0';i++)
if(h[a[i]]==false)
cout<<a[i];
}
2809: 使用指针连接字符串。
时间限制: 1 Sec 内存限制: 128 MB
提交: 313 解决: 172
[提交][状态][讨论版][命题人:touming]题目描述
编写函数stringcat,实现字符串的连接,程序中需要使用指针形式访问字符串。提交函数部分即可。
输入
程序中给出的两个字符串。
输出
连接后的字符串。
样例输出
I love C++
提示
#include <iostream>
using namespace std;
char * stringcat(char *source, const char *dest)
{//将字符串dest的连接到字符串source的尾部
}
int main() {
char s1[30]="I love ";
char *s2="C++";
stringcat(s1,s2);
cout<<s1<<endl;
return 0;
}
来源
while (*source != '\0')
source++;
while (*dest != '\0')
*source++ = *dest++;
*source = '\0';
问题 O: 国家排序
时间限制: 1 Sec 内存限制: 128 MB
提交: 1270 解决: 787
[提交][状态][讨论版][命题人:helijian_teacher]题目描述
世界格局动荡不安,10国紧急召开会议磋商对策。有些国家斤斤计较,参会代表的座位如何排定争个不停。现在给他们按字典序排列,赶紧商议正事。请编写程序,为这10国的代表排好顺序。
输入
10个国家的名字,一个国家一行
输出
排好序的国家名,一个国家一行
样例输入
copyIreland Poland Germany France Norway Korea Malaysia Thailand China Brazil样例输出
Brazil China France Germany Ireland Korea Malaysia Norway Poland Thailand提示
调试程序输入时,请用好DOS窗口左上角的“编辑”功能,以提高工作效率。
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
string a[11];
for(int i=0;i<10;i++)
cin>>a[i];
sort(a,a+10);
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
}