您好,欢迎访问三七文档
实验十四指针与数组一、实验目的数组在处理同类型的多个数据问题时非常有效,是C++的重要数据类型。指针是C++中最灵活、最有特色的部分,没有熟练掌握指针,则不能说学会了C++。指针的教学重点应放在数组与指针之间的密切关系上。通过本实验要求掌握以下内容:1.指针的定义和使用方法2.指针与数组的相互关系3.指针或数组作为函数参数的函数定义及调用方法。4.C字符串及其运算5.标准字符串二、实验内容1.范例:判断用户输入的C字符串是否为回文,所谓回文是指顺读和反读都一样的串,例如串12321、madam。#includeiostream#includestringusingnamespacestd;constSIZE=100;intmain(){charcarry[SIZE];inti,len,is_palindrome=1;coutpleaseinputastring..\n;cin.get(carry,SIZE);len=strlen(carry);for(i=0;ilen/2;i++){if(carry[i]!=carry[len-1-i]){is_palindrome=0;break;}}if(is_palindrome)coutThestringisapalindrome\n;elsecoutThestringisn'tapalindrome\n;return0;}(1)重新定义回文为:滤去所有非字母字符(包括空格)后,不考虑字母的大小写,从左向右和从右向左读都相同的词或短语。如,”Madam,I’madam”和“Golf,NoSir,preferprisonflog!”(2)编写一个判断输入字符串是否为回文的函数,并使用指针形式访问数组元素。#includeiostreamusingnamespacestd;constintSIZE=100;intmain(){charcarray[SIZE],b[SIZE];char*p=carray,*q=b;intis_p=1;coutpleaseinputastringendl;cin.get(carray,SIZE);while(*p){if(*p='a'&&*p='z'){*q=*p;q++;}if(*p='A'&&*p='Z'){*q=*p+32;q++;}p++;}*q='\0';q--;p=b;while(pq){if(*p!=*q){is_p=0;break;}p++;q--;}if(is_p)coutThestringisapalindromeendl;elsecoutThestringisnotapalindromeendl;return0;}范例:按一定的规则可以将一个字符串经加密转换为一个新的串,例如加密的简单方法是当为'a'~'y'的小写字母时用后一个字母代替前一个字母,其中'z'变换为'a',其他字符时不变。例如:原串为Thisisasecretcode!加密后的串为Tijtjtbtfdsfudpef!编写一个程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串解密输出。主函数如下,请编写加密函数和解密函数。【程序】#includeiostreamusingnamespacestd;voidsecret(char*s){while(*s!='\0'){if(*s96&&*s122)*s=*s+1;elseif(*s==122)*s='a';s++;}}voiddesecreat(char*s){while(*s!='\0'){if(*s97&&*s123)*s=*s-1;elseif(*s==97)*s='z';s++;}}intmain(){charst[]=thisisasecreatcode!;coutstendl;secret(st);coutstendl;desecreat(st);coutstendl;return0;}(1)阅读程序,如果将两个函数中elseif(*s==122)*s='a';和elseif(*s==97)*s='z';处的else去掉,对程序有何影响?使用数据”Iamaboy!”重新测试看看。(2)仿造上例编写程序:设计一个带密钥的加密算法,例如密钥可以是一个常数,字符串加密的方法是将每个字符的ASCII码值加上该常数,然后对128求模。要求以密钥将加密的字符串加密输出,再以相同的密钥将加密字符串解密输出。#includeiostreamusingnamespacestd;constintkey=127;voidsecret(char*s,intlen){inti;for(i=0;ilen;i++){s[i]=(s[i]+key)%128;}}voiddesecret(char*s,intlen){inti;for(i=0;ilen;i++){s[i]=(s[i]-key+128);}}voidmain(){charst[99];intlen;coutinputastringendl;cin.getline(st,99);len=strlen(st);coutsercretendl;secret(st,len);coutstendl;coutdesercretendl;desecret(st,len);coutstendl;}3.编程:重新编写实验十三中题3的字符串处理函数,用指针作为参数。实验心得学到了什么今天的实验过程真的是一波三折,第一个找回文数的实验我改了很久都不对,后来助教帮我一步步跟踪也没有发现错误,最后在组建的时候点了一次全部重建就正确了。我想,学会一步步的检验程序非常重要还有就是指针指针的指定真的要求很严格*P指的就是在那个地址的值,而P就可能紧紧是一个地址丝毫来不得一点马虎还有就是加密的else第一次自己写的时候真的是没有想到遇到的问题对于指针的运用,以及他的具体含义还是不是很清楚,我觉得有很多地方似乎可以不用指针的但是又要用,找不到指针的优越性。如何补救这一章还没结束,相信学得更深入就会理解的现在只是能感觉出来指针读起来的清楚度比直接写数组方便建议老师讲得很好希望考试之前能够有时间带领大家复习
本文标题:指针与数组
链接地址:https://www.777doc.com/doc-4680602 .html