c语言问题!!!!

编写程序,将一个长度不超过100的字符串加密和解密。密码规则如下:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”,用... 编写程序,将一个长度不超过100的字符串加密和解密。密码规则如下:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”,用“c”代替“y”,以此类推……,非字母字符则不作任何转换
例如“China*12”加密后的结果为“Glmre*12”,“Glmre*12”解密后的结果为“China*12”。
加密和解密分别使用自定义函数完成。
#include<stdio.h>
#include<conio.h>

char jiami(char a[]);
char jiemi(char a[]);

main()
{ char a[100];
gets(a);
printf("输入的为:\n");
puts(a);
char jiami(char a);
printf("加密后:\n");
puts(a);
printf("解密后:\n");

char jiemi(char a);
puts(a);

getch();
}
char jiami(char a[])
{ int i=0;

for(i=0;i<100;i++)
{ if((a[i]>='a'&&a[i]<='w')||(a[i]>='A'&&a[i]<='W'))
a[i]=a[i]+4;
else if ((a[i]>='x'&&a[i]<='z')||(a[i]>='X'&&a[i]<='Z'))
{
a[i]=a[i]-22 ;

}
puts(a);
}

}
char jiemi(char a[])
{ int i=0;

for(i=0;i<100;i++)
{ if((a[i]>='a'&&a[i]<='w')||(a[i]>='A'&&a[i]<='W'))
a[i]=a[i]-4;
else if ((a[i]>='x'&&a[i]<='z')||(a[i]>='X'&&a[i]<='Z'))
{
a[i]=a[i]+22 ;

}
puts(a);
}

}
为什么可以运行但输出的还是原来输入的 无法加密啊
展开
 我来答
帐号已注销
2011-11-21 · 超过31用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:69.6万
展开全部
楼主,修改好了,你可以看看!!!
#include<stdio.h>
#include<conio.h>

//char jiami(char a[]);
//char jiemi(char a[]);
void jiami(char a[]);
void jiemi(char a[]);

main()
{ char a[100];
gets(a);
printf("输入的为:\n");
puts(a);
//char jiami(char a);
jiami( a );
printf("加密后:\n");
puts(a);
printf("解密后:\n");

//char jiemi(char a);
jiemi ( a );
puts(a);

getch();
}
//char jiami(char a[])
void jiami(char *a)
{ int i=0;

for(i=0;i<100;i++)
{ if((a[i]>='a'&&a[i]<='w')||(a[i]>='A'&&a[i]<='W'))
a[i]=a[i]+4;
else if ((a[i]>='x'&&a[i]<='z')||(a[i]>='X'&&a[i]<='Z'))
{
a[i]=a[i]-22 ;

}
//puts(a);
}

}
//char jiemi(char *a)
void jiemi(char *a)
{ int i=0;

for(i=0;i<100;i++)
{
if((a[i]>='a'&&a[i]<='w')||(a[i]>='A'&&a[i]<='W'))
a[i]=a[i]-4;
else if ((a[i]>='x'&&a[i]<='z')||(a[i]>='X'&&a[i]<='Z'))
{
a[i]=a[i]+22 ;
}
//puts(a);
}

}
追问
帮我解释一下好么  为啥我那样不行  void是啥意思我一直不太明白。。

刚刚运行了一下 wxyz这几个加密后不对啊 而且解密函数好像也不对。。 帮我检查检查`
追答
楼主,改好了,昨天只是看了看语法问题,没具体看你的算法,现在将改过之后的再发给你,你看看哦,有什么问题再说。。。
/*
程序功能:编写程序,将一个长度不超过100的字符串加密和解密。密码规则如下:
用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个
字母是“E”,用“E”代替“A”,用“c”代替“y”,以此类推……,非字
母字符则不作任何转换例如“China*12”加密后的结果为“Glmre*12”,
“Glmre*12”解密后的结果为“China*12”。
加密和解密分别使用自定义函数完成。
*/

#include
#include

/*假如楼主一定要有返回值的话,也可以用你
之前定义的函数,但是一定要有返回值,这个是
必须得,你之前的就没有,所以会报错。*/
//char jiami(char a[]);
//char jiemi(char a[]);
void jiami(char *a);
void jiemi(char *a);

main()
{
char a[100];
gets(a);
printf("输入的为:\n");
puts(a);

//char jiami(char a);
printf("加密后:\n");
jiami(a);
puts(a);

printf("解密后:\n");
//char jiemi(char a);
jiemi ( a );
puts(a);

//getch();
}
//char jiami(char a[])
//这里传入指针是因为,指针的快捷性和方便性
//至于算法,我想楼主也差不多明白了,你再
//看看下面的分析吧。
void jiami(char *a)
{
int i = 0;

for ( i=0; i= 'a' && a[i] ='A' && a[i] = 'w' && a[i] = 'W' && a[i] = 'e' && a[i] = 'E' && a[i] = 'a' && a[i] = 'A' && a[i] <= 'D' ) )
{
a[i] = a[i] + 22;
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淦海瑶s1
2011-11-21 · TA获得超过3646个赞
知道大有可为答主
回答量:3341
采纳率:100%
帮助的人:711万
展开全部
jiami(a);
printf("加密后:\n");
puts(a);
printf("解密后:\n");
jiemi( a);
没有必要再写char

char jiemi(char a[])
{ int i=0;

for(i=0;i<100;i++)
{ if((a[i]>='e'&&a[i]<='z')||(a[i]>='E'&&a[i]<='Z'))
a[i]=a[i]-4;
else if ((a[i]>='a'&&a[i]<='d')||(a[i]>='A'&&a[i]<='D'))
{
a[i]=a[i]+22 ;

}
puts(a);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式