2204 - 酷炫加密
时间限制 : 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; }