手机棋盘加密算法(急!!!)

qq_27437467 2016-06-02 11:10:14
1 2 3 4
1
2 A B C
3 D E F
4 G H I
5 J K L
6 M N O
7 P Q R S
8 T U V
9 W X Y Z

如上
要求是1,:解密:当输入42 21 71 71 93时,会输出HAPPY
2,:加密:当输入HAPPY时,会输出42 21 71 71 93

附加要求:如果可以,每行之间做互换,如果输入1321,就表示第1行和第3行互换,然后第2行再和第1行互换,当然也可以输入987867这样,进行3轮互换。

求C语言代码,因为对数组不熟,所以如果有大神在的话,求给完整的源代码!!!在此先谢过了!(3号中午完成)
...全文
245 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2016-06-06
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
[quote=引用 5 楼 qq423399099 的回复:] 哈哈,只有放在C++小版里才会404
http://bbs.csdn.net/topics/391853986 规则越多越严格的论坛,死得越早越快。个人意见。[/quote] 对的,我在VB版就见到一个圣母,为社区一点力都没出,还要求删除他不满意的贴子,贴子都删了,谁还来你csdn。
baidu_34165517 2016-06-03
  • 打赏
  • 举报
回复
这叫对数组不熟么,分明是不会编程,检测输入,定位数组元素,,,
赵4老师 2016-06-03
  • 打赏
  • 举报
回复
等待这个帖子404中……
gh_99 2016-06-03
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
“仅供参考”四个字已经被赵4老师锤炼成一句比“芝麻开门”还灵验的咒语了!
赵4老师 2016-06-03
  • 打赏
  • 举报
回复
“仅供参考”四个字已经被赵4老师锤炼成一句比“芝麻开门”还灵验的咒语了!
赵4老师 2016-06-03
  • 打赏
  • 举报
回复
引用 5 楼 qq423399099 的回复:
哈哈,只有放在C++小版里才会404
http://bbs.csdn.net/topics/391853986 规则越多越严格的论坛,死得越早越快。个人意见。
赵4老师 2016-06-03
  • 打赏
  • 举报
回复
//http://bbs.csdn.net/topics/391962021
//  1 2 3 4
//1
//2 A B C
//3 D E F
//4 G H I
//5 J K L
//6 M N O
//7 P Q R S
//8 T U V
//9 W X Y Z
//如上
//要求是
//1,:解密:当输入42 21 71 71 93时,会输出HAPPY
//2,:加密:当输入HAPPY时,会输出42 21 71 71 93
//附加要求:如果可以,每行之间做互换,如果输入1321,就表示第1行和第3行互换,然后第2行再和第1行互换,当然也可以输入987867这样,进行3轮互换。
#include <stdio.h>
#include <string.h>
int main() {
    char mi[10][5]={
        {0, 0 , 0 , 0 , 0 },
        {0,' ',' ',' ',' '},
        {0,'A','B','C',' '},
        {0,'D','E','F',' '},
        {0,'G','H','I',' '},
        {0,'J','K','L',' '},
        {0,'M','N','O',' '},
        {0,'P','Q','R','S'},
        {0,'T','U','V',' '},
        {0,'W','X','Y','Z'},
    };
    char ln[80];
    char s[80];
    char *p,c;
    int i;
    int L;
    int n;
    int y;
    int x;

    fgets(ln,80,stdin);
    if ('\n'==ln[0]) return 1;//直接输入回车,退出
    L=strlen(ln);
    if ('\n'==ln[L-1]) ln[L-1]=0;//去掉行尾的'\n'(如果有)
    p=ln;
    while (1) {
        if (1!=sscanf(p,"%79s%n",s,&n)) break;
        if (2==strlen(s) && '1'<=s[0] && s[0]<='9' && '1'<=s[1] && s[1]<='4') {
            printf("%c",mi[s[0]-'0'][s[1]-'0']);
        } else {
            L=strlen(s);
            for (i=0;i<L;i++) if (!('A'<=s[i] && s[i]<='Z')) break;
            if (i>=L) {//全部由'A'到'Z'组成
                for (i=0;i<L;i++) {
                    for (y=1;y<=9;y++) {
                        for (x=1;x<=4;x++) {
                            if (mi[y][x]==s[i]) {
                                if (i==L-1) {
                                    printf("%d%d",y,x);
                                } else {
                                    printf("%d%d ",y,x);
                                }
                                goto NC;
                            }
                        }
                    }
                    NC:;
                }
            } else {
                L=strlen(s);
                if (L>=4 && 0==L%2) {
                    for (i=0;i<L;i+=2) {
                        if (!('1'<=s[i] && s[i]<='9' && '1'<=s[i+1] && s[i+1]<='9')) break;
                    }
                    if (i>=L) {//符合行互换语法
                        for (i=0;i<L;i+=2) {
                            if (s[i]!=s[i+1]) {
                                for (x=1;x<=4;x++) {c=mi[s[i]-'0'][x];mi[s[i]-'0'][x]=mi[s[i+1]-'0'][x];mi[s[i+1]-'0'][x]=c;}
//                              printf("\n%c<=>%c\n",s[i],s[i+1]);
//                              for (y=1;y<=9;y++) {
//                                  printf("%d ",y);
//                                  for (x=1;x<=4;x++) {
//                                      printf("%c",mi[y][x]);
//                                  }
//                                  printf("\n");
//                              }
                            }
                        }
                    }
                }
            }
        }
        p+=n;
    }
    return 0;
}
//输入:42 21 71 71 93 HAPPY 1321 987867 HAPPY
//输出:HAPPY42 21 71 71 9342 11 81 81 63
小灸舞 版主 2016-06-03
  • 打赏
  • 举报
回复
哈哈,只有放在C++小版里才会404
赵4老师 2016-06-03
  • 打赏
  • 举报
回复
咦?竟然还没404
gh_99 2016-06-03
  • 打赏
  • 举报
回复
仅供参考.
#include <stdio.h>

void mima(void)
{
char mi[10][5]={
{0},
{0},
{0,'A','B','C',0},
{0,'D','E','F',0},
{0,'G','H','I',0},
{0,'J','K','L',0},
{0,'M','N','O',0},
{0,'P','Q','R','S'},
{0,'T','U','V',0},
{0,'W','X','Y','Z'}
};
char s;
int f=0,i,j,z,st=1;
while(st!=0)
{
printf("功能 1 : 加密 2 : 解密\n");
scanf("%d",&f);
switch(f){
case 1:
printf("加密\n");
rewind(stdin);
while((s=getchar())!='\n')
{
for(i=1;i<10;i++)
{
for(j=1;j<5;j++)
{
if(s==mi[i][j])
printf("%.1d%.1d\t",i,j);
}
}
}
break;
case 2:
printf("解密\n");
while(scanf("%d",&z))
{
printf("%c",mi[z/10][z%10]);
if('\n'==getchar())
break;
}
break;
default:
break;
}
rewind(stdin);
printf("\n0:退出1:继续\t");
scanf("%d",&st);
}
}

int main(void)
{
mima();
return 0;
}

效果:
做一门精致,全面详细的 java数据结构与算法!!!让天下没有难学的数据结构,让天下没有难学的算法,不吹不黑,我们的讲师及其敬业,可以看到课程视频,课件,代码的录制撰写,都是在深夜,如此用心,其心可鉴,他不掉头发,谁掉头发???总之你知道的,不知道的,我们都讲,并且持续更新,走过路过,不要错过,不敢说是史上最全的课程,怕违反广告法,总而言之,言而总之,这门课你值得拥有,好吃不贵,对于你知识的渴求,我们管够管饱话不多说,牛不多吹,我们要讲的本门课程内容:稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插值查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS算法和BFS、程序员常用10大算法、二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法马踏棋盘算法。

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧