一开始一直报错说是内存超限,原因在于在将第i个字母转换成第26 - i - 1个字母时,数据类型搞错,
错误写法:
str[i] = 26 - str[i] - 1;//error,因数组为字符型,与int变量无法直接运算
str[i] = '25' - str[i];//error,要求将第i个字母在26个字母表中循环转换,这种写法错在25的ascll码与第i个字母运算的结果不在//26个字母范围内,因此无法达到要求
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
int i;
gets(str);
for(i = 0; i < strlen(str); i++)
{
if(str[i] >= '0' && str[i] <= '9')continue;
else if(str[i] >= 'a' && str[i] <= 'z'){
str[i] = 'a' + 'z' - str[i];//字符型数组,因此,要想转换到26 - i - 1个字母,参与加减的变量都应该为字符型
}
else if(str[i] >= 'A' && str[i] <= 'Z')
{
str[i] = 'A' + 'Z' - str[i];
}
//else printf("输入字母不规范,请重新输入!!!\n");
}
puts(str);
return 0;
}