第一章 控制台应用程序
1. 熟练应用数组与多维数组。
2. 数组作为函数参数的函数定义及调用方法。
二、实验内容
1. 范例:求一个 3×4 矩阵中的最大元素,将求矩阵中的最大元素的过程定 义为一个函数。函数的第一个参数是矩阵本身,第二个参数是第一维的大小。这 种方法的优点是使函数具有通用性,即无论一个矩阵的第一维是多大,只要该矩 阵的第二维是 4 个元素,都可用该函数求最大元素;也可用该函数求一个矩阵 开始几行中的最大元素。 #include
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
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 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 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 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)在线全文阅读。
相关推荐: