有一行文字,具体长度和内容自行约定,设计两个函数:
(1)count函数:统计并输出其中英文字母、数字以及其他字符的个数。
(2)code函数:译密码,将字符串中的字母按下述规律转换:将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D,非字母字符不变。
主函数中先输入该行文字,然后分别调用count函数和code函数,主函数最后输出原文和密文。
这里主要难点是w x y z的地方无法直接用+=4解决
源代码:
#include <stdio.h>
#include <string.h>
void tongji(char a[50]) {
int zimu = 0,shuzi = 0, qita = 0;
int len = strlen(a);
for (int i = 0; i < len; i++) {
if ((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z')) {
zimu++;
}
else if (a[i] >= '0' &a[i] <= '9') {
shuzi++;
}
else {
qita++;
}
}
printf("字母的个数:%d\n数字的个数:%d\n其他字符的个数:%d\n", zimu, shuzi, qita);
}
void code(char a[50]) {
int len = strlen(a);
printf("原文:");
puts(a);
for (int i = 0; i < len; i++) {
if (a[i] >= 'a' && a[i] <= 'z')
a[i] = ((a[i] - 'a' + 4) % 26) + 'a';
if (a[i] >= 'A' && a[i] <= 'Z')
a[i] = ((a[i] - 'A' + 4) % 26) + 'A';
}
printf("密文:");
puts(a);
}
int main() {
char arr[50];
gets(arr);
tongji(arr);
code(arr);
return 0;
}