77范文网 - 专业文章范例文档资料分享平台

C++程序设计实践样例(8)

来源:网络收集 时间:2019-06-11 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

第一章 控制台应用程序

1. 熟练应用数组与多维数组。

2. 数组作为函数参数的函数定义及调用方法。

二、实验内容

1. 范例:求一个 3×4 矩阵中的最大元素,将求矩阵中的最大元素的过程定 义为一个函数。函数的第一个参数是矩阵本身,第二个参数是第一维的大小。这 种方法的优点是使函数具有通用性,即无论一个矩阵的第一维是多大,只要该矩 阵的第二维是 4 个元素,都可用该函数求最大元素;也可用该函数求一个矩阵 开始几行中的最大元素。 #include using namespace std;

int max_value(int array[][4], int k); int main(){

int a[3][4] = {{1,3,6,7},{2,4,6,8},{15,17,34,12}}; cout << max_value(a,3)<<'\\n'; return 0; }

int max_value(int array[][4], int n){ int i,j, max = array[0][0]; for(i = 0; i < n; i++) for(j = 0; j < 4; j++) if (array[i][j] > max) max = array[i][j]; return (max); }

C++/C 语言的这种处理数组参数地址的方法,缺点在于即使给出了最高维 的大小,编译程序也不会检查数组传递中最高维的大小的潜在错误。试一试在运 行时,先进的计算机系统会不会发现错误?可以在程序中故意出界。

2. 范例:分别编写实现下列字符数组处理的函数,用数组作为参数: 1) char* trim(char s[])

删除字符串 s 的尾部空格

2) char* leftstring(char s1[], char s2[], int n)

得到指定字符串 s1 中前 n 个字符的子串 s2 3) int index(char s1[], char s2[])

检查字符串 s2 是否为字符串 s1 的子串,根据查找结果返回 s2 在 s1 中的开始 位置,不成功返回 -1 #include #include using namespace std; void trim(char s[]);

void leftstring(char s1[], char s2[], int n); int index(char s1[], char s2[]); int main(){

36

C++程序设计实践教材 第一章 程序设计同步实验指导

char str1[]=\ int n;

\

cout<<\包含尾部空格的串str1:\长度为:\ trim(str1);

cout<<\无尾部空格的串str1:\长度为:\ leftstring(str1,str3,3);

cout<<\串str3:\长度为:\ cout<<\串str2为:\ n=index(str1,str2);

if(n!=-1) cout<<\串str1包含子串str2,从第\字符开始(由0开始计数)。\ else cout<<\串str1不包含子串str2\ return 0; }

void trim(char s[]){

int i=0;

while(s[i]!='\\0') i++; i--;

while(s[i]==' ') s[i--]='\\0';

}

leftstring(char s1[], char s2[], int n){ void

int i;

for(i=0;i

}

int index(char s1[], char s2[]){

bool b=0;

int i,j,n=-1,n1=strlen(s1),n2=strlen(s2); for(i=0;i

if(s1[i]==s2[0]){

b=1;

for(j=1;j

if(s1[i+j]!=s2[j]){

b=0; break; } } }

if(b==1) {n=i;break;} } return n; }

3. 编程:使用递归和非递归两种方法编写函数 itoa0(int n, char s[],int b),将 整数 n 转换为以 b 为基(例如以 16 为基的十六进制)的数字字符数组。

37

第一章 控制台应用程序

实验十四 指针与数组

一、实验目的 数组在处理同类型的多个数据问题时非常有效,是 C++的重要数据类型。指 针是 C++最灵活最有特色的部分,没有熟练掌握指针,则不能说学会了 C++。但 指针的教学必须有重点,重点放在数组与指针之间的密切关系。通过实践要求掌 握:

1. 指针的定义和使用。

2. 指针与数组的相互关系。

3. 数组或指针作为函数参数的函数定义及调用方法。 4. C 字符串与运算。 5. 标准 string 串。

二、实验内容

1. 范例:判断用户输入的 C 字符串是否为\回文\,所谓\回文\是指顺读和反 读都一样的串,例如串 12321、madam。 #include #include using namespace std; const SIZE = 100; int main(){

char carray[SIZE];

int i,len, is_palindrome = 1;

cout << \ input a striing ..\\n\ cin.get(carray, SIZE); len = strlen(carray); for (i=0;i

if (carray[i] != carray[len-1-i]){

is_palindrome = 0; break; } }

if (is_palindrome) cout<<\ else cout<<\ return 0; }

[实验要求] 重新定义回文为:滤去所有非字母字符(包括空格)后,不考虑字 母的大小写,从左向右和从右向左读都一样的词或短语,下面是两个回文的例子:

Madam, I'm adam

Golf, No Sir, prefer prison flog!

编程:编写一个程序,判断输入的字符串是否为回文。并使用指针形式访问 数组元素。

2. 范例:将实验十三题 1 的函数参数分别改用二级指针和一级指针完成。(可

38

C++程序设计实践教材 第一章 程序设计同步实验指导

选)

#include using namespace std;

int max_value(int (*array)[4], int k);//二级指针 int max_value1(int *arr,int n);//一级指针 int main(){

int a[3][4] = {{1,3,6,7},{2,4,6,8},{15,17,34,12}}; int*b=(int*)a;

cout << max_value(a,3)<<'\\n'; cout << max_value1(b,3*4)<<'\\n'; return 0; }

int max_value(int (*array)[4], int n){ int i,j, max = array[0][0]; for(i = 0; i < n; i++) for(j = 0; j < 4; j++) if (array[i][j] > max) max = array[i][j]; return (max); }

int max_value1(int *arr, int n){ int i, max = arr[0]; for(i = 0; i < n; i++)

if (arr[i] > max) max = arr[i]; return (max); }

3. 范例:按一定的规则可以将一个字符串经加密转换为一个新的串,例如 加密的简单方法是当为'a'~'y'的小写字母时用后一个字母代替前一个字母,其 中'z'变换为'a',其他字符时不变。例如:

原串为 This is a secret code! 加密后的串为 Tijt jt b tfdsfu dpef! 编写一个程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串解 密输出。

#include using namespace std; void secret(char* s){

while(*s!='\\0'){

if(*s>96&&*s<122) *s=*s+1;

else if(*s==122) *s='a';//注意else不可少,否则当字符为y时,先变为z,再变为a s++; } }

39

第一章 控制台应用程序

void desecret(char* s){

while(*s!='\\0'){

if(*s>97&&*s<123) *s=*s-1;

else if(*s==97) *s='z';//注意else不可少,否则当字符为b时,先变为a,再变为z s++; } } int main(){

char st[]=\ cout<

编程:自己另设计一个带密钥的加密算法,例如密钥是一个常数,字符串加

密的方法是将每个字符的 ASCII 码值加上该常数,然后对 128 求模。编写程序, 以密钥将输入的字符串加密输出,再以相同的密钥,将加密字符串解密输出。

4. 编程:重新编写实验十三题 2 的字符串处理函数,用指针作为参数(可 选):

1) char* trim(char *s) 删除字符串 s 的尾部空格

2) char* leftstring(char *s1, char *s2, int n) 得到指定字符串 s1 中前 n 个字符的子串 s2 3) int index(char *s1, char *s2)

检查字符串s2是否为字符串s1的子串,根据查找结果返回s2在s1中的开始位 置,不成功返回 -1

5. 编程:使用标准字符串 string,实现常见的串运算。注意这里 string 是类 (class)。

实验十五 模板

一、实验目的 1. 掌握函数模版的编写方法。

2. 掌握类模版的定义和使用的方法。

二、实验内容

1. 编程:建立求数组元素中最小值的函数模板。

2. 范例:将实验十的集合类改造为模板类,集合元素可以是字符、整数、 枚举类型等等。

40

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++程序设计实践样例(8)在线全文阅读。

C++程序设计实践样例(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/657211.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: