C语言程序设计实验答案_数组、指针与字符串解析.docx

上传人:时光煮雨 文档编号:11721792 上传时间:2021-09-01 格式:DOCX 页数:18 大小:382.83KB
返回 下载 相关 举报
C语言程序设计实验答案_数组、指针与字符串解析.docx_第1页
第1页 / 共18页
C语言程序设计实验答案_数组、指针与字符串解析.docx_第2页
第2页 / 共18页
C语言程序设计实验答案_数组、指针与字符串解析.docx_第3页
第3页 / 共18页
C语言程序设计实验答案_数组、指针与字符串解析.docx_第4页
第4页 / 共18页
C语言程序设计实验答案_数组、指针与字符串解析.docx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《C语言程序设计实验答案_数组、指针与字符串解析.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验答案_数组、指针与字符串解析.docx(18页珍藏版)》请在三一文库上搜索。

1、实验06数组、指针与字符串(4学时)(第6章 数组、指针与字符串)一、实验目的(1)学习使用数组数据对象。(2)学习字符串数据的组织和处理。(3)学习标准C+库的使用。(4)掌握指针的使用方法。(5)练习通过调试功能观察指针的内容及其所指的对象的内容。(6)练习通过动态内存分配实现动态数组,并体会指针在其中的作用。(7)分别使用字符数组和标准C+库练习处理字符串的方法。二、实验任务6_1 (习题6-25)编写并测试3刈矩阵转置函数,使用数组保存 3M矩阵。6_2 (习题6-26)使用动态内存分配生成动态数组来重新完成上题(n阶方 阵),使用指针实现函数的功能。6_3编程实现两字符串的连接。要求

2、使用字符数组保存字符串,不要使用系 统函数。186_4使用string类声明字符串对象,重新实现上一小题。6_5 (习题 6-27)声明一个 Employee类。其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display。等函数。display。显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。6_6(习题6-27)声明包含5 个元素的对象数组,每个元素都是Employee类型的对象。6_7修改实验4中的people (人员)类。具有的属性如下:姓名 char name11、编号char number7、性别ch

3、ar sex3、生日birthday 、身份证号 char id16 。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中声明 people类的对象数组,录入数据并显示。三、实验步骤1.(编程,习题6-25)编写矩阵转置函数,输入参数为 3切整型数组。使用循环语句实现矩阵元素的行列对调, 注意在循环语句中究竟需要对哪些元素进行操作,编写 main() 函数实现输入输出。程序名: lab6_1.cpp 。参考运行结果: C:VlMD0fSsy2teM32c*d. exe年3 6 9 巨

4、z s 3 14 7)t- nn 3一恁Ut 7 12 3翰入的3X3矩阵为: 12 34567 H 9弃置后的矩阵为:14 72 S 8脑装任翟健继续一程序及运行结果:/lab6_1.cpp#include using namespace std;void move( int matrix3) int temp;for (int i=0;i3;i+)for (int j=0;ji;j+) temp=matrixij; matrixij=matrixji; matrixji=temp;void main() int i,j,mat33;cout 输入 3 X3 矩阵endl;for(i=0;i

5、3;i+)cout 第i+1行:;for (j=0;jmatij;cout n 输入的 3X3 矩阵为:endl;for(i=0;i3;i+)for(j=0;j3;j+) coutmatij ;coutendl;move(mat);cout 转置后的矩阵为:endl;for(i=0;i3;i+)for(j=0;j3;j+)cout*(*(mat+i)+j);指针形式coutendl;2.(编程,习题6-26)编写nxn阶矩阵转置函数,参数为整型指针使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过调试功能观察指针的内容及其所指的对象中的内容。程序名:la

6、b6_2.cpp。注:可使用一维动态数组,或二维动态数组。程序及运行结果:(1)使用一维动态数组表示方阵。/lab6_2.cpp#include #include using namespace std;void move( int *matrix, int n) 矩阵为整型指针,对应一维数组int temp;for (int i=0;in;i+)for (int j=0;ji;j+) temp=matrixi*n+j;matrixi*n+j=matrixj*n+i;matrixj*n+i=temp;)void main()int i,j,n,*mat;coutn;mat= new intn*

7、n;cout 输入n 乂n 矩阵endl;for(i=0;in;i+)cout 第i+1行:;for (j=0;jmati*n+j;/ 数组形式)cout n输入的矩阵为:endl;for(i=0;in;i+)for(j=0;jn;j+)coutsetw(4)mati*n+j;coutendl;)move(mat,n);cout 转置后的矩阵为:endl;for(i=0;in;i+)for(j=0;jn;j+)coutsetw(4)*(mat+i*n+j); / 指针形式coutendl;)delete mat;)(2)使用二维动态数组表示方阵。(参考实验提示)京 C: 11700|syKt3

8、2eradleire刖八方冲L枢入4 M 4矩阵2G 214fs 41/lab6_2.cpp#include #include using namespace std;void move( int *matrix, int n) 矩阵为指向整型指针的指针,对应二维数组int temp;for (int i=0;in;i+)for (int j=0;ji;j+) temp=matrixij; matrixij=matrixji; matrixji=temp;void main() int i,j,n,*mat;coutn;mat= new int*n;for(i=0;in;i+) mati= n

9、ew intn;cout 输入n 乂n 矩阵endl;for(i=0;in;i+)cout 第i+1 行:;for (j=0;jmatij; / 数组形式)cout n输入的矩阵为:endl;for(i=0;in;i+)for(j=0;jn;j+)coutsetw(4)matij;coutendl;)move(mat,n);cout 转置后的矩阵为:endl;for(i=0;in;i+)for(j=0;jn;j+)coutsetw(4)*(*(mat+i)+j);/ 指针形式coutendl;)delete mat;5 C: W LNEbOTSX srysirv3?crad造“皓前人的矩降为:

10、 11 12 13 144t 42 43,置后的矩阵为11 3114 24清按任意键批典3 .(编程)实现两字符串的连接。声明字符数组保存字符串, 在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是 ASCII码0,使用循环语句进行字符串间的字符拷贝。字符串的结束标志0参考运行结果:程序及运行结果:/lab6_3.cpp#include using namespace std;void strLL( char *a, char *b, char *c); void main()int i;c

11、har a10,b10,c20;couta;cout 显示内存中的字符串a:;for(i=0;i10;i+)if(ai) coutai; /ai不为 0 elsecout 0,转义 break ;coutendl;coutb;cout 显示内存中的字符串b :;coutb 0 endl;strLL(a,b,c);cout n显示内存中的连接字符串c:for(i=0;i20;i+)if(ci) coutci;else cout 0 ; break ; coutendl; void strLL( char *a, char *b, char *c)int i,j;for(i=0;ai;i+) ci

12、=ai;循环直到 ai为 0for(j=0;bj;i+,j+) ci=bj; ci=0;4 .(编程)使用string类声明字符串对象,实现两字符串的连接在string类中已重载了运算符“ +=”实现字符串的连接,可以使用这个功能。程序名: lab6_4.cpp。程序及运行结果:/lab6_4.cpp#include 使用 C+ 中的 string#include using namespace std;void main()string s1,s2;couts1;couts2;s1+=s2;cout s1+s2 = s1endl;5.(编程,习题6-27)声明Employee类并应用在emp

13、loyee.h文件中声明 Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,都可以用字符数组来表示。成员函数:构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数strcpy(char *, char *name);display。使用cout显示姓名、街道地址、城市和邮编等属性;change_name()改变类中表示姓名属性的字符数组类型的数据成员。在主程序中声明这个类的对象并对其进行操作。程序名:lab6_5.cpp。参考运行结果:叵 C TTHBOVSXsystfrxe道雷任街城邮范山海二三西路13号 海口市570228生各至世 街道;

14、海甸三西路口号 电海口市 邮编:57B228 请按任意键继续.一程序及运行结果:lab6_5employee.h#include 使用 C 中的 string#include using namespace std;class Employeeprivate :char name10,street20,city10,mail7;/ 姓名、街道、城市、邮编public :Employee( char *n, char *s, char *c, char *m);void display。;void change_name( char *n);Employee:Employee( char *n,

15、 char *s, char *c, char *m) strcpy(name,n); strcpy(street,s); strcpy(city,c); strcpy(mail,m);void Employee:display()cout 姓名:nameendl;cout 街道:streetendl;cout 城市:cityendl;cout 邮编:mailendl;void Employee:change name(char *n) strcpy(name,n); /lab6_5.cpp #include lab6_5employee.hvoid main()Employee emp(张山

16、,海甸三西路 13 号,海口市,570228);emp.display();emp.change_name(李世);coutendl; emp.display();中 C: TlNI)OS syfitR32G(i. t?jre滁旬三四踣13号 梅口市号 .31 踏 , 西原 二市第批 世何口仰模住 电.H6 .(编程,习题6-27)使用上一小题中的Employee类声明对象数组emp5使用循环语句把数据显示出来。程序名:lab6_6.cpp。参考运行结果:请按任意键继续.程序及运行结果:/lab6_6.cpp#include lab6_5employee.h#include using nam

17、espace std; void main()Employee emp5= Employee( n1 ,s1 ,c1 ,m1),Employee( n2 ,s2 ,c2 ,m2),Employee( n3 ,s3 ,c3 ,m3),Employee( n4 ,s4 ,c4 ,m4),Employee( n5 ,s5 ,c5 ,m5) ; for(int i=0;i5;i+)empi.display();cout32d. xe日黑3alMP 张眄露号 :;日证毋编性出身日前 3 年199: 蠡8- 生份备节别生份性出身请按任意搬存后.7 .(编程)修改实验4中的people (人员)类程序名:l

18、ab6_7.cpp。参考运行结果:张山:0001性则导出生日期:19曾年3月3日身份证号t 19930303请按任意键继续.一.程序及运行结果:(1) lab6_7.h: People (人员)类的声明及成员函数的实现/lab6_7.h#include #include using namespace std;class Dateprivate :int yy,mm,dd;public : Date() Date(Date &d) : yy(d.yy),mm(d.mm),dd(d.dd) / 增添Date() int Getyy() const return yy; int Getmm() c

19、onst return mm; int Getdd()const return dd; void Setyy( int y) yy=y; void Setmm( int m) mm=m; void Setdd( int d) dd=d; ;class Peopleprivate :char name11;/ 姓名,增添char number7;编号,改为数组char sex3;男或女,改为数组Date birthday;/ 出生日期char id16;身份证号,改为数组public :People()People(People &p);People()void Getname( char na

20、) strcpy(na,name); void Getnumber( char nu) strcpy(nu,number); void Getsex( char se)strcpy(se,sex); int Getbirthyy() const return birthday.Getyy(); int Getbirthmm() const return birthday.Getmm(); int Getbirthdd() const return birthday.Getdd(); void Getid( char d) strcpy(d,id); void Setname( char na)

21、 strcpy(name,na); void Setnumber( char nu) strcpy(number ,nu); void Setsex( char se)strcpy(sex,se); void Setbirthyy( int y) birthday.Setyy(y); void Setbirthmm( int m) birthday.Setmm(m); void Setbirthdd( int d) birthday.Setdd(d); void Setid( char d) strcpy(id,d);void input();void output();;People:Peo

22、ple(People &p) :birthday(p.birthday) strcpy(name,p.name);strcpy(number ,p.number);strcpy(sex,p.sex); strcpy(id,p.id);inline void People:input()coutname;coutnumber;coutsex;coutymd;Setbirthyy(y); Setbirthmm(m); Setbirthdd(d);coutid;inline void People:output()cout 姓名:name n 编号:numberendl;cout 性另1J: sex

23、endl;cout 出生日期:Getbirthyy()年Getbirthmm() 月Getbirthdd() 日endl;cout 身份证号:idendl;(2) lab6_7.cpp :主函数(输入、输出和拷贝构造函数测试)/lab6_7.cpp#include lab6_7.hvoid main()People p;p.input();coutendl;p.output();People pp(p);coutendl;pp.output();1993 3 3, C: TTWOOS ffys-lrRB3?cmd 皓亶心(3)结果3re华a3,9 9克二9l9世1atllh日证任 名号别生忤按

24、 .病性上.斗青日团 费加 九年5i 名号别生伤日证日 3四、实验提示步骤2提小二维数组动态分配空间示例1mx n矩阵#include using namespace std; void main()int i,j,m,n,*A;coutmn;A= new int*m; /m 行for(i=0;im;i+) Ai= new int n; /n 列cout 输入m Xn 矩阵endl;for(i=0;im;i+)cout 第i+1 行:;for (j=0;jAij;/ 数组形式cout n输入的矩阵为:endl;for(i=0;im;i+)for(j=0;jn;j+) cout Aij;coutendl;脑人矩阵的左数:口源n: 2 ;二 物入2 乂眺库里1方:11 12 13第2行:21 22 23相人的矩阵为;11 12 1321 22 Z3情按任意犍继解示例2不规范的矩阵#include using namespace std;void main()int *a= new int *2;a0= new int 3;a1= new int 2;a0=11; a01=12; a2=13;a10=21; a11=22;couta00 a01 a02endl;couta10 a11 endl;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1