忽略,生 成一个新的字符串,输出转换后的字符串。若输入的字 符串为“a1b2c3d4”,且n=1,则输出为“b1c2d3e4”。(n 由键盘输入,需要判断n的合法性原字符串保持不 变)

#include <stdio.h>
int main(){
char s[100],c;
int i=0,n,cnt=0;
while(1){
scanf("%c",&c);
if(c == '\n') break;
s[cnt++] = c;
}
printf("请输入N的值:");
scanf("%d",&n);
for(i=0;i<cnt;i++){
if((s[i]-'A'>=0 && s[i]-'Z'<=0) || (s[i]-'a'>=0 && s[i]-'z'<=0)){
if(s[i]-'A'>=0 && s[i]-'Z'<=0){
s[i] = (s[i]-'A'+n)%26 + 'A';
}
else{
s[i] = (s[i]-'a'+n)%26 + 'a';
}
}
}
s[cnt] = '\0';
puts(s);
return 0;
}
求求构思思路

你这代码输出也没错,你的困惑是什么


#include <stdio.h>
int main(){
char s[100],c;
int i=0,n,cnt=0;
while(1){
scanf("%c",&c);
if(c == '\n') break;
s[cnt++] = c;
}
printf("请输入N的值:");
scanf("%d",&n);
for(i=0;i<cnt;i++){
if((s[i]-'A'>=0 && s[i]-'Z'<=0) || (s[i]-'a'>=0 && s[i]-'z'<=0)){
if(s[i]-'A'>=0 && s[i]-'Z'<=0){
s[i] = (s[i]-'A'+n)%26 + 'A';
}
else{
s[i] = (s[i]-'a'+n)%26 + 'a';
}
}
}
s[cnt] = '\0';
puts(s);
return 0;
}

运行结果:

img