标题:怎么做呀?求大佬告知
只看楼主
梦伦
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-6-18
结帖率:50%
已结贴  问题点数:20 回复次数:4 
怎么做呀?求大佬告知
从键盘输入一个字符串,并输入一个字符,将该字符进行加密。

例1:

输入字符串:ntvu_0513_NanTong

输入字符:n

输出:mtvu_0513_mamTomg


例2:

输入字符串:ntvu_0513_NanTong

输入字符:t

输出:nsvu_0513_Nansong


例2:

输入字符串:ntvu_0513_zanAng

输入字符:a

输出:ntvu_0513_zznzng
搜索更多相关主题的帖子: 字符串 加密 输出 输入 字符 
2020-06-18 22:59
梦伦
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-6-18
得分:0 
#include<stdio.h>

void main()
{void mchar(char *s,char a);
    char s[100],a;
    printf("输入字符串:");
    gets(s);
    printf("输入字符:");
    scanf("%c",&a);
     mchar(s,a);
     printf("%s\n",s);


}
void mchar(char *s,char a)
{

    int i;
    i=0;
    while(*(s+i)!='\0')
    {
        if((*(s+i)==a)&&(*(s+i)==(a|32)))//这里不知道怎么不能判断了
        {   
            a=a-1;
            *(s+i)=a;
            if(a=='a')
            {
                a='z';
            }
            
        }
        i++;
    }
}

2020-06-19 00:13
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 
程序代码:
#include <stdio.h>
#include <ctype.h>

int main(int argc, char *argv[])
{
    char s[100], a, *cp;
    gets(s);
    scanf("%c", &a);
    if (isupper(a)) 
        a += 0x20;
    for (cp = s; *cp; cp++) 
        if (*cp == a || (*cp+0x20) == a)
            if (a == 'a')
                *cp = 'z';
            else
                *cp = a - 1;
    printf("%s\n", s);
    return 0;
}


[此贴子已经被作者于2020-6-19 02:57编辑过]


梦想拥有一台龙芯3A-4000
2020-06-19 01:15
牧人马
Rank: 4
等 级:业余侠客
威 望:6
帖 子:49
专家分:229
注 册:2017-12-24
得分:20 
代码结构稍微改了一下,mchar函数有三个不太对的地方
第一个,a=a-1你的意思应该是想把目标字母变为前边一个字母,但是假如字符数组
中有多个目标字母的话,就会依次变为它本身的前一个字母,前两个字母....这样,所以不应该修改参数a,而是直接在赋值语句上修改
第二个假如a='a'的话,是要把*(s+i)换成'z',而不是把参数a换成'z'
第三个大写转换为小写字母语句
程序代码:
#include<stdio.h>

int main(void)
{void mchar(char *s,char a);
    char s[100],a;
    printf("输入字符串:");
    gets(s);
    printf("输入字符:");
    scanf(" %c",&a);
     mchar(s,a);
     printf("%s\n",s);

}
void mchar(char *s,char a)
{

    int i;
    i=0;
    while(*(s+i)!='\0')
    {
           if((*(s+i)==a)||((*(s+i)|32)==a))//如果*(s+i)是大写字母,就或32运算转化成小写字母,而且不是&&而是||
        {    
            if(a=='a')
            {
                *(s+i)='z';
            }
       
            else
            {
            //a=a-1;
            *(s+i)=a-1;
            }      
        }
        i++;
    }
}


[此贴子已经被作者于2020-6-19 01:45编辑过]

2020-06-19 01:19
梦伦
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-6-18
得分:0 
谢谢楼上的大佬们
2020-06-21 14:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502195-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022766 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved