C语言数学运算的问题

voidEncrypt(char*str){intascii;srand(time(NULL));intran=rand()%9+1;charcode[]="";char... void Encrypt(char *str){ int ascii; srand(time(NULL)); int ran=rand()%9+1; char code[]=""; char ch; printf("%d\n",ran); for(int i=0; i<strlen(str); i++) { ch=str[i]; ascii=(int)ch; if(ascii>=33&&ascii<=47){ ascii=(ascii+ran)*2; }else if(ascii>=48&&ascii<=57){ printf("%d\n",ascii);//////////////////////////////输出运算前的ascii ascii=ascii*2+ran; printf("%d\n",ascii);/////////////////////////////输出运算后的ascii,注意数值变化,从第三个开始没有规律了。。。。。。 }else if(ascii>=58&&ascii<=64){ ascii=ascii-ran*2+ascii; }else if(ascii>=65&&ascii<=90){ ascii=ascii-ran*3+ascii; }else if(ascii>=91&&ascii<=126){ ascii=ascii-ran*5; } code[i]=(char)ascii; } printf("code:%s\n",code); getch();}这是一个传入字符然后改变ascii再输出的函数。函数传入“123456”,输出改变后的字符串。 展开
 我来答
microroom
科技发烧友

2017-08-13 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1636万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void Encrypt(char *str)
{
int ascii;
srand(time(NULL));
int i,ran=rand()%9+1;
char *code=(char*)malloc(strlen(str)+1);
char ch;

printf("%d\n\n",ran);
for(i=0;i<strlen(str);i++)
{
ch=str[i];
ascii=(int)ch;
if(ascii>=33&&ascii<=47)
{
ascii=(ascii+ran)*2;
}
else if(ascii>=48&&ascii<=57)
{
printf("%d\n",ascii);
ascii=ascii*2+ran;
printf("%d\n",ascii);
}
else if(ascii>=58&&ascii<=64)
{
ascii=ascii-ran*2+ascii;
}
else if(ascii>=65&&ascii<=90)
{
ascii=ascii-ran*3+ascii;
}
else if(ascii>=91&&ascii<=126)
{
ascii=ascii-ran*5;
}
code[i]=(char)ascii;
}
code[i]='\0';
printf("code:%s\n",code);
free(code);
}

int main()
{
Encrypt("123456");
system("PAUSE");
return 0;
}
追问
谢谢(*°∀°)=3,能不能顺便说说free()的用法?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式