2204 - 酷炫加密

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

小泽最近学习了字符串,发现字符串很好玩,各种加密,各种解密的。
现在小泽想先练下基本功。对一个字符串进行炫酷操作。一起跟小泽练习基本功吧!

题目输入

有多组数据,每组数据的第一行有一串字符串,只有数字和字母构成。(5<= 字符串长度 <= 29, 并且为奇数)
第二行有一个正整数N, (N <= 10)表示对字符串操作次数。
借着N行,每行有一个整数1,或者2,
1:表示将中间的字符放到最前面, 最前面的字符, 放到最后面, 最后面的字符放到中间。 也就是3个位置轮换了一下。
2:表示颠覆整个字符串.
读入多组数据方式, 例如:
int main() {
char ch[……];
int n;
while(~scanf("%s", &ch)) {
scanf("%d", &n);
……;
}

题目输出

对于每组数据的,每个操作后, 输出字符串变成了。

输入/输出样例

输入格式

12345
2
1
2

输出格式

32541
14523

C语言解答

#include <stdio.h>
#include <string.h>	
char str[40];
int main(void)
{
	int num,num1;
	void ZHao(int );
	while (scanf("%s",str)!=EOF	) {
		scanf("%d",&num);
		while (num--)  {
			scanf("%d",&num1);
			ZHao(num1); 
			printf("%s\n",str);
		}	
	}
	return 0;
}
void ZHao(int num)
{
	int idex=(strlen(str)/2);
	int i,j;
	char flag;
	char str_cp[40]={'\0'};
	switch(num)
	{
		case 1: flag=str[idex]; 
				str[idex]=str[strlen(str)-1];
				str[strlen(str)-1]=str[0];
				str[0]=flag;
				break;
		case 2: 
				for(i=(strlen(str)-1),j=0;i>=0;i--,j++)
				str_cp[j]=str[i];
				strcpy(str,str_cp);
				break;			
	}
}

C++解答

#include <iostream>
#include <cstring>
using namespace std;
void re(char *s,int len){
	char a[50];
	int i;
	for(i=0;i<len;i++)
	a[len-i-1]=s[i];
	for(i=0;i<len;i++)
	s[i]=a[i];
}
void sd(char *s,int len){
	char fr=s[0],la=s[len-1],mid=s[len/2];
	s[0]=mid;
	s[len/2]=la;
	s[len-1]=fr;
	
}
int main(int argc, char *argv[])
{
	char s[30];
	while(cin>>s){
		int n,i;
		cin>>n;
		int len =strlen(s);
		while(n--){
			cin>>i;
			if(i==1){
				sd(s,len);
				cout<<s<<endl;
			}
			
			else{
				re(s,len);
				cout<<s<<endl;
			}
		}
		
	}
	return 0;
}