void encryp(char *plain,char *cipher)这个函数你写复杂了,如下就可以了——
void encryp(char *plain,char *cipher){
int i;
for(i=0;plain[i];i++)
cipher[i]=plain[i]-24;
cipher[i]='\0';
}
这样加密就完结了。
1 子函数的修改。只要减掉24 即可,其余语句多余。
void encryp(char *plain,char *cipher)
{
int temp;
while(*plain!='\0')
{
temp=*plain-24;
*cipher=temp;
plain++;
cipher++;
}
*cipher='\0';
}
2 对输出句的修改。改为按数字格式(知识点)输出即可。
{ int i=0; // 增加一变量 i =0;
。。。。。。。。
while(ch2[i]!='\0')
printf("%d",ch2[i++]);
return 0;
}
我就不给你具体的写代码了,这里指出你的错误:
两个错误:
1, 注意用 除10的方法(/10)提取数字时,和我们输出的字符串顺序是相反的。比如:数字123按除10的方法变成字符串则为"321";所以你要设一个临时数字,然后再反过来拷贝给cipher;
2,数字转出字符串要用循环。所以你while循环里面还要加while循环~
参考下,你的算法有问题。
#include "stdio.h"
void encryp(char *plain,char *cipher)
{
int temp;
while(*plain!='\0')
{
temp=*plain-24;
*cipher++=temp/10+'0';
*cipher++=temp%10+'0';
plain++;
}
cipher++;
*cipher='\0';
}
int main()
{
char ch1[202]={0},ch2[450]={0};
gets(ch1);
encryp(ch1,ch2);
puts(ch2);
return 0;
}