题目:
有一行译文,按以下规律译成密码 A-Z a-z B-Y b-y C-X c-x,也就是第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。并要求将密码译回原文,并输出密码和原文。
思路:
也就是第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
//A-Z a-z B-Y b-y C-X c-x
char arr[20];
printf("从键盘输入译文:");
//从键盘中输入一段译文(密码)
gets(arr);
for (int i = 0; i < 20; i++){
if (arr[i] >= 'a'&&arr[i] <= 'z'){
//a-z b-y c-x会发现一组规律对应的一对字母ASCII值和为219,则知道一个另一个为219-arr[i]
arr[i] = 219-arr[i];
}
if (arr[i] >= 'A'&&arr[i] <= 'Z'){
//A-Z B-Y C-X一对字母ASCII和为155,一个知道,则另一个为155-arr[i]
arr[i] = 155 - arr[i];
}
}
printf("原文:");
//输出原文
puts(arr);
system("pause");
return 0;
}
结果:

题目:
编一程序将两个字符串连接起来,不要使用strcat函数
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char a[20]="hello", b[20]="world";
for (int i = strlen(a) + 1; i < 40; i++){
a[i] = b[i - strlen(a)-1];
}
for (int i = 0; i < 20; i++){
printf("%c", a[i]);
}
system("pause");
return 0;
}
结果:

本文介绍了两种实用的C语言编程技巧:一种是基于特定规律的密码与原文之间的相互转换,涉及字符ASCII值的计算;另一种是不使用内置函数实现字符串的拼接,通过手动循环完成字符复制。


被折叠的 条评论
为什么被折叠?



