关于C语言的一道题
求大神!本帖最后由 friendan 于 2013-11-11 00:01 编辑
1楼是C++代码,有些缺陷,不符合题目要求。
楼主给的分少了点,望以后多给点呀。
效果截图:
代码打包下载:
我也贴下代码吧:#include <stdio.h>
#include <string.h>
//加密电文函数
char *JiaMi(char arr[])
{
//明文数组和密文数组
char MingWen[]={"abcdefghijklmnopqrstuvwxyz"};
char MiWen[]={"0123456789abcdefghi@#$%&!*"};
unsignedj=0;
for(j=0;j<strlen(arr);j++)
{
if(32==arr)//空格译成j
{
arr='j';
continue;
}
for(int k=0;k<26;k++)//寻找与明文匹配的密文
{
if(MingWen==arr)
{
arr=MiWen;
}
}
}
return arr;
}
void main ()
{
char dw1[]={"ni hao"};//电文1
char dw2[]={"fish"};//电文2
char dw3[]={"china man is ok"};//电文3
char dw4[]={"满足其它字符不变哦(只加密a到z和空格)...ok123"};//电文4
//开始加密(注:空格加密成j)
printf("%s",dw1);
printf("加密结果为:\n%s\n\n",JiaMi(dw1));
printf("%s",dw2);
printf("加密结果为:\n%s\n\n",JiaMi(dw2));
printf("%s",dw3);
printf("加密结果为:\n%s\n\n",JiaMi(dw3));
printf("%s",dw4);
printf("加密结果为:\n%s\n\n",JiaMi(dw4));
}
#include<iostream.h>
#include<string.h>
void main()
{
char s;
cin.getline(s,100);
int i=0;
while(s!='\0')
i++;
for(int j=0;j<i;j++)
{
switch(s)
{
case'a':s='0';break;
case'b':s='1';break;
case'c':s='2';break;
case'd':s='3';break;
case'e':s='4';break;
case'f':s='5';break;
case'h':s='6';break;
case'i':s='7';break;
case'j':s='8';break;
case'k':s='9';break;
case'l':s='a';break;
case'm':s='b';break;
case'n':s='c';break;
case'o':s='d';break;
case'p':s='e';break;
case'q':s='f';break;
case'r':s='h';break;
case's':s='i';break;
case't':s='@';break;
case'u':s='#';break;
case'v':s='$';break;
case'w':s='%';break;
case'x':s='&';break;
case'y':s='!';break;
case'z':s='*';break;
default:s='j';break;
}
}
cout<<s<<endl;
}
测试用例:abcdef uvwxyz
输出结果:012345j#$%&!*
不好意思,其他字符不变没看见,你自己再调调吧 本帖最后由 龙羽 于 2013-11-11 00:00 编辑
friendan 发表于 2013-11-10 23:04 static/image/common/back.gif
1楼是C++代码,有些缺陷,不符合题目要求。
楼主给的分少了点,望以后多给点呀。
效果截图:
改的挺快嘛不过这样初始化确实清晰不少 龙羽 发表于 2013-11-10 23:54 static/image/common/back.gif
哈哈 刚想说你代码第十一行有错自己就改了 挺快嘛 不过这样初始化确实清晰不少
其实还可以再优化精简的,为了方便理解就这样吧。 本帖最后由 565123 于 2013-11-11 01:03 编辑
#include <string>
#include <iostream>
std::string & encode(std::string & str){
char * chs = new char;
for (int i = 0; i < str.length(); i++){
if (str >= 'a')
{
if (str <= 'a' + 9)chs = str - 'a' + '0';
else if (str <= 's')chs = str - 10;
else if (str == 't')chs = '@';
else if (str <= 'x')chs = str - 'u' + '#';
else if (str == 'y')chs = '!';
else if (str == 'z')chs = '*';
}
else if (str == ' ')
{
chs = 'j';
}
else
{
chs = str;
}
}
chs = 0;
std::string * passwd = new std::string(chs);
delete chs;
return *passwd;
}
int main() {
std::string str;
std::cout << "请输入要加密的字符" << std::endl;
std::getline(std::cin, str);
std::string & passwd = encode(str);
const char * chs = passwd.c_str();
std::cout << chs << std::endl;
delete &passwd;
}
页:
[1]