700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C++语言程序设计(第四版)清华大学 郑莉 实验6实习报告

C++语言程序设计(第四版)清华大学 郑莉 实验6实习报告

时间:2021-01-10 09:47:21

相关推荐

C++语言程序设计(第四版)清华大学 郑莉 实验6实习报告

实验6 数组、指针与字符串

(实验环境:vs~ 全部代码已上机调试可运行喔~)

一、 实验目的

(1) 学习使用数组数据对象

(2) 学习字符串数据的组织和处理

(3) 学习标准C++库的使用

(4) 掌握指针的使用方法

(5) 练习通过Debug观察指针的内容及其所指对象的内容

(6) 练习通过动态内存分配实现动态数组,并体会指针在其中的作

(7) 分别使用字符数组和标准C++库练习处理字符串的方法

二、 实验任务

(1) 编写并测试33矩阵转置函数,使用数组保存33矩阵。

(2) 使用动态内存分配生成动态数组来重新完成(1)题,使用指针实现函数的功能。

(3) 编程实习两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。

(4) 使用string类声明字符串对象,重新实现第(3)题。

(5) 声明一个Employee类、其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。

(6) 声明包含5个元素的对象数组,每个元素都是Employee类型的对象。

三、 实验步骤

(1) 编写矩阵转置函数,输入参数为3*3的整型数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中需要对哪些元素进行操作,编写main()函数实现输入、输出。

代码:

#include<iostream>using namespace std;void transpose(int matrix[3][3]){int temp;for (int i = 0; i < 3; i++) for (int j = 0; j < i; j++) {temp = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = temp;}}int main(){int a, b;int matrix1[3][3];cout << "please enter a 3*3 matrix: " << endl;for (a = 0; a < 3; a++)for (b = 0; b < 3; b++){cin >> matrix1[a][b];}transpose(matrix1);cout << "The transposed matrix is: " << endl;for (a = 0; a < 3; a++) {for (b = 0; b < 3; b++){cout << matrix1[a][b] << " ";}cout << endl;}}

运行结果:

(2) 改写矩阵转置函数,参数为整型指针,使用指针对数组进行操作,在main()函数中使用new操作符分配内存生成动态数组,通过debug观察指针的内容及其所指的对象中的内容。

代码:

#include<iostream>using namespace std;void transpose(int* matrix, int n){int i, j;int temp;for(i=0;i<n;i++)for (j = 0; j < i; j++){temp = matrix[i * n + j];matrix[i * n + j] = matrix[j * n + i];matrix[j * n + i] = temp;}}int main(){int n, i, j;int* p;cout << "Please enter the number of rows and columns in the matrix " << endl;cin >> n;p = new int[n * n];cout << "Please enter the number of the matrix " << endl;for(i=0;i<n;i++)for (j = 0; j < n; j++){cin >> p[i * n + j];}transpose(p, n);cout << "The transposed matrix is " << endl;for (i = 0; i < n; i++){for (j = 0; j < n; j++)cout << p[i * n + j] << " ";cout << endl;}return 0;}

运行结果:

(3)编程实现两字符串的连接。声明字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。

代码:

#include<iostream>using namespace std;int main(){char stra[100], strb[100], str[200]; //str=stra+strbint i, j;cout << "Input stra(less than 100 characters):" << endl;cout << "stra=";cin >> stra; //cin输入字符串不要包含空格cout << "Input strb(less than 100 characters):" << endl;cout << "strb=";cin >> strb;for (i = 0; stra[i] != '\0'; i++)str[i] = stra[i];for (j = 0; strb[j] != '\0'; j++, i++)str[i] = strb[j];str[i] = '\0';cout << "str=stra+strb=" << str << endl;return 0;}

运行结果:

(4)使用string类声明字符串对象,编程实现两个字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。

代码:

#include<iostream>#include<string.h>using namespace std;void main(){string s1, s2;cout << "Please input string 1 " << endl;cin >> s1;cout << "Please input string 2" << endl;cin >> s2;s1 += s2;cout << "s1+s2= " << s1 << endl; }

(5)在employee.h文件中声明Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,都可以用字符型数组来表示,在成员函数中,构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数strcpy(char*,char *name);display()中使用cout显示姓名、街道地址、城市和邮编等属性,change_name()改变类中表示姓名属性的字符数组类型的数据成员。在主程序中声明这个类的对象并对其进行操作。

代码:

employee.h:

主程序:

运行结果:

(6)声明包含5个元素的对象数组,每个元素都是Employee类型的对象。代码:

输出结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。