郑轻oj1064

#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的一天
}

 多动手才能直到有哪些问题会出错

这里while((ch=getchar)!='@')如果少一个括号就会出错了

while(ch=getchar()!='@');

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值