面向对象程序设计(C++)自我测试练习参考答案

更新时间:2023-09-14 19:49:01 阅读量: 初中教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《面向对象程序设计(C++)(第二版)》自我测试练习参考答案

(主编:王明福)

第1章 初识C语言

一、简答题

1. 面向对象方法是如何产生和发展的。

2. C++语言有何特点,它对C语言有哪些发展。

3. C++程序中的注释有什么作用?如何使用C++中的两种注释方法?

二、填空题

1.C++语言程序的三大区域从上到下分别是(声明部分)、(主函数部分)和(函数定义部分)。

2.每一条执行语句都是以( 分号“;” )结尾。 3.引用头文件使用(#include)指令。

三、编程题

1. 请用Visual C++6.0开发工具,在工程“HelloWorld”中,添加一个C++程序,输出以下信息。

*********************************************

Hello,World!

********************************************* #include void main() { cout<<\ cout<<\ cout<<\}

2. 在工程“HelloWorld”中(见题1),编制一个名为MyFirst的程序,该程序在计算机显示器上输出以下文字:

① 喂,你好!

② 你真聪明,你已经会用VC++编写程序了! #include void main() {

cout<<\喂,你好!\\n\

cout<<\你真聪明,你已经会用VC++编写程序了!\\n\}

3.在工程“HelloWorld”中(见题1),编制一个名为MyAdd的程序,该程序要求由用户输入2个整数,然后将和数输出。

第2章 数据类型、运算符和表达式

一、单选题

1.下列合法的标识符是( D ) 。

A. char B. a$ C. a-9 D. x_y 2. C++语言规定,程序中用到的变量一定要( A )。

A. 先定义后使用 B. 先使用后定义 C. 使用时再定义 D. 前面3种都行 3.下列字符串中,合法的字符常量是( B )。

A. n B. ‘\\n’ C. 110 D. “n” 4. C++程序中,运算对象必须为整数的运算符是( C )。

A. * B. / C. % D. ++ 5. int k = x>y?(x>z?x:z):(y>z?y:z)语句的目的是( A )。 A. 求x,y,z最大值 B. 求x,y,z最小值 C. 求x,y,z中间值 D. 求x,y,z平均值

二、填空题

1. 写出下面各表达式的值(假设a=1,b=2,c=3,x=4,y=3)。

(1) !a

(2) a||1+‘a’&&b&&‘c’ ( 1 )

2.写出下面程序的运行结果是( aabb abc )。 #include

main()

{ char c1=‘a',c2=‘b',c3=‘c',c4=‘\\101',c5=‘\\116';

printf(\printf(\}

3. 写出下面程序的运行结果是( x=11,y=21,m=10,n=21

x=10,y=20,m=11,n=20)。

#include void main() {

int x = 10, y = 20 ,m,n;

m = x++; n = ++y;

cout<<\m = x--; n = --y;

cout<<\}

4. 假设 a=12,表达式a%=(5%2)中a的运算结果是( 0 )。

三、编程题

1. 编程求C语言表达式4a+5b的值,假设a = 3,b=1.5。 #include \void main()

2

3

{

int a = 3; double b=1.5;

cout<<4*a*a+5*b*b*b<

2. 假设 a=10, 编程求表达式a+=a-=a*=a中a的运算结果。 #include void main() {

int a=10; a+=a-=a*=a;

cout<<\}

3.计算表达式的值

int x=1,y=2,z=-2;

(1) (x+3)>4 (2) x&&y>=z (3) x+y||z (4) x||y>z #include \void main() {

int x=1,y=2,z=-2; int a,b,c,d; a = (x+3)>4; b = x&&y>=z; c = x+y||z; d = x||y>z;

cout<<\ cout<<\ cout<<\ cout<<\}

4. 从键盘输入三角形的三个边长a,b,c,求出三角形的面积。求三角形的面积用公式:area= sqrt(s*(s-a)*(s-b)*(s-c)),其中s=1/2(a+b+c)。 #include #include void main() {

double a,b,c,area,s; cout<<\请输入三个边长a,b,c:\ cin>>a>>b>>c; s=(a+b+c)/2.0; area= sqrt(s*(s-a)*(s-b)*(s-c)); cout<<\

}

第3章 控制结构

一、单选题

1. 下面程序段运行结果是( C )。 int iNum = 0; while( iNum <= 2) cout<

A. 2 B. 3 C. 死循环,无限个0 D. 有语法错误 2. 以下是if语句的基本形式: if (表达式)语句; 其中“表达式”( D )。

A.必须是逻辑表达式 B. 必须是关系表达式

C. 必须是逻辑表达式或关系表达式 D. 可以是任意合法的表达式 3. 以下循环语句执行次数是( C )。 int i = 1;

for( ; i == 0; )cout<

A. 2次 B. 1次 C. 0次 D. 无限次 4. 以下正确的描述是( B )。

A. continue语句的作用是结束整个循环的执行

B. 只能在循环体内和switch语句体内使用break语句 C. 在循环体内使用break语句或continue语句的作用相同 D. 从多层循环嵌套中退出时,只能使用goto语句 5. 与while( E )不等价的是( C )。

A. while( !E == 0) B. while(E>0 || E<0 ) C. while( E == 0) D. while(E != 0)

二、填空题

1. 以下程序的功能是计算s = 1+12+123+1234+12345,请填空。 void main() {

int t = 0,iSum = 0,i; for(i =1;i<6;i++) {

t = i+ ( t*10 ); iSum = iSum + t; }

( cout<

2. 以下程序的功能是输出100以内能被3整除且个位数为6的所有整数,请填空。 void main() {

int i,j;

for(i=0;i<10;i++)

{

j = i*10 + 6;

if( j%3 )continue; cout<

3.下面程序的输出结果是( 0 2 )。 #include

void main() { int i,j;

i = j = 2; if(i == 2)

if(i == 1)cout<

4. 下面程序的输出结果是( 5 )。 #include \

void main() { }

int x = 2; switch(x) { }

case 1: case 2: x++; case 3: x += 2; case 4: cout<

三、编程题

1. 编程统计全班学生成绩。要求每次用键盘输入一个学生的2门分数,计算输出每个学生的总分和平均分,此外,如果平均分大于等于85,为优秀,60~85为通过。统计出成绩优秀的学生和及格的学生人数。

#include #define N 4 void main()

{ int x,y,sum,a85=0,a60=0,i; float av;

for(i=0;i

{ cout<<\输入成绩:\ cin>>x>>y; sum = x+y; av = sum/2.0; if(av>=85)a85++;

if(av>=60&&av<85)a60++;

}

cout<<\优秀的学生=\及格的学生人数=\}

2. 一个数如果恰好等于他的因子之和,这个数就称为“完全数”。例如6的因子是1,2,3, 而6=1+2+3。因此6是一个完全数。编程序找出1000之内的所有完全数。

#include void main() {

int i,j,x;

for(i=1;i<1000;i++) {

for(j=1,x=0;j<=i/2;j++) if(i%j==0) x+= j; if(i == x)cout<

3. 打印出所有的“水仙花数”、所谓“水仙花数。是指一个3位数,其各位数字立方和等于

333

该数本身。例如,153是一水仙花数,因为153=1+5+3。 #include void main() { int i,a1,a2,a3,x; for(i=100;i<1000;i++) { a1 = i; a2 = i0/10; a3 = i/100; x = a1*a1*a1+a2*a2*a2+a3*a3*a3; if(i == x)cout<

4. 下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。

赛软件 * 比赛 = 软件比拼

试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。 #include void main() {

long a1,a2,a3,a4,a5; long x,y;

for(a1=1;a1<10;a1++) for(a2=1;a2<10;a2++)

for(a3=0;a3<10;a3++) for(a4=1;a4<10;a4++) for(a5=0;a5<10;a5++) {

x = (a1*100.0+a2*10.0+a3) * (a4*10.0+a1); y = a2*1000.0+a3*100.0+a4*10.0+a5; if(y == x)

printf(\= %ld%ld%ld%ld\\n\ } printf(\}

5. 求sum=a+aa+aaa+…+aaaaa…a(n个a)之值,其中a是一为数字。例如,当a=3,n=6时,sum=3+33+333+3333+33333+333333。a和n的值由键盘输入。 #include void main() {

int a,n;

long sum=0L,t=0;

cout<<\请输入a 和n: \ cin>>a>>n;

for(int i=1;i<= n;i++) {

t = t*10+a; sum += t; }

cout<

第4章 复合数据类型

一、单选题

1.对于一维数组a[10],判断下列对数组元素的引用正确的是( A )。

A.a[2+3] B. a[3/1.0] C. a[5+8] D. a[3.4] A. a[5][0] B. a[0.5][4] C. a[4][4+5] D. a[1][4+9]

2. 对于二维数组a[5][10],判断下列对数组元素的引用正确的是( C )。 3. 以下错误的定义语句是( C )。

A. int x[ ][3] = {{0},{1},{1,2,3}};

B. int x[4][3] = {1,2,3,1,2,3,1,2,3,1,2,3}; C. int x[ ][3] = {1,2,3};

D. int x[4][3] = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; 4. 以下程序运行结果是( A )。

#include #include

void main() {

char chA[10] = \ strcpy(chA,chB); cout<

A. d B. c C. \\0 D. 0 5. 设有如下结构体定义: struct student { char chName[8]; int iAge; char chSex; }stStaff[3];

对结构体变量成员正确引用的是( B )。

A. cin>>stStaff.iAge; B. cin>>stStaff[0].iAge; C. cin>>stStaff; D. cin>>iAge;

二、填空题

1. 设有定义语句“int a[][3] = {{0},{1},{3}};”,则数组元素a[1][2]的值为( 0 )。 2.将字符串str2拼接到字符串str1后面。请空白处填入一条语句或一个表达式。

#include \ void main() {

char str1[80]=\ char str2[60]=\ char *t = str1, *p = str2; while( *t )t++; while( *p) { }

*t = '\\0'; cout<

*t = *p ; t++; p++;

3.下列程序的输出结果是 *p=1 m=3 n=5 。

#include \void main()

{ int a[ ]={1,2,3,-4,5}; int m,n,*p; p=&a[0]; m=*(p+2); n=*(p+4);

cout<<\}

4. 下列程序的输出结果是 2,2,1,1 。

#include \void main() { }

int a[ ]={1,2,3,4,5,6}, *p; p = a;

cout<<*p<<\

三、编程题

1.用一维数组计算Fibonacci数列的前20项。 Fibonacci数列,按如下递归定义: F(1)=1; F(2)=1

F(n)=F(n-1)+F(n-2) n>2 #include void main() { int F[21],i; F[1]=1; F[2]=1; for(i=3;i<21;i++) F[i]=F[i-1]+F[i-2]; for(i=1;i<21;i++) printf(\}

2. 用冒泡排序法对输入的20个数进行降序排序并存入数组中,然后输入一个数,查找该数是否在数组中存在,若存在,打印出数组中对应的下标值。 #include #define N 20 void main() {

int a[N], i, k, t; for(i=0;i

cout<<\请输入第\个数: \ cin>>a[i]; }

for(k=1;k<=N-1;k++) //对数组进行冒泡排序 { for(i=N-1;i>=k;i--) if(a[i]>a[i-1])

{ t=a[i]; a[i]=a[i-1]; a[i-1]=t; } //反序则交换 }

cout<<\排序后的成绩是:\ for(i=0;i

cout<<\ //输出排序好的数组 cout<<\输入你要查找的数\ cin>>t;

for(i=0;i

cout<<\找到了,它在数组中的第\个数\ break; }

if(i==N)cout<<\没找到!\}

3. 编一程序,求字符串str的长度,要求用指针访问字符串。 #include void main() {

int i;

char chStr[80],*p;

cout<<\请输入一个字符串: \ cin.getline(chStr,79,'\\n');

p = chStr; i =0; while(*p) {

p++; i++; }

cout<<\字符串的长度是\}

4. 试定义一结构体,用来描述日期,具体地说,该结构共有三个成员变量,分别描述年、月、日信息。然后再定义该结构类型的一个变量,要求从键盘输入数据,并输出结果。 #include \struct MyDate {

int year; int month; int day; };

void main() {

struct MyDate a;

cout<<\请输入日期:\

cin>>a.year >>a.month >>a.day ;

cout<

5.由键盘输入N名学生姓名,再按字典排列输出N名学生的姓名。 #include #include #define N 4 void main() { char a[N][10], i, k, t[10]; for(i=0;i=k;i--) if(strcmp(a[i],a[i-1])<0) { strcpy(t,a[i]); strcpy(a[i],a[i-1]); strcpy(a[i-1],t); } //反序则交换 } cout<<\排序后的成绩是:\ for(i=0;i

第5章 函 数

一、单选题

1.不能作为函数重载判断依据的是( B )。 A. const B. 返回类型 C. 参数个数 D. 参数类型 2.函数定义为fnFact(int &x),变量定义n=100,则下面调用正确的是( C )。 A.fnFact(20) B. fnFact(10+n) C. fnFact(n) D. fnFact(&n) 3.下面的函数调用语句中,fnNunc()函数的实参个数是( A )。 fnNunc(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8))); A. 3 B. 4 C. 5 D. 8 4. 数组名作为实参传递给函数时,传递的是( C )。 A.该数组长度 B. 该数组的元素个数 C.该数组首地址 D. 该数组中各元素的值

5.设函数原型:void fnFu(int a, int b=6,char c = ?*?);下面调用不合法的是( C )。 A.fnFu(4) B. fnFu(4,7) C. fnFu( ) D. fnFu(1,1,'*')

二、填空题

1. 在函数定义前加上关键字“inline”,表示该函数被定义为( 内联函数 )。 2. 写出下列程序的输出结果是(30

25 )。

#include int a = 5; void fun( int b) { int a = 10; a += b; cout<

}

void main( )

{ int c = 20; fun(c); a += c; cout<

}

3.下面程序执行后的输出结果是( 12 )。

#include \#define MA(x) x*(x+1)void main(){ a=1,b=2;cout<

4. 以下程序运行结果是(10,64 )。

#include #define f(x) x*x*x void main() { int a = 3,s,t; s = f(a+1); t = f((a+1));

cout<

}

5. 写出下列程序的输出结果是( 6 )。

#include int fun(int n) { if(n==1)return 1;

else return fun(n-1)+1;

}

void main( ) {

int i,j=0; for(i=1;i<4;i++)

j += fun(i); int

cout<

三、编程题

1.编写一函数 , 求

x2 + 1 (x > 1)) f (x ) = x2 (-1 <= x <= 1) x2 – 1 (x < -1 )

的值 , 要求函数原型为 double fun(double x ); double fun(double x ) { double y; if(x>1.0)y = x*x+1.0; else if(x>= -1.0 && x<=1.0) y= x*x; else y =x*x-1; return y; }

2.编写一函数求 1~n 之和 , 要求函数原型为 long sum(int n ); long sum(int n ) {

long s=0L; int i; for(i=1;i<=n;i++) s += i; return s; }

3.用函数调用的方法,求f(k,n)=1k+2k+…+nk,其中k, n由键盘输入。 #include \long fnPower(int n,int k) { int i=1; long nk=1L; for(i=1;i<=k;i++) nk *= n; return nk; }

long fn(int k,int n) { long f=0L; for(int i=1;i<=n;i++) f += fnPower(i,k); return f; }

void main() { int n,k; cout<<\请输入n,k:\ cin>>n>>k; cout<

4.用递归算法求下列函数的值. 1 n = 0 p(n,x)= x n = 1

((2x-1)*p(n-1,x)*x – (n-1 )*p(n-2,x))/n n>1

注意选择好合适的参数类型和返回值类型。在main函数中,输入下列三组数据: (a) n = 0,x = 7; (b) n = 1,x = 2; (c) n = 3, x = 4,求出相应的函数值。 #include \long fnP(int n,int x) {

long s; if(n==0)s=1;

else if(n==1)s=x;

else s =((2*x-1)*fnP(n-1,x)*x - (n-1 )*fnP(n-2,x))/n ; return s; }

void main() {

int n,x;

cout<<\输入n,x:\ cin>>n>>x;

cout<

5. 设计一个重载函数,求n个数的最大值(n=2,3)。并编程调用验证。 #include \int fnMax(int x,int y) {

int max;

max = x>y?x:y; return max; }

int fnMax(int x,int y,int z) {

int max;

max = x>y?x:y; max = z>max?z:max;

return max; }

void main() {

cout<

6. 通过函数重载,利用冒泡排序算法编写函数fnSort(),完成任务int型数组、float型数组和字符数组的排序。 #include \void fnSort(int a[]); void fnSort(float a[]); void fnPrint(int a[]); void fnPrint(float a[]);

#define N 6 void main() { int a[N]={1,22,7,45,90,3};

float b[N]={1.6F,22.5F,7.2F,45.9F,90.0F,3.0F}; fnSort(a); fnPrint(a); fnSort(b); fnPrint(b); }

void fnSort(int a[]) { int k,i,t; for(k=1;k<=N-1;k++) //对数组进行冒泡排序 { for(i=N-1;i>=k;i--) if(a[i]

{ t=a[i]; a[i]=a[i-1]; a[i-1]=t; } //反序则交换 } }

void fnSort(float a[]) { int k,i; float t; for(k=1;k<=N-1;k++) //对数组进行冒泡排序 { for(i=N-1;i>=k;i--) if(a[i]

{ t=a[i]; a[i]=a[i-1]; a[i-1]=t; } //反序则交换 } }

void fnPrint(int a[]) { cout<<\排序后的成绩是:\ for(int i=0;i

void fnPrint(float a[]) { cout<<\排序后的成绩是:\ for(int i=0;i

7. 中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡” 问题:鸡公一,值钱五,鸡母一,值钱三,小鸡,三只值钱一,百钱买百鸡,问公、母、小鸡各几只?

#include \void main() {

int a,b,c;

for(a=1;a<100/5;a++) for(b=1;b<100/3;b++) for(c=3;c<99;c+=3) {

if(a+b+c == 100 && a*5+b*3+c/3 == 100)

cout<<\鸡公=\鸡母=\小鸡=\ } }

第6章 类与对象

一、单选题

1. 假设AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为( D )。

A. x(a) B. x[a] C. x->a D. x.a

2. 假设AA为一个类,a()为该类公有的成员函数,x为该类的一个对象,则访问x对象中成员函数a的格式为( A )。

A. x.a() B. x.a C. x->a D. a.x()

3. 假设AA为一个类,a为该类私有的数据成员,GetValue()为该类的一个公有成员函数,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( D )。

A. x.a B. x.a() C. x->GetValue() D. x.GetValue() 4. 类中定义的成员默认为( B )访问属性。

A.public B. private C. protected D. friend 5. 下列各类函数中,( C )不是类的成员函数。

A.构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 6.不是构造函数的特征的是( D )。

A.构造函数名与类名相同 B. 构造函数可以重载

C.构造函数可以设置默认参数 D. 构造函数必须指定类型说明 7.下列选项中,为析构函数的特征的是( A )。

A.一个类中只能定义一个析构函数 B. 析构函数名与类名不同

C.析构函数的定义只能在类体内 D. 析构函数可以有一个或多个参数 8.下面关于成员函数特征的描述中,错误的是( A )。

A. 成员函数一定是内联函数 B. 成员函数可以重载 C.成员函数参数可以设置默认 D. 成员函数可以是静态的 9.以下有关友元函数的描述中,错误的是( B )。 `` A. 友元函数不是成员函数

B. 友元函数加强了类的封装性

C. 在友元函数中可以访问所属类的私有成员 D. 友元函数的作用是提高程序运行效率 10.已知一个类A,可以定义类A的对象或定义类A的指针,下列一定不正确的形式是( C)。 A.A a1; B. A a2(12); C. A a3(); D. A *p = new A;

二、填空题

1. 解释类和对象有什么区别是( )。

2.C++关键字private和public有什么区别是( )。 3.在成员函数中,可以通过( )指针访问一个对象的数据。

4. C++中,虽然友元提供了类之间进行数据访问的快捷方式,但它破坏了面向对象程序设计的( 类信息隐蔽性)特性。

5. 写出下例程序的运行结果。

#include class Sample { };

void main() { }

Sample c1(1),c2(3);

cout<<&c1<<\c1.Display(); //B c2.Display(); //C int x;

Sample(int a=0) { this->x = a; } void Display() {

cout<x<<\}

public:

若A行输出是0x0012FF7C,0x0012FF78,则B行和C行的输出是( 1,0x0012FF7C;3,0x0012FF78 )。

三、编程题

1.设计一个表示学生信息类,其中包括:姓名、年龄和3门课程的成绩,并可设置学

生的相关信息,显示学生的信息。

#include \#include \void main(void) {

class MyScore {

private: char name[16]; int age;

int score1,score2,score3; public: void SetData(char *n,int a,int s1,int s2,int s3) { strcpy(name,n); age = a; score1=s1;score2=s2;score3=s3; } void Display() { cout<

MyScore a;

a.SetData(\ a.Display(); }

2.使用成员函数重载设计一个求面积的类,包括圆、三角形和梯形。并设计一个输入成员函数和输出成员函数。 class Area {

public: double r,a,b,h,s;

double MyArea(double); double MyArea(double,double );

double MyArea(double,double,double); void MyInput(); void MyPut(); };

//类中成员函数的实现:

double Area::MyArea (double r)

{ double s; s = 3.14*r*r; return s; }

double Area::MyArea (double a,double h) { double s; s = 0.5*a*h; return s; }

double Area::MyArea (double a,double b,double h) { double s; s = (a+b)*h/2.0; return s; } void Area::MyInput() { cin>>r>>a>>b>>h; } void Area::MyPut() { cout<

{ if(score>=60)cout<<\ else cout<<\ }

public: Grade(char *n,int s=0) { strcpy(name,n); score = s; } void PrintData() { cout<<\ isPass(); } };

void main() { Grade a(\ a.PrintData(); b.PrintData(); c.PrintData(); }

4.定义一个类Cat,拥有静态数据成员HowMangCats,记录Cat的个体数目;静态成员函数GetHowMang,存取HowMangCats。设计程序测试这个类,体会静态数据成员和静态成员函数的用法。

#include \class Cat {

public:

static int HowMangCats; Cat() {

HowMangCats++; }

static int GetHowMang() {

return HowMangCats; } };

int Cat::HowMangCats =0; void main()

}

if(!outputfile) { }

while((ch = inputfile1.get()) != EOF)outputfile.put(ch); while((ch = inputfile2.get()) != EOF)outputfile.put(ch); cout<<\文件复制成功!\inputfile1.close(); inputfile2.close(); outputfile.close();

//关闭已打开的读文件 //关闭已打开的读文件 //关闭已打开的写文件

cout<<\打开文件失败!\outputfile1.close (); outputfile2.close (); return;

//关闭已打开的读文件

cout<<\打开文件失败!\inputfile1.close(); return;

ofstream outputfile(argv[3],ios::out|ios::trunc);//打开写文件

}

2. 编程序实现一个文本文件中所有的小写字母转为大写字母后打印出来。 #include void main() {

char ch;

ifstream inputfile(\打开读文件 if(!inputfile) {

cout<<\打开文件失败!\ return; }

while((ch = inputfile.get()) != EOF) {

if(ch>='a' && ch<='z')ch -= 32; //小写字母转为大写字母 cout<

inputfile.close(); //关闭已打开的读文件 }

3.从键盘输入若干名学生的信息(姓名、学号和成绩),写入二进制文件,再从该文件中读出学生信息,输出在屏幕上。 #include \#include \#include \class Student

{

long no;

char name[16]; int score; public:

Student(){}

Student(int n,char na[],int s)//构造函数 {

no=n;

strcpy(name,na); score = s; }

void disp() {

cout<<\ } };

void main() {

ofstream outfile(\ if(!outfile) {

cout<<\打开文件d:\\\\sdata.dat失败!\ return; }

Student s1(2013001,\张三\创建第1个学生对象 Student s2(2013002,\王五\创建第2个学生对象 Student s3(2013003,\刘六\创建第3个学生对象 Student s4(2013004,\李四\创建第4个学生对象 Student s5(2013005,\刘七\创建第5个学生对象

outfile.write ((char *)&s1,sizeof(s1));//将5个学生对象分别写入文件 outfile.write ((char *)&s2,sizeof(s2)); outfile.write ((char *)&s3,sizeof(s3)); outfile.write ((char *)&s4,sizeof(s4)); outfile.write ((char *)&s5,sizeof(s5));

outfile.close(); //关闭文件

ifstream inputfile(\ if(!inputfile) {

cout<<\打开文件d:\\\\sdata.dat失败!\ return; }

Student t;

inputfile.seekg(0L,ios::beg);

inputfile.read ((char *)&t,sizeof(t));

while(!inputfile.eof ()) //A {

t.disp ();

inputfile.read ((char *)&t,sizeof(t)); }

inputfile.close (); }

4. 编一程序,实现对学生成绩信息进行管理和维护,包括学生成绩的增加、修改、删除和查询、分数的统计等功能。其中学生信息包括姓名、学号、数学、政治和英语三门功课的成绩。

本文来源:https://www.bwwdw.com/article/gn2h.html

Top