面向对象程序设计课程作业及答案
- 格式:doc
- 大小:82.00 KB
- 文档页数:16
学习中心/函授站姓名学号西安电子科技大学网络与继续教育学院2022 学年下学期《面向对象程序设计(C++)》期末考试试题(综合大作业)考试说明:1、大作业试题公布时间:(1)毕业班:2022 年10 月21 日;(2)正常班:2022 年11 月18 日;2、考试必须独立完成,如发现抄袭、雷同均按零分计;3、答案须用《西安电子科技大学网络与继续教育学院2022 秋期末考试答题纸》(个人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;4、在线上传时间:(1)毕业班学生于2022 年10 月21 日至2022 年11 月1 日在线上传大作业答卷;(2)正常班学生于2022 年11 月18 日至2022 年12 月5 日在线上传大作业答卷;5、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4 纸),正确上传。
一、简答题(10 分)1、运算符 new 和 delete 的功能分别是什么?(3 分)答案:运算符new的功能是创建动态对象;delete的功能是释放由new创建的动态对象。
2、若派生类以 private 方式从一个基类派生,派生类的对象可以访问基类中的哪些成员?派生类的成员函数可以访问基类中的哪些成员?(3 分)答案:若派生类以private方式从一个基类派生,派生类的对象不能访问基类中的任何成员(1分);派生类的成员函数可以访问基类中的public和protected成员(2分)。
3、构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?(4 分)答案:构造函数的作用是创建对象并对其进行必要的初始化。
(1分)构造函数调用顺序:基类构造函数、子对象类构造函数(如果有)、派生类构造函数。
(2分)二、填空题(每空 2 分,共 20 分)1、函数的返回值是通过函数体中的return语句带回的;若被调用函数被定义为 void 类型,则被调用函数不带回任何值。
2、表示逻辑关系“ a 大于等于8 或者 a 小于等于5”的C++表达式是。
面向对象程序设计课后答案(完整版)第二章2-4#includeusing namespace std;Add(int a,int b);int main(){int x,y,sum;cout>x>>y;sum = add(x,y);cout >*p;p++;}p = p-20;for( i=0;i0) countp++;if(*p>age ;try{checkagescore(name,age);}catch( string){cout<<"exception :name is exit"<<endl;continue;}catch(int){cout<<"exception :age is not proper"<<endl;continue;}cout<<"name:"<<name<<" age :"< }return 0;}第三章3-1(1)A (2)C (3)B (4)C (5)C(6)B (7)B (8)C (9)C3-7(1)main()函数中p1.age = 30;语句是错误的。
age 是类的私有成员(2)构造函数应当给常数据成员和引用成员初始化,将构造函数改为:A(int a1,int b1):a(a1),b(b1){}或A(int a1 ):a(a1),b(a){}再将main中的A a(1,2); 改为A a(1);(3)(1)在Test 类中添加语句:void print();void Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}改为void Test::Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}main函数中Init(38,15);改为:A.Init(38,15);Print();改为:A.Print();3-8(1)Constructing AConstructing BDestructing BDestructing A(2)double a,double bpoint & pp.x3-9class box{int len1,len2,len3;public:box(int l1,int l2,int l3){len1 = l1;len2 = l2; len3 = l3;} long volumn(){return len1*len2*len3;}};3-10class Test{int m1,m2;public:void Init(int a,int b){m1 = a;m2 = b;}void Pring(){cout<<m1<<" "<<m2<<endl;}};3-11略3-12}第四章4-6(1)D (2)D (3)D (4)D (5)B(6)D4-7(1)static int count = 0;这样初始化静态成员值是不对的将其改为static int count;在类外,main函数前加int Sample::count = 0;(2)#include//#includeusing namespace std;class Ctest{private:int x; const int y1;public:const int y2;Ctest(int i1,int i2):y1(i1),y2(i2) {y1 =10;//y1 为常量不能赋值x = y1;}int readme() const;};int Ctest::readme ()const{int i;i = x;x++; //常函数内不能改变成员值return x;}int main(){Ctest c(2,8);int i = c.y2;c.y2 = i;//y2为常量,不能改值i = c.y1;//y1私有,类外不能访问return 0;}将出错语句全部注释4-8(1)题中印刷错误,将class C构造函数改为: C(){cout<<"constructor C:";}运行结果为:constructor Aconstructor Bconstructor C(2)40(3)3434-9#include#includeclass Date{int year;int month;int day;public:Date(int y,int m,int d){year=y;month=m;day=d;}void disp(){cout<<year<<" "<<month<<" "<<day<<endl;}friend int count_day(Date &d,int k);friend int l(int year);friend int h(Date &d1,Date &d2);};int count_day(Date &d,int k){static int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,3 1},{31,29,31,30,31,30,31,31,30,31,30,31}};// 使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年int j,i,s;if(l(d.year))j=1;//闰年,取1else j=0;//非闰年,取0if(k)//K非0时{s=d.day;for(i=1;i<d.month;i++)//d.month为输入的月份s+=day_tab[j][i-1];}else//K为0时{s=day_tab[j][d.month]-d.day;for(i=d.month+1; i<=12; i++)s+=day_tab[j][i-1];}return s;//S为相差的天数}int l(int year){if(year%4==0&&year%100!=0||year%400==0) // 是闰年return 1;else // 不是闰年return 0;}int h(Date &d1,Date &d2){int days,day1,day2,y;if(d1.year<d2.year)//第一个日期年份小于第二个日期年份{days=count_day(d1,0);for(y=d1.year+1;y<d2.year;y++)if(l(y))//闰年。
浙江大学远程教育学院《面向对象程序设计》课程作业答案第2章【】测试下面的注释(它在C++风格的单行注释中套入了类似于C的注释)是否有效。
name[3]='a'; B. name="lin";C. name=new char[5];D. cout<<name[3];【】假设已经有定义“char * const name="chen";”下面的语句中正确的是( A )。
A. name[3]='q';B. name="lin";C. name=new char[5];D. name=new char('q');【】假设已经有定义“const char * name="chen";”下面的语句中错误的是(A )。
A. name[3]='q';B. name="lin";C. name=new char[5];D. name=new char('q');【】重载函数在调用时选择的依据中,( B )是错误的。
A.函数名字 B.函数的返回类型C.参数个数 D.参数的类型【】在( A )情况下适宜采用内联函数。
A.函数代码小,频繁调用 B.函数代码多,频繁调用C.函数体含有递归语句 D. 函数体含有循环语句【】下列描述中,( C)是错误的。
A. 内联函数主要解决程序的运行效率问题B. 内联函数的定义必须出现在内联函数第一次被调用之前C. 内联函数中可以包括各种语句D. 对内联函数不可以进行异常接口声明【】在C++中,关于下列设置默认参数值的描述中,( B )是正确的。
A.不允许设置默认参数值B.在指定了默认值的参数右边,不能出现没有指定默认值的参数C.只能在函数的定义性声明中指定参数的默认值D. 设置默认参数值时,必须全部都设置【】下面的类型声明中正确是( D )。
实验一熟悉VC++IDE开发环境一、实验目的1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。
2、掌握如何编辑、编译、连接和运行一个C++程序。
3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。
二、实验要求1、分析下列程序运行的结果。
程序一:#include <iostream.h>int add(int x,int y=8);void main(){ int x=4;cout<<add(x)<<",";cout<<add(x,add(add(x,add(x))))<<endl;}int add(int x,int y){ return x+y;}//12,28程序二:#include <iostream.h>void main(){ int *p,i;i=5;p=&i;i=*p+10;cout<<"i="<<i<<endl;}//i=15程序三:#include <iostream.h>void main(void){ int i=10;int &r=i;r++;cout<<"i="<<i<<", r="<<r<<'\n';i=88;cout<<"i="<<i<<", r="<<r<<'\n';}//i=11,r=11i=88,r=88程序四:#include <iostream.h>int f(int i){ static int k=1;for(;i>0;i--)k +=i;return k;}void main(){ int i;for(i=0;i<5;i++)cout<<f(i)<<" ";}// 1 2 5 11 21程序五:#include <iostream.h>void func();int n=1;void main(){ static int a;int b= -9;cout <<"a:"<<a<<" b:"<<b<<" n:" <<n<<endl;b+=4;func();cout <<"a:"<<a<<" b:"<<b<<" n:"<<n<<endl;n+=10;func();}void func(){ static int a=2; int b=5;a+=2;n+=12;b+=5;cout <<"a:" <<a<<" b:" <<b<<" n:" <<n <<endl;}// a:0 b:-9 n:1a:4 b:10 n:13a:0 b:-5 n:13a:6 b:10 n:35实验二C++对C的扩充一、实验目的1、了解在面向对象程序设计过程中C++对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。
//////////////////////////////////////////////////////////////////////////////// Java Java ”BA.B.C.D.//////////////////////////////////////////////////////////////////////////////// Java BA.JavaB.Java Java JavaC.Java JavaD.Java//////////////////////////////////////////////////////////////////////////////// Java CA.abc_123B. PIC.falseD._123abc//////////////////////////////////////////////////////////////////////////////// Java DA.trueB.123_xyzC.x.yD._x123//////////////////////////////////////////////////////////////////////////////// Java AA.repeatB.tryC.breakD.new//////////////////////////////////////////////////////////////////////////////// BA.interfaceB.implementsC.importD.abstract//////////////////////////////////////////////////////////////////////////////// int i=80, j=7; double d=80.7; BA.i = d;B.i = (int)d + j;C.j = (int)i - d;D.i + j = (int)d;//////////////////////////////////////////////////////////////////////////////// int i=7;char ch='b'; BA.i = ch;B.ch = i;1C.ch = (char)i;D.i = (int)ch;//////////////////////////////////////////////////////////////////////////////// for Dfor (int i=0; i<=0; i=i) ;A.B.C.D.//////////////////////////////////////////////////////////////////////////////// Dint x=7, y=10;switch( x/y ) {case 0: x++;case 7: x*=y;case 14: x+=y; break;default: x%=y;}A.8B.70C.80D.90//////////////////////////////////////////////////////////////////////////////// , AA.publicB.extendsC.voidD.private//////////////////////////////////////////////////////////////////////////////// BA.B.C.D.//////////////////////////////////////////////////////////////////////////////// String DA.String str2 = “” ;B.String str1 = new String( );C.String str4 = “” + 123;D.String str3 = new String(123);//////////////////////////////////////////////////////////////////////////////// ???? myArr myMethod() myMethod(myArr,k) myArr Dint k = 7;String myArr[] = {"love", "peace", "and"};void myMethod(String a[], int m) {String temp = a[1];a[1] = a[2];2a[2] = temp;m = a[2].length();}A.{"peace", "love", "and"} 4B.{"peace", "love", "and"} 7C.{"love", "and", "peace"} 5D.{"love", "and", "peace"} 7myArr myMethod() myMethod(myArr, k) myArrint k = 7;String myArr[] = {"love", "peace", "and"};void myMethod(String a[], int m) {String temp = a[1];a[1] = a[2];a[2] = temp;m = a[2].length();}myArr {"love", "and", "peace"}7public class Test2 {static int k = 7;static String myArr[] = {"love", "peace", "and"};void myMethod(String a[], int m) {String temp = a[1];a[1] = a[2];a[2] = temp;m = a[2].length();}public static void main(String args[]) {Test2 test = new Test2();test.myMethod(myArr, k);for(int i=0; i<myArr.length; i++) {System.out.println(myArr[i]);}System.out.println(k);}}//////////////////////////////////////////////////////////////////////////////// b1 b2 b3 b4 CString s1 = “peace”;String s2 = new String(s1);String s3 = s2;String s4 = new String(“PEACE”);boolean b1 = (s1 == s2);boolean b2 = s1.equals(s2);boolean b3 = (s3 == s2);boolean b4 = s4.equals(s3);3A.true true false falseB.false true true trueC.false true true falseD.false true false false//////////////////////////////////////////////////////////////////////////////// DA.BoxLayoutB.FlowLayoutC.CardLayoutD.BorderLayout//////////////////////////////////////////////////////////////////////////////// Swing BA.JApplet JPanel JWindowB.JDialog JApplet JFrameC.JApplet JFrame, JMenuD.JFrame JPanel JTextArea//////////////////////////////////////////////////////////////////////////////// Java Applet AA.java.applet.Applet JavaB.JavaC.Java main()D.Java ActionListener//////////////////////////////////////////////////////////////////////////////// CA.B.C.D.////////////////////////////////////////////////////////////////////////////////public class Test1 {public int method(int n) {int result = 1;for(int i = 1; i <= n; i++) {result *= n;}return result;}public static void main(String args[]) {Test1 test = new Test1( );int sum = 0 ;for (int i = 1; i <= 3; i++)sum += test.method(i) ;System.out.println("sum = " + sum);}}sum = 324////////////////////////////////////////////////////////////////////////////////public class Test1 {public int method(int n) {int result = 1;for (int i=1; i<=n; i++) {result *= i;}return result;}public static void main(String args[]{Test1 test =new Test1( );int sum[] = new int[6];for (int i=1; i<=5; i++) {sum[i] = test.method(i) ;System.out.print(sum[i] + " ");}}}1 2 6 24 120////////////////////////////////////////////////////////////////////////////////public class Test2 {public static char method(char ch) {if((ch>='A') && (ch<='Z'))return (char)(ch + 32);else return ch;}public static void main(String[] args) {String s= "0123456789ABCDEF",s1="";for (int i=s.length()-1; i>=0; i--)s1 = s1 + method(s.charAt(i));System.out.println(s1);}}fedcba9876543210////////////////////////////////////////////////////////////////////////////////public class Test2 {public String method(String s) {StringBuffer result = new StringBuffer();for (int k = s.length() - 1; k >= 0; k--) {result.append(s.charAt(k));}return result.toString();}public static void main(String args[]) {Test2 test = new Test2();String str = "peace";System.out.println(test.method(str));}}5ecaep////////////////////////////////////////////////////////////////////////////////Test3 SuperTestsuper thisclass SuperTest {public int age ;public SuperTest( String s ) {System.out.println("Hi, I am " + s);age = 35;}}public class Test3 extends SuperTest {public int age;public Test3 ( String s ) {super( s );System.out.println("Nice to meet you!");age = 7;}public void print() {System.out.println( "Age is " + age );System.out.println( "My age is " + this.age );System.out.println( "My parent's age is " + super.age );}public static void main( String args[ ] ) {Test3 test = new Test3(“Olive”);test.print();}}Test3 SuperTest SuperTest Test3super thisHi, I am OliveNice to meet you!Age is 7My age is 7My parent’s age is 35////////////////////////////////////////////////////////////////////////////////Child Parentsuper thisclass Parent {public void printMe( ) {System.out.println("parent");}6}class Child extends Parent {public void printMe( ) {System.out.println("child");}public void printAll( ) {super.printMe( );this.printMe( );}}public class Test3 {public static void main(String args[ ]) {Child myC = new Child( );myC.printAll( );}}Child Parent Parent Childsuper ;thisparentchild////////////////////////////////////////////////////////////////////////////////tryDataOutputStream DataInputStreamout.txt out.txtimport java.io.* ;public class Test4 {public static void main( String args[ ]) {try {DataOutputStream dout = new DataOutputStream(new FileOutputStream(“out.txt”));for(int i = 0; i < 10; i++)dout.writeInt( ‘0’ + i);dout.close( );DataInputStream din = new DataInputStream(new FileInputStream(“out.txt”));for(int i = 0; i < 10; i++)System.out.print( din.readInt( ) - ‘0’ + ”, ” );din.close( );} catch ( IOException e ) {System.err.println( “ ” + e );e.printStackTrace( );}}}7new FileOutputStream(“out.txt”)dout.writeInt( ‘0’ + i);dout.close( );new FileInputStream(“out.txt”)din.readInt( )din.close( );out.txt 0 1 2 3 4 5 6 7 8 9////////////////////////////////////////////////////////////////////////////////Java JavaActionListener ActionListenerimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class Test4 extends JApplet implements ActionListener{private Container cp = getContentPane();;private JLabel prompt = new JLabel(" ");private JButton start = new JButton(" ");private JTextField output = new JTextField(20);public void init( ){cp.setLayout(new FlowLayout());cp.add(start);cp.add(prompt);cp.add(output);output.setEditable(false);start.addActionListener(this);}public void actionPerformed(ActionEvent e){if ((JButton)e.getSource( ) == start )output.setText(" ");}}Java Java Java application Java Java applet ; JavaJLabel JButton JTextField ;ActionListener ; actionPerformed() ActionListener ; applet//////////////////////////////////////////////////////////////////////////////// 61 100 “score.txt”8import java.io.DataOutputStream;import java.io.FileOutputStream;import java.io.IOException;public class TestSort {public static int MAXSIZE = 61;//public static void sortInt(int[] arr) {// for(int i=0; i<arr.length-1; i++) {int k = i;for(int j=i+1; j<arr.length; j++)if (arr[j] < arr[k]) k = j;//if (k>i) {//arr[i] = arr[i] + arr[k];arr[k] = arr[i] - arr[k];arr[i] = arr[i] - arr[k];}}}public static void main(String args[]) {int score[] = new int[MAXSIZE];// try-catchtry {for (int i = 0; i < MAXSIZE; i++)score[i] = (int)(Math.random() * 100 + 0.5); //sortInt(score);//DataOutputStream dout = new DataOutputStream(newFileOutputStream("score.txt"));for(int i=0; i < MAXSIZE; i++) {dout.writeInt(score[i]);System.out.println(score[i]);}dout.close( );} catch(IOException e) {System.err.println(" " + e);e.printStackTrace( );}}}////////////////////////////////////////////////////////////////////////////////(5,10) 15(0,0) 15//9interface Shapes {abstract double getArea();abstract double getPerimeter();}// Squareclass Square implements Shapes {public int x, y;public int width, height;public double getArea() {return (width * height);}public double getPerimeter() {return (2 * width + 2 * height);}public Square(int x, int y, int width, int height) {this.x = x;this.y = y;this.width = width;this.height = height;}}// Circleclass Circle implements Shapes {public int x, y;public double radius;public double getArea() {return (radius * radius * Math.PI);}public double getPerimeter() {return (2 * Math.PI * radius);}public Circle(int x, int y, double r) {this.x = x;this.y = y;this.radius = r;}}//public class TestShape {public static void main(String[] args) {Shapes s1 = new Square(5, 10, 15, 15);Shapes s2 = new Circle(0, 0, 6.0);System.out.println(" : " + s1.getArea());System.out.println(" : " + s1.getPerimeter());System.out.println(" : " + s2.getArea());System.out.println(" : " + s2.getPerimeter());}}//////////////////////////////////////////////////////////////////////////////// "peace&love" Application Applet10public class PeaceLove {public static void main(String[] args) {System.out.println("peace&love");}}import java.applet.Applet;import java.awt.Graphics;public class PeaceLoveApplet extends Applet {public void paint(Graphics g) {g.drawString("peace&love", 10, 10);}}//////////////////////////////////////////////////////////////////////////////// Java Applet “abc123XYZ”, “zyx321CBA”// importimport java.awt.*;import java.awt.event.*;import java.applet.*;public class StringApplet extends Applet implements ActionListener { // //private Label prompt = new Label("Input a String and <ENTER> or Press the Button");private TextField input = new TextField(15);private TextArea display = new TextArea(15, 50);private Button convert = new Button("Convert!");// init()public void init() {input.addActionListener(this);convert.addActionListener(this);display.setEditable(false);add(prompt);add(input);add(convert);add(display);}//public String convert(String str) {StringBuffer resultStr = new StringBuffer();char ch;for (int i = str.length() - 1; i >= 0; i--) {ch = str.charAt(i);if ((ch >= 'A') && (ch <= 'Z'))//resultStr.append((char) (ch + 32));else if ((ch >= 'a') && (ch <= 'z'))//11resultStr.append((char) (ch - 32));elseresultStr.append(ch);}return resultStr.toString();}// actionPerformed()public void actionPerformed(ActionEvent e) {display.append(convert(input.getText()) + "\n");}}Java Application “abc123XYZ”, “zyx321CBA” // importimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class StringConvert extends JFrame implements ActionListener { //private JTextField input = new JTextField(15);private JButton convert = new JButton(" <-> + ");private JTextField display = new JTextField(15);//public StringConvert () {Container c = getContentPane();c.setLayout(new FlowLayout());c.add(input);c.add(convert);c.add(display);convert.addActionListener(this);}//public void actionPerformed(ActionEvent e) {display.setText(convert(input.getText()) + "\n");}//public String convert(String str) {StringBuffer resultStr = new StringBuffer();char ch;for (int i = str.length() - 1; i >= 0; i--) {ch = str.charAt(i);if ((ch >= 'A') && (ch <= 'Z'))//resultStr.append((char) (ch + 32));else if ((ch >= 'a') && (ch <= 'z'))//resultStr.append((char) (ch - 32));12elseresultStr.append(ch);}return resultStr.toString();}//public static void main(String args[ ]) {StringConvert f =new StringConvert();f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setSize(640, 160);f.setVisible(true);}}//////////////////////////////////////////////////////////////////////////////// “=”// importimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class Multiply extends JFrame implements ActionListener {//private JButton operator = new JButton(" * ");private JTextField input1 = new JTextField(5);private JTextField input2 = new JTextField(5);private JButton equal = new JButton(" = ");private JTextField result = new JTextField(5);//public Multiply () {Container c = getContentPane();c.setLayout(new FlowLayout());c.add(input1);c.add(operator);c.add(input2);c.add(equal);c.add(result);equal.addActionListener(this);}//public void actionPerformed(ActionEvent e) {double operand1 = Double.valueOf(input1.getText()).doubleValue();double operand2 = Double.valueOf(input2.getText()).doubleValue();result.setText(String.valueOf(operand1*operand2));}//public static void main(String args[ ]) {13Multiply f = new Multiply();f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setSize(320, 80);f.setVisible(true);}}////////////////////////////////////////////////////////////////////////////////class SuperClass {int data;SuperClass() {System.out.println("SuperClass::constructor: data=" + data);add(1);System.out.println("SuperClass::constructor: data=" + data);}public void add(int i) {data += i;}public void print() {System.out.println(data);}}class SubClass extends SuperClass {SubClass() {System.out.println("SubClass::constructor: data=" + data);add(2);System.out.println("SubClass::constructor: data=" + data);}public void add(int i) {data += i*2;}}class Test {public static void method(SuperClass a) {a.add(6);a.print();}public static void main(String[] args) {method(new SubClass());}}SuperClass::constructor: data=0SuperClass::constructor: data=2SubClass::constructor: data=2SubClass::constructor: data=6181415。
面向对象程序设计一、选择填空1.关于C++与C语言的关系描述中,(D)是错误的.(A)C语言是C++的一个子集(B)C语言与C++是兼容的(C)C++对C语言进行了一些改进(D)C++和C语言都是面向对象的2.下面关于对象概念的描述中,(B)是错误的。
(A)对象就是C语言的结构变量(B)对象代表着正在创建的系统中的一个实体(C)对象是一个状态的操作(或方法)的封装体(D)对象之间的信息传递是通过消息进行的3.下面关于类概念的描述中,(D)是错误的。
(A)类是抽象数据类型的实现(B)类是具有共同行为的若干对象的统一描述体(C)类是创建对象的样板(D)类就是C语言的结构类型4.按照标识符的要求,(A)符号不能组成标识符。
(A)连接符(B)下划线(C)大小写字母(D)数字字符5.下列符号中,(C)不可作为分隔符。
(A),(B):(C)?(D);6.在16位机中,int型字宽为(A)字节.(A)2(B)4(C)6(D)87.类型修饰符unsigned修饰(D)类型是错误的。
(A)char(B)int (C)long int(D)float8.对于int *pa[5];的描述,(D)是正确的.(A)pa是一个指向数组的指针,所指向的数组是5个int型元素(B)pa是一个指向某数组中第5个元素的指针,该元素是int变量(C)pa[5]表示某个数组的第5个元素(D)pa是一个具有5个元素的指针数组,每个元素是一个int型指针。
9.下列关于指针的运算中,(D)是非法的。
(A)两个指针在一定条件下,可以进行相等或不等的运算。
(B)可以有一个空指针赋值给某个指针.(C)一个指针可以加上一个整数。
(D)两个指针在一定条件下,可以相加.10.指针可以用来表示数组元素,下列表示中(A)是错误的。
已知:int a[3][7];(A)*(a+1)[5] (B)*(*a+3)(C)*(*(a+1))(D)*(&a[0][0]+2)11.下列表示引用的方法中,(A)是正确的。
课后作业第一章Java语言基础知识1.程序设计语言发展的历程答案:机器语言、汇编语言、高级语言、面向对象的语言2.面向对象语言的基本特征答案:抽象和封装、继承性、多态性3.Java语言的特点答案:java语言是一种卓越的程序设计语言,它具有以下特点。
1.面向对象2.简单性3.可移植性4.稳定性和安全性5.高性能6.分布性4. 为什么Java语言是跨平台的?答案:因为Java程序的最终实现需要经过编译和解释两个步骤,Java语言的编译器生成可执行的字节码,这种代码是由Java虚拟机生成的,它与任何硬件平台无关。
当生成字节码后,再使用Java解释器来执行字节码,这也就意味着只要有安装Java解释器的机器Java程序都可以运行,所以它是跨平台的面向对象的程序设计语言。
5. Java2的SDK是什么?答:Java2的SDK指Software Development Kit 软件开发工具集6. Java开发工具中的javac.exe和java.exe的功能是什么?答案:Javac.exe是Java编译器,用来将java程序编译成字节码。
Java.exe是Java解释器,执行已经转换成Bytecode的java应用程序。
7. Java集成开发环境有哪些?答案:Java集成开发环境主要有:Eclipse、netBeans、Jcreator LE、BorlandJbuilder、Microsoft Visual J++、IBM : Visual Age for Java、Sun ONE Studio 8.Java程序编译执行的过程答案:Java语言源程序的变异过程主要进行两件工作:1.通过编译程序检查Java源程序中是否有语法错误,如果发现错误,便报告已发现的错误,修改后再编译,直到未发现错误时才生成字节码文件。
2.通过编译来引入Java类库中已编好的模块,为了方便编程,Java类库中有若干个包,每个包中有若干个模块,每个模块是一个具有某种功能的类,它们都是字节码形式的程序。
1 《面向对象程序设计》课程作业及答案 中央电大理工部计算机教研室
作业1: 是非题 1. 头文件中一般存放着变量和常量的定义、函数的原型以及类的定义。1. 错 2. 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。4. 对 填空题 下面是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数组各元素的和,并输出结果。函数sum计算数组元素之和。填充程序中不完整的部分。 ________A__________ int sum(int [],int);
void main() { int ia[5] = {2,3,6,8,10}; B ;
sumOfArray = sum(ia,5); cout << "Sum of array:" << sumOfArray << endl; }
int sum(int array[],int len) { int iSum = 0; for(int i = 0; C ; D ) E ; return iSum; }
答案: A #include B int sumOfArray; C i < len D i++ E iSum += array[i]; 阅读理解题 写出下列程序的运行结果: //file1.cpp static int i = 20; int x; static int g(int p) { return i + p; } void f(int v) { 2
x=g(v); }
//file2.cpp #include extern int x; void f(int); void main() { int i=5; f(i); cout << x; } 回答以下问题: 1. 程序的运行结果是什么样的? 2. 为什么文件file2.cpp中要包含头文件? 3. 在函数main()中是否可以直接调用函数g()?为什么? 4. 如果把文件file1.cpp中的两个函数定义的位置换一下,程序是否正确?为什么? 5. 文件file1.cpp和file2.cpp中的变量i的作用域分别是怎样的?在程序中直接标出两个变量各自的作用域。 答案: 1. 程序的运行结果:25 因为程序中需要利用cout对象进行输出,而cout是在C++标准I/O库iostream中定义的类ostream的一个对象。 2 在函数main()中不可以直接调用函数g(),因为g()是静态函数,只在它所在的文件内可见。 3 如果把文件file1.cpp中的两个函数定义的位置换一下,程序不正确,因为C++规定所有使用的变量和函数需要先声明,后使用。在函数f中用到了函数g,所以函数f不能出现在函数g的定义或声明之前。 文件file1.cpp中的变量i的作用域从它的定义开始到文件结束。File2.cpp中的变量i的作用域从它的定义开始到main函数结束。 编程题 写一个函数,完成在链表末尾增加一个节点的操作。函数的原型为: Node * AddNode(Node * & head, int newData); 其中,链表节点的定义如下: struct Node { int data; //存放数据 Node * next; //指向链表中的下一个节点 }; 函数参数:函数的第一个参数head指向链表的第一个节点,如果链表为空,则head的值为NULL。第二个参数newData为要插入的新节点中存放的数据。 函数返回值:当成功地插入新的节点时,函数返回指向新节点的指针,否则,如果不能申请到内存空间,则返回NULL。
Node * AddNode(Node *& head, int newData) { //在这里写出函数的实现 3
} 答案: Node * AddNode(Node * &head, int newData) { //申请新的节点空间 Node * newNode = new Node; if (newNode == NULL) return NULL; //填充新节点的内容 newNode->data = newData; newNode->next = NULL; //插入到链表的结尾 if (head == NULL) head = newNode; else { //寻找链表的最后一个节点 Node *tail = head; while(tail->next != NULL) tail = tail->next; //将新节点插入到最后 tail->next = newNode; } return newNode; }
作业2: 是非题 1. 在不同作用域中的变量可以同名。对 2. 派生类的成员函数可以直接访问基类的所有成员。2. 错 填空题 #include ___________A_____________; void main() { int a[6]={2,4,8,6,9,14}; int x1=____B______; //调用f1函数求出a中前4各元素之和。 int x2=f1(a,6); cout< } int f1(int a[], int n) { int i,s=0; for(i=0;i4
return s; } 答案: A int f1(int a[], int n); B f1(a,4) 改错题 1. 下面的函数将浮点型指针参数para所指向的值赋给一个局部指针变量pFloat所指向的空间,然后输出*pFloat的值。 #include void func(float * para) { float * pFloat; pFloat = para; cout << pFloat; }
错误为:______________________________________________________ 改正方法为:__________________________________________________ ______________________________________________________________
答案 错误为:没有给指针申请空间,就直接赋值 改正的方法为:先为pFloat申请空间,再赋值。
2. 下列程序片段对二维数组的每个元素赋值 unsigned short SomeArray[5][4]; for (int i = 1; i<=5; i++) for (int j = 1; j<=4; j++) SomeArray[i][j] = i+j;
错误为:______________________________________________________ 改正方法为:__________________________________________________ ______________________________________________________________ 答案 错误为:访问数组元素的下标不对 改正的方法为: 将两个for循环的循环初始值改为0,循环结束条件分别改为i<5和j<4。
编程题
写一个函数,找出给定字符串中小写字母字符的个数。函数的原型为:
int CalcAlpha(char *str); 函数参数: str为所要处理的字符串; 函数返回值:所给字符串中小写字母字符的个数 5
int CalcAlpha(char *str) { //在这里写上程序的实现
}
答案: int CalcAlpha(char *str) { //判断字符指针是否为空 if(str == NULL) return 0; //记录小写字母字符个数的变量 int num=0; //依次检查各个字符,如果是小写字母,则总数加1 for(int i=0; str[i]!=0x0; i++) if(str[i])>='a' && str[i]<='z') num++; //返回数字字符个数 return num; }
作业3: 是非题 1. 函数的参数和返回值类型可以是简单数据类型,也可以是指针、引用、数组和类。3. 错 2. 如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。5. 对 填空题 #include ________A___________; int f2(int* a, int n) { ______ B___________; for(i=1;i if(max return max; } void main() { int b[MM]={3,12,6,20,9,7,34,50,25,66}; _______C__________; //求出b[4]至b[8] 之间的最大值并赋给x1 _______D___________; //求出b[0]至b[5] 之间的最大值并赋给x2 cout<