A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

基础测试当中的题目  怎么做  最好能加上注释  谢谢各位大神

编程实现对键盘输入的英文名句子进行加密。用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不 变。比如245a95n加密后是245bcd95opq。

6 个回复

倒序浏览
基础测试题也可以论坛问么。。。
回复 使用道具 举报
#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...
   
    char s[20]={0};
    char a[10]={0};
    char p[61]={0};
    int i=0;
    gets(s);//输入字符串,注意考虑溢出问题,可做修改
    while(s[i])//遍历这个字符串
    {
        a[0]=s[i];
        i++;
        if((int)a[0]<97||(int)a[0]>122)//判断相应的字符是否为字母
        {
            strcat(p,a);//将字符串a追加到p
        }else
        {
            sprintf(a,"%c%c%c",a[0]+1,a[0]+2,a[0]+3);//若是字母则将该字母后三个字母合并成一个字符串输入到a
            strcat(p,a);
            memset(a,0,sizeof(a));//将a清空
        }
    }
    printf("%s\n",p);
回复 使用道具 举报
#include <stdio.h>
#include<string.h>

void gression(char str[],int n){
        char ch = str[n];
        for(int i=strlen(str)+3;i>n+2;i--){
                str[i] = str[i-2];
               
        }
        for(int i=1;i<=3;i++){
                if(str[n] == 90){
                        str[n] = 65;
                        ch = str[n]-1;
                }else if(str[n] == 122){
                         str[n] = 97;
                         ch = str[n]-1;
                }else{
                        str[n]=ch+i;
                }
                 
                  n++;
        }
}
int main(){
char str[100];
printf("请输入一个字符串:\n");
scanf("%s",str);
for(int i=0;i<strlen(str);i++){
        if(str[i]>64&&str[i]<91||str[i]>96&&str[i]<123){
                gression(str,i);
                i=i+2;
        }
}
puts(str);
return 0;
}
回复 使用道具 举报
苏打水 发表于 2015-10-20 11:25
#include

int main(int argc, const char * argv[]) {

还是你的法子效率高,我怎么就没想到用3个数组呢。。。
回复 使用道具 举报
Brisingr 发表于 2015-10-20 10:52
基础测试题也可以论坛问么。。。

这个测试题我已经提交完之后再问的,没有做出来,
回复 使用道具 举报

有时间测试一下,谢谢您的回复
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马