2022年电大形成性考核册c第三次作业及答案.docx
精选学习资料 - - - - - - - - - 运算机应用专业 “ C+ 语言程序设计 ” 课程作业第三次作业一、填空题1 假定 p 所指对象的值为 28 ,p+1 所指对象的值为 62 ,就 * p + + 的值为 28 ;2 假定 p 所指对象的值为 28 ,p+1 所指对象的值为 62 ,就 * + + p 的值为 62 ;3 假定 p 所指对象的值为 25 ,p+1 所指对象的值为 50 ,就执行 “( *p )+ + ;”语句后, p 所指对象的值为 26 ;4 假定 p 所指对象的值为 25 ,p+1 所指对象的值为 50 ,就执行 “ *(p+ + ); ”语句后, p 所指对象的值为 50 ;5 假定 a 是一个指针数组,就 a+i 所指对象的地址比 a 地址大 未知 字节;6 假定 a 是一个一维数组,就 ai 的指针拜访方式为 *a+i;7 假定 a 是一个二维数组,就 ai j 的指针拜访方式为 *a+i+j;8 假 定 a 是 一 个 一 维 数 组 , 就 ai 对 应 的 存 储 地 址 ( 以 字 节 为 单 位 ) 为 char *a+i*sizeofa0;9 假定一个二维数组为 aM N,就 ai j 对应的储备地址(以字节为单位)为 char *a+i*N+j*sizeofa00;10 假 定 一 个 二 维 数 组 aM N , 就 ai 的 地 址 值 ( 以 字 节 为 单 位 ) 为 char *a+i*N*sizeofa00;11 假定 p 是一个指向 float 型数据的指针,就 p+1 所指数据的地址比 p 所指数据的地址大 4 字节;12 假定 a 为一个字符数组名,就元素 a8 的字节地址为 8 ;13 假定 a 为一个整型数组名,就元素 a4 的字节地址为 16 ;14 假定一个结构类型的定义为“struct A int a,b ;short c; A*d ; ” ,就该类型的大小为 14 字节;15 假定一个结构类型的定义为“struct Bint a8 ;char* b ; ” ,就该类型的大小为 36 字节;16 假定一个结构类型的定义为“struct D int a ; union int b ; double c ;D*d3; ”,就该类型的大小为 24 字节;17 假定要动态安排一个类型为 Worker 的具有 n 个元素的数组,并由 r 指向这个动态数组,就使用的语句为 r=new Workern;18 假定要拜访一个结构 x 中的由 a 指针成员所指向的对象,就表示方法为 *x.a;19 假定要拜访一个结构指针 p 所指对象中的 b 指针成员所指的对象,就表示方法为*p->b;二、给出以下程序运行后的输出结果以下结果中空格以 表示1 include<iomanip.h> void main();int a8=7,9,11,13,3,8,15,171 / 7 名师归纳总结 - - - - - - -第 1 页,共 7 页精选学习资料 - - - - - - - - - int *p = a;for (int i =0;i<8 ;i + +)cout<<setw(5 )<< * p + +;if ( i +1 )%4 = =0)cout<<endl; 7 9 11 13 3 8 15 17 2 include<iomanip.h> void main()int a5=3,6,15,7,20;int *p = a;for (int i = 0; i<5 ;i + +)cout<<setw(5 )<< * p + +;cout<<endl;for ( i =0 ;i<5 ;i + +)cout<<setw(5 )<< * p ;cout<<endl; 3 6 15 7 20 20 7 15 6 3 3 include<iomanip.h> void main()int a8 =4,8,12,16,20,24,28,32;int *p = a;do cout<< *p << ;p + =3;);while (p<a+8cout<<endl;4 16 28 4 include<iomanip.h> void main() << y <<endl;int x =20,y =40, * p;p =&x;cout<< * p<< ;* p= x +10;p =&y;cout<< * p<<endl;* p = y +20;cout<< x << 20 40 30 60 5 include<iomanip.h> int LA (int * a,int n)2 / 7 名师归纳总结 - - - - - - -第 2 页,共 7 页精选学习资料 - - - - - - - - - int s = 0;for (int i =0;i<n ;i + +)s + = ai;return s;void main(); << b +2 * c< <endl ;int a =5,10,15,20,25,30int b =LA( a,5 );int c =LA(a+3,2);cout<< b << << c << 75 45 165 6 include<iomanip.h> void LC (int a,int b;) << b <<endl;int x = a;a = b;b = xcout<< a << void main() << y <<endl;int x =15,y =36;LC( x,y ); cout<< x << 36 15 15 36 7 include<iomanip.h> void LF (int & x, int y)”,y =”<< y <<endl;x = x + y;<< x <<y = x + y;cout<<”x = ”void main()<< x <<”,y =”<< y <<endl;int x =5,y =8;cout<<”x = ”LF(x,y );cout<<”x = ”<< x <<”,y =”<< y <<endl;x=5,y=8 x=13,y=21 x=13,y=8 8 include<iomanip.h> void LG(int * & a, int & m)a = new intm;int * p = a;for (int i = 0; i<m ;i + +)3 / 7 名师归纳总结 - - - - - - -第 3 页,共 7 页精选学习资料 - - - - - - - - - * p + + =2 * i +1;void main()int * p, n =5;LG( p,n );for ( int i = 0;i<n ; i + +)cout<< pi<< ;cout<<endl;delete p;1 3 5 7 9 9 include<iomanip.h> void LH(int * a, int n)int * p = a + n1;whlie (a<p )int x = * a;* a = * p;* p = x;a + +;p ;void main()int * d = new int5;int i ;for ( i = 0 ; i<5 ;i + +);di=2 * i +3;cout<<setw(5 )<<di<< cout<<endl;LH( d,5 );for ( i = 0 ; i<5 ;i + +);cout<<setw(5 )<<di<< cout<<endl;delete d 3 5 7 9 11 11 9 7 5 3 10 include<iostream.h> struct Workerchar name15;/ / 姓名int age;/ / 年龄float pay;/ / 工资;4 / 7 名师归纳总结 - - - - - - -第 4 页,共 7 页精选学习资料 - - - - - - - - - void main()10<<endlWorker x = ”weirong”,55,640;p >payWorker y, * p; <<y. age<< pay<<endly = x;p =&x;cout<< y. name<< cout<< p >name<< << p >age+5<< << ;weirong 55 640 weirong 60 630 11 include<iostream.h> include<string.h> struct Workerchar name15;/ / 姓名int age;/ / 年龄float pay;/ / 工资;void main()” <<x. age<< <<x. pay<<endlWorker x;char * t =”liouting;int d =46;float f =725;strcpy ( x. name, t);x. age = d;x. pay = fcout<< x. name<< liouting 46 725 三、写出以下每个函数的功能1 include<iostream.h> void LI(int n );( p) << ;int * a = new intn, * p = a + n;for (int i =0;i<n ; i + +)cin>> aifor (i = n1 ;i> =0;i ) cout<< *cout<< n ;delete a;输入 n 个数并以相反的次序显示出来;2 include<iostream.h> void LK (int a , int n, int * & b, int& m)float s =0;int i ;for (i =0 ;i<n ;i + +)s + = ai;s/= n;m = 0;for ( i =0 ;i<n ;i + +)5 / 7 名师归纳总结 - - - - - - -第 5 页,共 7 页精选学习资料 - - - - - - - - - if (ai> = s)m + +;b = new intm;int * p = b;for ( i =0 ;i<n ;i + +)if (ai> = s)* p + + = ai;将数组 a 中大于平均数的元素存放到动态申请的数组3 / /struct Worker/ / char name15;/ / 姓名/ / int age;/ / 年龄/ / float pay;/ / 工资/ / ;b 中,数组 b 的大小由 m 返回;istream & operator>>(istream& istr,Worker& x)<<endl ;cout<<” 请输入一个职工记录:姓名、年龄、工资”istr>> x. name>> x. age>> x. pay;return istr;重载 istream 的>> 操作符以输入 Worker 结构对象;4 / / struct StrNode/ / char name15;/ / 字符串域/ / StrNode * next;/ / 指针域/ / ;void QB(StrNode * & f, int n);if (n = = 0) f =NULL;returnf =new StrNode;cin>>f>name;StrNode * p = f;whlie ( n)p = p>next= new StrNode;cin>>p >name;p>next=NULL;创建有 n 个结点的 StrNode类型的链表,并从键盘输入每个结点的name值;5 / / struct StrNode char name15;StrNode * next;void QC (StrNode * f)whlie (f )cout<< f>name<< ;f = f >next;遍历链表并输出全部结点的name数据成员6 / 7 名师归纳总结 - - - - - - -第 6 页,共 7 页精选学习资料 - - - - - - - - - 7 / 7 名师归纳总结 - - - - - - -第 7 页,共 7 页