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;
}
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐