C++给学生习题第5章练习题(4页).doc
-C+给学生习题第5章练习题-第 4 页同步练习5.3一、选择题1有以下说明语句,则对应正确的赋值语句是( )。struct point int x; int y; p;(A)point.x = 1; point.y = 2;(B)point= 1, 2 ;(C)p.x = 1; p.y = 2;(D)p = 1, 2 ;2已知有职工情况结构变量emp定义如下,则对emp中的birth正确赋值方法是( )。struct Date int year; int month; int day;strnct Employee char name20; long code; Date birthEmployee emp;(A)year=1980; month=5; day=1;(B)birth.year=1980; birth.month=5; birth.day=1;(C)emp.year=1980; emp.month=5; emp.day=1;(D)emp.birth.year=1980; emp.birth.month=5; emp.birth.day=1;3. 有以下说明语句,则叙述正确的是( )。struct Point int x; int y;(A)正确的结构类型说明(B)正确的结构变量说明(C)错误的原因是结构中成员类型相同(D)无意义的说明4有以下说明语句,则下列错误的引用是( )。struct Worker int no;char name20;Worker w, *p &w;(A)w.no(B)p->no(C)(*p).no(D)*p.no5s1和s2是两个结构类型变量,若要使赋值s1=s2合法,则要求( )。(A)s1只接收s2中相同类型的数据成员(B)s1和s2中的数据成员个数相同(C)s1和s2是同一结构类型的变量(D)s1和s2是存储字节长度一样的变量【解答】CDADC二、程序练习1阅读程序,写出运行结果。#include <iostream>using namespace std;struct Data int n; double score;int main() Data a3 = 1001,87,1002,72,1003,90 , *p = a; cout << (p+)->n << endl; cout << (p+)->n << endl; cout << p->n+ << endl; cout << (*p).n+ << endl;【解答】2阅读程序,写出运行结果。#include <iostream>using namespace std;struct Employee char name 20 ; char sex;void fun( Employee *p ) if( (*p).sex = 'm' ) cout << (*p).name << endl;int main() Employee emp5 = "Liming", 'm', "Wangxiaoping", 'f', "Luwei", 'm' ; int i; for( i=0; i<3; i+ ) fun( emp+i );【解答】3编写程序,定义一个表示 ( x, y ) 坐标点的结构类型:struct Point int x; int y; ;main函数输入两个坐标点的值。函数:int Line(Point a, Point b);判断两点的连线是否为水平线、垂直线或斜线。【解答】#include<iostream>#include <iomanip>using namespace std;struct Pointint x;int y;int Line(Point a, Point b)if(a.x=b.x) return 1;if(a.y=b.y) return 2;return 0;int main()Point a,b;cout<<"输入第一点坐标值:n"cout<<"x = " cin>>a.x;cout<<"y = " cin>>a.y;cout<<"输入第二点坐标值:n"cout<<"x = " cin>>b.x;cout<<"y = " cin>>b.y;int t=Line(a,b);if(t=1) cout<<"这是一条水平线n"elseif(t=2) cout<<"这是一条垂直线n"else cout<<"这是一条斜线n"同步练习5.4一、选择题1有以下说明语句,则正确的赋值语句是( )。struct Point double x; double y;Point pp3;(A)pp0=0,0(B)pp.x= pp.y=1;(C)pp2->x= pp2->y=2;(D)pp2.x=3;pp2.y=32有以下说明语句,则引用形式错误的是( )。struct Student int num; double score;Student stu3=1001,80, 1002,75, 1003,91, *p=stu;(A)p->num(B)(p+).num(C)(p+)->num(D)(*p).num【解答】DB