实验十四 指针与数组

一、 实验目的

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