输入文字列(最大64个文字)和大于等于-100小于等于100的数字n,输出把原字符串按字母表移动n次的字符串。 输入的n不是数字时,输出 not number; 输出的n小于-100时 输出 -101 or less; 输出的n大于100时,输出 101 or more; (文字列内除字母外的其他数字、字符不变,大写字母小写字母不互换,z右移一位为a)
#include <stdio.h>
int main(void){
char str[200]={'\0'};
int n;
gets(str);
int r = scanf("%d",&n);
if(r!=1){
printf("Input Error : not number");
return 0;
}
if(n<-100){
printf("Input Error : -101 or less");
return 0;
}
if(n>100){
printf("Input Error : 101 or more");
return 0;
}
int i=0;
while(str[i]!='\0'){
if(str[i]>='A'&&str[i]<='Z'){
str[i] = ((str[i]+ (n%26)) -'A') %26 + 'A';
}
if(str[i]>='a'&&str[i]<='z'){
str[i] = ((str[i]+ (n%26)) -'a') %26 + 'a';
}
i++;
}
printf("%s",str);
return 0;
}
想问一下这段程序为什么test case会部分error,求问应该怎么修改,或者有什么其他写法吗?谢谢。