解题思路:

        说实话把这题放在这儿,个人看来真不合理,它卡了我半个月,当初借题解过了这道坎,但是每次看到它我就默默的跳过去,以至于我到现在还有一种感觉,c,我连第入门第一阶段第一题都还不会。其实它完全可以往后放一放,但凡放在第三阶段,就不会让一些容易望而却步的孩子入门顺一点。毕竟,c语言网这么重要。

        我们来读一读题目:            要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.

        什么意思呢,学过python和导论会下意识想到ASCII码,然后就觉得,啊呀,它好难。其实,就是因为ASCII码,这就一道很简单的题目。

        ASCII码给每个字母赋予了一个数值(A是65,其后依次加1,a是97,其后依次加1……当然,ASCII码中用数值表示的远不止字母,有兴趣的可以自己查一查,但A和a需要背下来。)


               而ASCII的体现叫做

char a;

               这是需要定义的。只要表明用ASCII码,字母就被赋予了数值。所以有了

scanf("%c",&a);
printf("%c",a+4);

             本题目的输入是五个字母,主函数就是:

char a,b,c,d,e;
scanf("%c%c%c%c%c",&a,&b,&c,&d,&e);
printf("%c%c%c%c%c",a+4,b+4,c+4,d+4,e+4);


                这种办法简单粗暴,如果稍微高级一点,我们明白对于这个题目中的+4的理解是一个重复的过程,这就是循环。我可以循环输入,并且把每一个输入值+4,但是输出的时候面临新的问题。

                如果我输入一个加密一个并输出它,是这样的:

for(i=0;i<5;i++)
    {
        scanf("%c",a);
        a+=4;
        printf("%s",a);
    }

                但我们需要的是完整输入之后完整输出,所以程序顺序相当于循环(输入,处理),(输出)。最能满足这个顺序的就是数组:

    int i;
    char ch[5];
    for(i=0;i<5;i++)
    {
        scanf("%c",&ch[i]);
        ch[i] += 4;
    }



注意事项:

           ( %d 表示输入or输出十进制整数

                %o                        八进制整数

                %x                        十六进制整数

                %f                         浮点数

                %s                         字符串

                %c                         单个字符

                %p                        指针的值

                %e                        指数形式的浮点数)

参考代码:


#includeint main()
{
    char a,b,c,d,e;
    scanf("%c%c%c%c%c",&a,&b,&c,&d,&e);
    printf("%c%c%c%c%c",a+4,b+4,c+4,d+4,e+4);
    return 0;

}
#includeint main()
{
    int i;
    char ch[5];
    for(i=0;i<5;i++)
    {
        scanf("%c",&ch[i]);
        ch[i] += 4;
    }
    printf("%s",ch);
    return 0;
 }


点赞(3)
 

0.0分

236 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 55 条评论

inclued 2年前 回复TA
char c1 ='C';
	char c2 ='h';
	char c3 ='i';
	char c4 ='n';
	char c5 ='a';
	
	
	c1 = c1 + 4;
	c2 = c2 + 4;
	c3 = c3 + 4;
	c4 = c4 + 4;
	c5 = c5 + 4;
	
	
	printf("输出的字母是:%c%c%c%c%c",c1,c2,c3,c4,c5);
菜鸡 2年前 回复TA
#include<stdio.h>
int main()
{
    int a,b,i;
    char c[5];
    for(a=0;a<5;a++)
   {
	scanf("%c", &c[a]);
	c[a]=c[a]+4;
	}
    for(i=0;i<5;i++)
    printf("%c",c[i]);
    return 0;
}
HashMap 2年前 回复TA
@HashMap 多余的变量
Mokreilo 2年前 回复TA
@HashMap int i=0是什么意思呢?
HashMap 2年前 回复TA
#include<stdio.h>
int main()
{   
	int i = 0;
	char c1, c2, c3, c4, c5;
	c1 = 'C';
	c2 = 'h';
	c3 = 'i';
	c4 = 'n';
	c5 = 'a';

	printf("%c%c%c%c%c\n", c1+4, c2+4, c3+4, c4+4, c5+4);
	return 0;
}
无风 2年前 回复TA
@喜羊羊与灰太狼 没有定义字母,题目意思那些是字符,所以你要加上单引号
阿波 2年前 回复TA
@YOULI 不是系统有问题 而是题目要求没有请输入密码这一行字 所以系统判你错误
YOULI 2年前 回复TA
@YOULI 按道理来说,有问题不?虽然代码有点蠢,但总归来说确实输出了正确答案,系统判我错误······
YOULI 2年前 回复TA
#include<stdio.h>
int main()
{
    char c1,c2,c3,c4,c5;
    printf("请输入密码:");
    scanf("%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5);
    c1 = c1 + 4;
    c2 = c2 + 4;
    c3 = c3 + 4;
    c4 = c4 + 4;
    c5 = c5 + 4;
    printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
    return 0;
}
嚯冰阔落 2年前 回复TA
赞赞赞