一、 实验目的
数组在处理同类型的多个数据问题时非常有效,是C++的重要数据类型。指针是C++中最灵活、最有特色的部分,没有熟练掌握指针,则不能说学会了C++。
指针的教学重点应放在数组与指针之间的密切关系上。通过本实验要求掌握以下内容:
1. 指针的定义和使用方法
2. 指针与数组的相互关系
3. 指针或数组作为函数参数的函数定义及调用方法。
4. C字符串及其运算
5. 标准字符串
二、 实验内容
1.范例:判断用户输入的C字符串是否为"回文",所谓"回文"是指顺读和反读都一样的串, 例如串 12321、madam。
【程序】
【要求】
(1) 重新定义回文为:滤去所有非字母字符(包括空格)后,不考虑字母的大小写,从左向右和从右向左读都相同的词或短语。
如,”Madam, I’m adam” 和 “Golf ,No Sir ,prefer prison flog!”
(2) 编写一个判断输入字符串是否为回文的函数,并使用指针形式访问数组元素。
2. 范例:按一定的规则可以将一个字符串经加密转换为一个新的串,例如加密的简单方法是当为'a'~'y'的小写字母时用后一个字母代替前一个字母,
其中'z'变换为'a',其他字符时不变。
例如: 原串为 This is a secret code!
加密后的串为 Tijt jt b tfdsfu dpef!
编写一个程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串解密输出。 主函数如下,请编写加密函数和解密函数。
【程序】
int main()
{ char st[]="This is a secret code!";
cout<< st<< endl;
secret(st);
cout<< st<< endl;
desecret(st);
cout<< st<< endl;
return 0;
}
【要求】
(1) 阅读程序,如果将两个函数中else if(*s==122) *s='a';和else if(*s==97) *s='z';处的else 去掉,对程序有何影响?使用数据”I am a boy !” 重新测试看看。
(2) 仿造上例编写程序:设计一个带密钥的加密算法,例如密钥可以是一个常数,字符串加密的方法是将每个字符的ASCII码值加上该常数,然后对128求模。
要求以密钥将加密的字符串加密输出,再以相同的密钥将加密字符串解密输出。
3.编程:重新编写实验十三中题3的字符串处理函数,用指针作为参数。