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);
}
}
为什么可以运行但输出的还是原来输入的 无法加密啊 展开
例如“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);
}
}
为什么可以运行但输出的还是原来输入的 无法加密啊 展开
2个回答
展开全部
楼主,修改好了,你可以看看!!!
#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);
}
}
#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;
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询