C++ //习题 4.15 用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母。用#define命令来控制是否要译成密码。
·
C++程序设计 (第三版) 谭浩强 习题4.15
习题 4.15 用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母。(如’a’变成’b’······‘z’变成’a’。其他字符不变)。用#define命令来控制是否要译成密码。例如:#define CHANGE 1则输出密码。若#define CHANGE 0 则不译成密码,按原码输出。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法:使用指针,函数的模块化设计,分配内存
#include <iostream>
using namespace std;
#define CHANGE 1 //通过调整CHANGE值来执行相应的程序段
void initialVar(char **str){
*str = new char[80];
}
void inputStr(char *str){
cout<<"Enter String: ";
cin.getline(str, 80);
}
void outputPlainText(char *str){
cout<<"Plain Text: "<<str<<endl;
}
void encryption(char *str){
for(char *p = str; *p != '\0'; p++){
if((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z')){
if((*p >= 'a' && *p <= 'y') || (*p >= 'A' && *p <= 'Y')){
*p += 1;
}
else{
*p -= 25;
}
}
}
}
void outputCipherText(char *str){
cout<<"Cipher Text: "<<str<<endl;
}
void freeVar(char **str){
delete(*str);
}
int main(){
char *str = NULL;
initialVar(&str);
inputStr(str);
#if CHANGE
encryption(str);
outputCipherText(str);
#else
outputPlainText(str);
#endif
freeVar(&str);
system("pause");
return 0;
}
更多推荐
所有评论(0)