#include<stdio.h>
#include<string.h>
#include<math.h>
//#include<malloc.h>
//从键盘输入一批字符,以@结束,按要求加密并输出。
//从键盘输入一批字符,占一行,以@结束。
//输出占一行
//加密规则:
//1)所有字母均转换为小写。
//2)若是字母'a'到'y',则转化为下一个字母。
//3)若是'z',则转化为'a'。
//4)其它字符,保持不变。
int main()
{
//思路:大转小加1,是z的话置a,其他字符不在字母里的保持不变,以@结束
//A65-Z90 a97-z122,有很多方法,但是要是错的话有个典型错误
//下面那个输入字符的判断要给括起来
char password[50],ch;
//int i=0;//我要吹爆指针,就是好用,错只会错在一个地方,下面那个while
char *passwordf;
passwordf=password;//把字符数组首地址再次给到指针
while((ch=getchar())!='@')//while(ch=getchar()!='@')这个是错了,达不到想要的预期
{//库函数,键盘输字符,以ASCII码形式存储
if(ch>='A'&&ch<'Z')
// if(ch>=65&&ch<90)亲试这种ASCII码直接输入是可行的
*passwordf=ch+33;//指针型,*在这里是取值的意思把,给对应地址赋值
//不加*号就是地址
// password[i]=ch+33;
else if(ch=='Z')//if(ch==90)
*passwordf='a';
//password[i]='a';
else if(ch>='a'&&ch<'z')//if(ch>=97&&ch<122)
*passwordf=ch+1;
// password[i]=ch+1;
else if(ch=='z')//if(ch==122)
*passwordf='a';
// password[i]=97;
else //password[i]=ch;
*passwordf=ch;//取指针所指字符变量地址,对其赋值
passwordf++;//指针向后移动一个变量的地址,如果是int型就是地址+4
// i++;
}
// for(int j=0;j<i;j++)//常规输出
// printf("%c",password[j]);
passwordf=password;//把字符数组首地址再次给到指针
// puts(password);//这个结果是一样的,不过输出完结果后自动换行
// puts(passwordf);//这个结果是一样的,不过输出完结果后自动换行
while(*passwordf!='\0')//字符数组最后一个字符自动补'\0'
printf("%c",*passwordf++);
//尝试1题多解才是好孩子,其实还有用scanf()来赋值的,就不写了。
return 0;//今天又是没带return 0的一天
}
01-04
11-01
07-23
234
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)