请问这个C++题目算出来的结果是什么??

来源:百度知道 编辑:UC知道 时间:2024/06/21 23:33:39
是今年NOIP的题目,
标准答案是 defghijxyzabc/hfizxjaybcccc
但是我怎么看都是得 defghijxyzabc/
请问大家是多少?

#include <iostream>
#include <cstring>

int i,j,len;
char s[50];

void main(){
cin >> s;
len = strlen(s);
for(i = 0; i<len ; ++i){
if(s[i] >= 'A' && s[i] <= 'Z') s[i] -= 'A' - 'a';
}
for(i = 0 ; i<len; ++i){
if(s[i] < 'x') s[i] += 3; else s[i] += -23 ;
}

cout<< s<< '/';
for(i = 1; j<4 ; j++){
for(i = 0 ; i<len-j; i=i+j){
s[i] = s[i+j];
}
}
cout <<s<<endl;
}
输入 ABCDEFGuvwxyz

#include <iostream>
#include <cstring>

int i,j,len;
char s[50];

void main(){
cin >> s;
len = strlen(s);
for(i = 0; i<len ; ++i){
//将大写全部转换成小写,输入变成abcdefguvwxyz
if(s[i] >= 'A' && s[i] <= 'Z') s[i] -= 'A' - 'a'; }
for(i = 0 ; i<len; ++i){
//二十六个字母做成一个循环,将字符串中的字母依次向后移动3个位置
//例如a就变成d,b变成e,x变成a,y变成b,z变成c
//输入字符串变成defghijxyzabc
if(s[i] < 'x') s[i] += 3; else s[i] += -23 ;
}

cout<< s<< '/'; //输出defghijxyzabc/
for(i = 1; j<4 ; j++){
for(i = 0 ; i<len-j; i=i+j){
//这里相对复杂一些,共执行三轮位置交换
//第一轮:字符串每个字母往前移动一个位置,变成efghijxyzabcc
//第二轮:字符串偶数位置字母往前移动两个位置,变成gfihxjzybaccc
//第三轮:字符串3的倍数位置上的字母往前移动3个位置,变成hfizxjaybcccc
s[i] = s[i+j];
}
}
cout <<s<<endl; //接着前面的输出,整个输出字符串为
//defghijxyzabc/hfizxjaybcccc
}

这个题一共有两个数