注册 登录
编程论坛 C语言论坛

怎么做呀?求大佬告知

梦伦 发布于 2020-06-18 22:59, 1979 次点击
从键盘输入一个字符串,并输入一个字符,将该字符进行加密。

例1:

输入字符串:ntvu_0513_NanTong

输入字符:n

输出:mtvu_0513_mamTomg


例2:

输入字符串:ntvu_0513_NanTong

输入字符:t

输出:nsvu_0513_Nansong


例2:

输入字符串:ntvu_0513_zanAng

输入字符:a

输出:ntvu_0513_zznzng
4 回复
#2
梦伦2020-06-19 00:13
#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++;
    }
}

#3
ditg2020-06-19 01:15
程序代码:
#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编辑过]

#4
牧人马2020-06-19 01:19
代码结构稍微改了一下,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编辑过]

#5
梦伦2020-06-21 14:48
谢谢楼上的大佬们
1