新手求助C字符串加密问题

注销账号ban掉csdn 2010-03-05 06:04:09
刚刚学习c,遇到点问题
输入一串英文
然后加密
为另一端英文
密码规则
每个字母都加上3

x+3=a
y+3=b


我现在弄不懂的是 字符串如何用asc码做运算

请各位帮帮我
谢谢输入一串英文
然后加密
...全文
557 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
up522641996 2010-03-12
  • 打赏
  • 举报
回复
3#的综合了你说的翻转情况以及不是英文字母的情况。lz多看看
up522641996 2010-03-12
  • 打赏
  • 举报
回复
你说的找个问题3#解决了啊。一个取余%就让他翻转了啊。
  • 打赏
  • 举报
回复
这个题里面除了+3还有x加三等于a呢,怎么循环回来呢?
_SNIPER_ 2010-03-06
  • 打赏
  • 举报
回复
引用 7 楼 hairetz 的回复:
直接每个字符作+3运算就可以了啊。

char s[100];
int i;
for(i=0;i <100;++i)
{
    s[i]+=3;
    printf("%c",s[i]);
}
这样就行啊 字符串中对应的每一个元素就是一个ASCII码
  • 打赏
  • 举报
回复
直接每个字符作+3运算就可以了啊。

char s[100];
int i;
for(i=0;i<100;++i)
{
s[i]+=3;
printf("%c",s[i]);
}
野男孩 2010-03-06
  • 打赏
  • 举报
回复
char类型的值就是其ASCII码
cy330206 2010-03-05
  • 打赏
  • 举报
回复
首先声明char类型,因为c语言的话字母在内存中的形式是:字母的ASCII。然后要输出到来的时候可以加上格式符%c输出自己输入的字母,而%d输出的就是字母的十进制形式了。根据这个解释可以写出程序

char str[]="xxxxxx";
for( int i = 0; i < n; i++ )
{
str[i] += 3;
printf("%c",str[i]);
}
南气子水 2010-03-05
  • 打赏
  • 举报
回复
楼主其实不是字符串做ASCII码运算,而是字符做ASCII运算,比如说:

#include <stdio.h>
void main()
{
char a='a';//'a'的ASCII码值是97
char b;
b=a+3;//b=97+3=100//字符加减运算用ACSII码
printf("%d,%c\n",a,a);
printf("%d,%c\n",b,b);
}

huanmie_09 2010-03-05
  • 打赏
  • 举报
回复
借鉴楼上的,不过楼上的有问题哦。当输入为大写字母时,n-'a'为负数,取模后还是负数


#include <stdio.h>
int main()
{
char str[255], code[255];
char *p;
int i = 0;
printf("input a string: ");
scanf("%s", str);
printf("before code, the str=%s\n", str);
p = str;
while(*p) {
if(*p >='A' && *p <='Z') { /*如果为大写字母*/
code[i] = (*p - 'A' + 3) % 26 + 'A';
}
else if(*p >= 'a' && *p <= 'z') { /*如果为小写字母*/
code[i] = (*p - 'a' + 3) % 26 + 'a';
}
else { /*如果为其他字符, 则不加密*/
code[i] = *p;
}
i++;
p++;
}
code[i] = '\0';
printf("after code, the str=%s\n", code);
return 0;
}

stardust20 2010-03-05
  • 打赏
  • 举报
回复
这是字符的。。楼主自己改成字符串的吧
#include <stdio.h>
int main()
{
char n='x';
printf("%c",(n-'a'+3)%26+'a');
//n-'a'算出n在26个字母中的第几个 再加3就是你要的加密 再对26取余防止出现27之类的现象,让它从头(a)开始
return 0;
}
xingzhe2001 2010-03-05
  • 打赏
  • 举报
回复
字符串就是个字符数组阿,每个元素都是char型的数字,所以直接+就好了

char str[]="hello";

for( int i = 0; i < 5; i++ )
str[i] += 3;

70,023

社区成员

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

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