解题思路:
说实话把这题放在这儿,个人看来真不合理,它卡了我半个月,当初借题解过了这道坎,但是每次看到它我就默默的跳过去,以至于我到现在还有一种感觉,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;
}0.0分
236 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> #define N 100 int main() { int i; char ch[N]; printf("输入需要加密的内容:\n"); for(i=0;i<N;i++) { scanf("%c",&ch[i]); ch[i]+=4; printf("%c",ch[i]); } return 0; }@廾匸 比如说 int mima(char *a /*字符数组*/ ,int n /*数量*/ ){a=(char*)malloc(sizeof(char)*n)}/*分配n个空间*/}@C小白 if(c2==b[d])c12=b[d+4]; if(c3==b[d])c13=b[d+4]; if(c4==b[d])c14=b[d+4]; if(c5==b[d])c15=b[d+4]; } for(int d=22;d<26;d++) { if(c1==a[d])c11=a[d-22]; if(c2==a[d])c12=a[d-22]; if(c3==a[d])c13=a[d-22]; if(c4==a[d])c14=a[d-22]; if(c5==a[d])c15=a[d-22]; if(c1==b[d])c11=b[d-22]; if(c2==b[d])c12=b[d-22]; if(c3==b[d])c13=b[d-22]; if(c4==b[d])c14=b[d-22]; if(c5==b[d])c15=b[d-22]; } printf("%c%c%c%c%c",c11,c12,c13,c14,c15); return 0; }新手写的又臭又长 #include<stdio.h> int main() { char c1,c2,c3,c4,c5; char c11,c12,c13,c14,c15; char a[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; char b[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; scanf("%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5); for(int d=0;d<23;d++) { if(c1==a[d])c11=a[d+4]; if(c2==a[d])c12=a[d+4]; if(c3==a[d])c13=a[d+4]; if(c4==a[d])c14=a[d+4]; if(c5==a[d])c15=a[d+4]; if(c1==b[d])c11=b[d+4]