Advertisement

字符串及相关练习

阅读量:

三角形输出

给定一个层数n,输出字母三角形

输入格式

输入一个整数n(0< n≤26),表示字母三角形的层数。

输出格式

按照题目描述,输出字母三角形。

样例输入:

2

样例输出:

A
BBB

#include<bits/stdc++.h>

using namespace std;

int main(){

int n;

cin>>n;//输入层数

for(int i=1;i<=n;i++){

string space=string(n-i,' ');

string ch=string(2*i-1,'A'+i-1);

cout<<space+ch<<endl;

}

return 0;

}

2.升级版三角形

输入格式

输入一个数字(1-9)或者一个大写字母(A-Z)。

输出格式

按照题目描述,输出对应的三角形。

样例输入1

F

样例输出1

A

ABA

ABCBA

ABCDCBA

ABCDEDCBA

ABCDEFEDCBA

样例输入2

4

样例输出2

1

121

12321

1234321

#include<bits/stdc++.h>

using namespace std;

int main()

{

char c,c1,c2;

cin>>c;

if(c>='A'&&c<='Z')//输入为字母

{

int n = c-'A'+1;

for(int i = 1; i <= n; i++)

{

for(int k = 1; k <=n-i; k++)

{

cout<<" ";

}

for(int j = 1; j <= i; j++)

{

c1 = char('A'+j-1);//前半句

cout<<c1;

}

for(int m = i-1; m >=1; m--)

{

c2 = char('A'+m-1);//后半句

cout<<c2;

}

cout<<endl;

}

}else{//输入为数字

int n = c - '0';

for(int i = 1; i <= n; i++)

{

for(int k = 1; k <=n-i; k++)

{

cout<<" ";

}

for(int j = 1; j <= i; j++)

{

cout<<j;

}

for(int m = i-1; m >=1; m--)

{

cout<<m;

}

cout<<endl;

}

}

return 0;

}

3.造房子

样例输入1

2 2

样例输出1

+-+-+

|||

+-+-+

|||

+-+-+

样例输入2

3 4

样例输出2

+-+-+-+-+

|||||

+-+-+-+-+

|||||

+-+-+-+-+

|||||

+-+-+-+-+

#include<bits/stdc++.h>

using namespace std;

int main()

{

int a,b;

cin>>a>>b;

for(int i=0;i<a;i++)

{

for(int j=0;j<b;j++){

cout<<"+-" ;

}

cout<<'+'<<endl;

for(int j=0;j<b;j++){

cout<<"|*";

}

cout<<"|"<<endl;

}

for(int j=0;j<b;j++){

cout<<"+-" ;

}

cout<<"+"<<endl;

return 0;

}

*4.对称字符串

问题描述

蒜头君认为对称是一种美,他希望任何东西都是对称的,连字符串都是不放过。蒜头君在沙盘上写了这样一些字符串:

A1: A

A2:ABA

A3:ABACABA

A4:ABACABADABACABA

对于给定的N,你能根据规律输出A(N)吗?

输入格式

仅有一个数:N(N<=20)。

输出格式

所在字母组成的图形

样例输入1:2

样例输出1:ABA

样例输入2:3

样例输出2:ABACABA

#include

#include

using namespace std;

char ans[5000000];

int main(){

int n;

cin>>n;

len = 0;

for (int i = 1; i <= n; ++i){

strcat(ans + len + 1, ans);

ans[len] = 'A' + i - 1;

len = strlen(ans);

}

cout<<ans;

return 0;

}

5.寻找字符串

#include<bits/stdc++.h>

using namespace std;

char s1[1005],s2[1005];//定义

int main()

{

gets(s1);//输入两个字符串

gets(s2);

int len1=strlen(s1)-1,len2=strlen(s2)-1;//记录两个字符串的长度

int ans=0;

for(int i=0;i+len2-1<len1;i++)

{

bool matched = true;//标记为真

for(int j=0;j<len2;j++)

{

if(s1[i+j]!=s2[j]){

matched=false;

break;

}

}

if(matched){//如果为真加一

ans++;

}

}

cout<<ans<<endl;

}

6.字符串中A的数量

#include<bits/stdc++.h>

using namespace std;

char s[105];

int main(){

int len,cnt=0;

scanf("%s",s);

len=strlen(s);

for(int i=0;i<len;i++){

if(s[i]=='A'){

cnt++;

}

}

printf("%d\n",cnt);

return 0;

}

7.最长的名字

#include<bits/stdc++.h>

using namespace std;

char s[105],ans[105];

int anslen;

int main(){

int N,len;

cin>>N;

for(int i=0;i<N;i++){

scanf("%s",s);

len=strlen(s);

if(len>anslen){

anslen=len;

strcpy(ans,s);

}

}

printf("%s\n",ans);

return 0;

}

8.字符串

#include<bits/stdc++.h>

using namespace std;

char s[1005];

int anslen;

int main(){

int len;

cin>>s;

len=strlen(s);

for(int i=0;i<len;i++)

{

if(s[i]=='z'){

s[i]='a';

}else if(s[i]=='Z'){

s[i]='A';

}else if(s[i]>='A'&&s[i]<='Z'||s[i]>='a'&&s[i]<='z'){

s[i]++;

}

}

cout<<s;

return 0;

}

9.大数的奇偶性判断

#include<bits/stdc++.h>

using namespace std;

char s[10005];

int main(){

int len;

scanf("%s",s);

len=strlen(s);

if((s[len-1]-'0')%2==0){

cout<<"YES\n";

}else{

cout<<"NO\n";

}

return 0;

}

*10.最后一个单词

#include <bits/stdc++.h>

using namespace std;

int main(){

char s[10005];

gets(s);//输入字符串

int len = strlen(s);//求总长

int num = 0;

for(int i = len-1; i >= 0; i--){//从后往前

if(s[i] !== ' ')

{

len--;

}

else

break;

}

for(int i = 0; i < len; i++){

if(s[i] != ' '){

num++;

}

else num = 0;

}

cout << num << endl;

return 0;

}

11.十字图

#include

using namespace std;

const int MAX=130; //需设置为大于5+4*30的数

bool map[MAX][MAX];

void print(int n)

{

//通过n计算出打印十字图的规格(N*N)

int N=5+4*n;

//首先标记最内层的十字架

for(int i=N/2-1;i<=N/2+3;i++)

map[N/2+1][i]=map[i][N/2+1]=true; //一横一竖

//然后从最外层到里层逐个标记十字架

for(int i=1;i<=n;i++)

{

//接下来标记四个边角部分

int x=2i+1,y=2i+1;

//左上边角

map[x][y]=map[x][y-1]=map[x-1][y]=true;

//右上边角

y=N-2*i;

map[x][y]=map[x][y+1]=map[x-1][y]=true;

//右下边角

x=N-2*i;

map[x][y]=map[x][y+1]=map[x+1][y]=true;

//左下边角

y=2*i+1;

map[x][y]=map[x][y-1]=map[x+1][y]=true;

//接下来标记十字架的非边角部位(即“四个墙壁”)

for(int j=2i+1;j<=N-2i;j++)

map[2i-1][j]=map[j][N-2(i-1)]=map[N-2*(i-1)][j]=map[j][2*i-1]=true;

}

//打印

for(int i=1;i<=N;i++){

for(int j=1;j<=N;j++)

if(map[i][j]) cout<<"$";

else cout<<".";

cout<<endl;

}

}

int main()

{

int n;

cin>>n;

print(n);

return 0;

}

全部评论 (0)

还没有任何评论哟~