李长河 (教授)

教授 博士生导师 硕士生导师

曾获荣誉:湖北省自然科学三等奖

性别:男

毕业院校:莱斯特大学

学历:研究生(博士)毕业

学位:工学博士学位

所在单位:自动化学院

职务:Professor

学科:自动化

办公地点:中国地质大学(武汉)自动化学院710室,湖北省武汉市洪山区鲁磨路388号

联系方式:027-8717 5083

Email:

实验十四 指针与数组

一、 实验目的

数组在处理同类型的多个数据问题时非常有效,是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的字符串处理函数,用指针作为参数。