c语言操作问题 - 爱问答

(爱问答)

c语言操作问题

#include<stdio.h>

#include<string.h>

 

void jiami(char c[],int a[]){ 

 

    for(int i = 0, j = 0; c[j];j++, i = (i + 1) % 8){

 

        c[j]+=a[i];

 

        if(c[j] > 122) {

c[j] -= 90;}

    }

}

void jiemi(char c[],int a[]){ 

 

    for(int i = 0, j = 0; c[j];j++, i = (i + 1) % 8){

 

        c[j]-=a[i];

 

        if(c[j] < 32) 

{

c[j] += 90;}

    }

}

void xiangdeng(char c[],char b[])

{

c=b;

}

 

int main()

{

 

    int a[] = {5,7,8,6,4,3,9,2};

 

    char s[50],s1[50];

 

    printf("请输入字符串:");

    scanf("%s",&s);

    xiangdeng(s1,s); 

 

    jiami(s,a);

 

    printf("加密后密文:%s",s);

 

    jiemi(s,a);

 

    if(s1==s) 

printf("解密后密文:%s",s); 

 

    else 

printf("解密错误!"); 

 

}

为什么总出现解密错误

没看到你的要求。算法上感觉有问题

122是‘z'的ASCII而90是'A'ASCII码,而A~z中间,对字母来说ASCII是不连续的

所以若是你包含大小写的话,就要考虑这个问题的

另外,你程序有两个基础的错

void xiangdeng(char c[],char b[])

{

c=b;

}

不会改变任何内容(c,b都是实参,在函数中不会改变的)

c语言的字串赋值,只能用strcpy函数

而同样的

if(s1==s) 

这个是两个指针的比较,它们永远不可能相等的。

C的字串比较不能用==,要用函数strcmp的

建议楼主卸载重装

相关标签:c语言

下一篇:STM32F1中两个字符串数组中间打点事什么意思

上一篇:为什么把txt文本修改成vbs会变成↓

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?