输入不包含空格的文字列(最大64个文字)和大于等于-100小于等于100的数字n,输出把原字符串按字母表移动n次的字符串。 输入的n不是数字时,输出 not number; 输出的n小于-100时 输出 -101 or less; 输出的n大于100时,输出 101 or more; (文字列内除字母外的其他数字、字符不变,大写字母小写字母不互换,z右移一位为a)
char str[200];
scanf("%s",str);
int n;
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;
}
for(int i=0;str[i]!='\0';i++){
if ('a' <= str[i] && str[i] <= 'z') {
str[i] = (str[i] - 'a' + 26 + n) % 26 + 'a';
} else if ('A' <= str[i] && str[i] <= 'Z') {
str[i] = (str[i] - 'A' + 26 + n) % 26 + 'A';
}
}
printf("%s",str);
return 0;
}
有一个testcase怎么改都是错的,但我看不到testcase的具体内容,也不知道是什么错误。求问程序应该怎么修改呢,谢谢。
scanf("%s",str);接收不了空格,是不是空格引起的错误
这篇文章:c语言 由字符串转ASCII码 也许有你想要的答案,你可以看看