c++程序填空

更新时间:2024-04-03 04:28:02 阅读量: 综合文库 文档下载

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

3.下列程序计算1000以内能被3整除的自然数之和,请完成程序。 #include void main() {

int x=1, sum; [1]

while(1) {

if( [2] )break; if( [3] )sum+=x; x++; }

cout<

1. [1] #include [2] break; [3] j>temp 2. [1] a

3.[1] sum=0; [2]x>1000 [3]x%3==0 四、程序填空题

1. 下面的函数fun未使用中间变量实现对两个数的交换,请完成下列函数的定义。 void fun(int &x, int &y) { x+=y; y= [1] ; [2] ; }

2.下面的函数bubble()是对整数数组a按升序排序的冒泡算法,其中,参数a存储将被排序的数据,

size是数组a中存储的元素数目,请完成该函数。 void bubble(int a[], int size) {

[1] ;

for(int p=1; [2] ; p++) for(int i=0; [3] ; i++) if(a[i]>a[i+1]) {

temp=a[i]; [4] ; [5] ; } }

3. 下面的函数Sort()用于对整数数组array按升序排序的选择排序算法,其中参数n表示array数

组中存储的数组元素数。例如,假设数组array中有10个元素,选择排序就是:先将10个数

中的最小数与a[0]对换;再将a[1]到a[9]中的最小数与a[1]对换,….,直到排序完成。请完成 该函数。

void Sort( int array[], int n) {

int k; [1] ;

for(int i=0; i

for(int j= [3] ; j4. 以下程序的功能是求三角函数sinx的近似值,其计算精度为0.000001。已知求sinx近似值的计 算公式为: )!12( )1(

!7!5!31sin)12( 1753 .

....... . .

nxxxxxxnn.

其中,x的值为弧度。

当输入的x 值为度数时,将度数转化为弧度的公式为: 1801415926.3xy.

#include #include

double sin(double x,double eps) {

double term,sum,y; int n=1; y=x*x;

term= [1] ; sum=0;

while(fabs(term)>=eps) {

sum += [2] ; n++;

term = term*y/ [3] ; term *= -1; }

return [4] ; }

void main(void) {

double x,y;

cout<<\请输入x的值(角度):\ cin>>x;

while(x>360)x -= 360; y= [5] ;

cout<<\角度为\的sin值是\}

1. [1]x-y [2]x=x-y或x-=y

2. [1]int temp [2]p

[4]array[k]=array[i] [5]array[i]=t 4. [1]x [2]term [3]((2*n-1)*(2*n-2)) [4]sum [5]3.1415926*x/180 四、程序填空题

1. 统计字符串中英文字母个数的程序。 #include using namespace std; int count (char str[]); void main() {

char s1[80];

cout<<\ [1] ;

cout<<\}

int count (char str[]) {

int num=0;

for (int i=0;str[i];i++)

if (str[i]>='a' && str[i]<='z' || str[i]>='A' && str[i]<='Z') [2] ;

return [3] ; }

2.如果矩阵A乘以B得到C,则必须满足如下的规则:

⑴矩阵A的列数等于矩阵B的行数; ⑵矩阵A的行数等于矩阵C的行数; ⑶矩阵B的列数等于矩阵C的列数; 矩阵相乘的乘法公式为: .. ..

nkkjikijbac1

下面的函数MultiMatrix()用于求解整数矩阵的乘积,其中参数a、b和c分别表示存储乘数、

被乘数以及乘积结果的二维数组,arow和acol、brow和bcol以及crow和ccol分别表示矩

阵a的行数和列数、矩阵b的行数和列数以及矩阵c的行数和列数,且该函数被调用时的实 参满足:acol<=4、bcol<=5及ccol<=5。MultiMatrix()函数当提供的矩阵不满足矩阵相乘的条

件时该函数返回1,否则返回0,请完成该函数。

int MultiMatrix(int a[][4], int arow, int acol, int b[][5], int brow, int bcol, int c[][5], int crow, int ccol) {

if(acol!=brow)return 1; if( [1] )return 1; if( [2] )return 1;

for(int i=0; i

for(int n=0; [5] ; n++) c[i][j]+=a[i][n]*b[n][j]; }

return 0; }

3. 下面的函数fun未使用中间变量实现对两个数的交换,请完成下列函数的定义。 插入排序是通过把数组中的元素插入到适当位置来进行排序的。插入排序的步骤为: (1)将数组中的头两个元素按排序顺序排列

(2)把下一个元素(第3个元素)插入到其对应于已排序元素的排序位置 (3)对于数组中的每个元素重复(2),即把第4个元素插入到适当文职,然后是第5个,等等, 直到所有元素都插入排序完成

下面的程序利用了插入排序函数isort()进行排序,并在主函数中将排序前和排序后的数组元素

打印,请将程序补充完整。 #include

void isort(int a[],int size)

/*a为被排序数组,size为a中包含的元素个数*/ {

int inserter,index;

for(int i=1;i< [1] ;i++) {

inserter=a[i]; index=i-1;

while(index>=0 && [2] ) {

a[index+1]=a[index]; index--; }

a[index+1]= [3] ; } }

void main() {

int array[]={55,2,6,4,32,12,9,73,26,37}; int len= [4] ;

for(int i=0;i isort(array, [5] );

for(int i=0;i1. [1] cin>>s1 [2] num++; [3] num

2. [1]crow!=arow [2]ccol!=bcol [3]j3. [1]size [2]inserter

1. 下面程序要利用指针变量作为形参实现两个变量的值互换,请在下面的下划线处填入正确的程

序代码,完成程序功能。 #include using namespace std; int main() {

void swap(int *,int *); int i=5,j=8; [1] ;

cout<

void swap(int *p1,int *p2) {

int temp; temp=*p1; [2] ; [3] ; }

2. 下面的函数Fun将一个整数字符串转换为一个整数。 # include # include using namespace std; int Fun (char *str) {

int num, digital, len; [1] ;

len=strlen(str); while (*str!=NULL) {

digital=*str-'0';

for (int i=0; [2] ; i++) [3] ; len--; str++;

num+=digital; }

return num; }

3. 以下程序求二维数组的最大值及其行列下标并打印。 #include #include using namespace std;

void find( int a[3][4], int *maxi, int *maxj ) { int i, j;

*maxi=0; *maxj=0; for (i=0; i<3; i++) for (j=0; j<4; j++)

if (a[i][j] [1] a[*maxi][*maxj]) *maxi=i, *maxj=j; }

void main() {

int a[3][4]={{3,8,9,5},{0,-1,1,-2},{3,7,6,3}}, maxp, minp, i, j; find( [2] );

cout<<\cout<<\

cout<<\}

4. 下面程序要利用形参实现两个变量的值互换,请在下面的下划线处填入正确的程序代码,完成

程序功能。

#include using namespace std; int main() {

void refswap(int &,int &); int a=15,b=18;

[1] ; //实参是变量的地址

cout<

void refswap(int &a,int &b) {

int temp; temp=a; [2] ; [3] ; }

5. 下面的Max函数用于求给定矩阵a中的最大元素值,以及其所在的行号和列号。 #include using namespace std;

void Max(int *a,int m,int n) {

if (m<=0 || n<=0) return; int i,j,row=0,column=0,max; max=*a;

for (i=0;i

max= [2] ; row=i; column=j; }

cout<<\}

int main() {

int a[3][4]={{5,12,23,56},{19,28,37,46},{-12,128,6,8}};

Max( [3] , 3, 4); getchar(); return 0; }

1.[1] swap(&i,&j) [2] *p1=*p2 [3] *p2=temp 2.[1] num=0 [2] i

3.[1] > [2] a,&maxp,&minp [3] a[maxp][minp] 4.[1] refswap(a,b) [2] a=b [3] b=temp

5.[1] *(a+i*n+j)>max [2] *(a+i*n+j) [3] &a[0][0] 五、程序填空题

1. 假设学生链表中的结点结构及含义定义如下: struct Student {

long number; //学号

Student *next; //指向下一个结点的指针 };

下面的函数Delete()是从链表中将指定学号的学生结点删除,它有两个参数:head是学生链

表的链首指针,number是被删除结点的学生学号,请完成该函数。 void Delete(Student *head, long number) {

Student *p;

if( [1] ) return;

if(head->number == number) { [2] ;

head=head->next; delete p; return; }

for(Student *s=head; s->next; [3] ) {

if( [4] ) {

p=s->next;

s->next=p->next; delete p; [5] ; } }

cout<

2. 下面的函数rotate()实现将二维数组m参数表示的方阵进行顺时针旋转90°。例如,它将数组

11 22 33 44 55 66 77 88 99 变为: 77 44 11 88 55 22 99 66 33

请将程序补充完整。 [1] int SIZE=4;

[2] int Matrix[SIZE][SIZE]; void rotate(Matrix m) { [3] ;

for(int i=0; i

1.[1] swap(&i,&j) [2] *p1=*p2 [3] *p2=temp 2.[1] num=0 [2] i

3.[1] > [2] a,&maxp,&minp [3] a[maxp][minp] 4.[1] refswap(a,b) [2] a=b [3] b=temp

5.[1] *(a+i*n+j)>max [2] *(a+i*n+j) [3] &a[0][0] 五、程序填空题

1. 下面的C++程序中,定义了一个描述时间的类Time,请在下划线处填入正确的程序代码。 #include using namespace std; class Time { public:

void set_time(); void [1] ; private: int hour; int minute; int [2] ; };

void Time::set_time() {

cin>>hour; cin>> [3] ; cin>>sec; }

void Time::show_time() {

cout<

2. 以下是一个采用类结构的方式求n!的程序,请填空完成程序。 #include using namespace std; class Factorial { private: int n,fact; public: Factorial(int); void Calculate(); void Display(); };

Factorial::Factorial(int val) { n=val; [1] ; }

void Factorial::Calculate () { int i=n;

while(i>1) [2] ; }

void Factorial::Display () { cout<

cout<<\请输入n的值:\ [3] ;

A.Calculate (); A.Display (); }

3. #include using namespace std; class MArray {

[1] : //填写访问属性

void set_value(); //输入10个整数并存放在数组array中 void max_value(); //求数组中的最大值 void show_value() { cout<<\private: int array[10]; int max; };

void MArray::set_value() { int i;

for (i=0;i<10;i++) [2] ; }

void MArray::max_value() {

int i;

max=array[0];

for (i=1;i<10;i++) if (array[i]>max) [3] }

int main() { MArray arrmax;

arrmax.set_value(); arrmax.max_value(); arrmax.show_value(); }

4. 使类完整 [1] A { int *a, n;

public: A():a(0),n(0) { } A(int nn) {

[2] //用nn初始化n

[3] //用a指向长度为n的动态数组空间 } };

5. 下面的C++程序定义了一个找出整型数组中元素的最大值的类Array_M,请在下划线处填入正

确的程序代码。 class Array_M {

public:

void set_value(); void [1] ;

void show_value(); private:

int arrayd[20]; int max; };

void Array_M::set_value() {

int i;

for (i=0;i<20;i++) cin>>arrayd[i]; }

void Array_M::max_value() {

int i;

max=arrayd[0]; for(i=1;i<20;i++)

if (arrayd[i]>max) max= [2] ; }

void Array_M:: [3] {

cout<<\}

6. 以下是Box类的定义,其中height是静态数据成员。要求程序输出为: 10 10 3000

源程序如下:

#include using namespace std; class Box {

int width, length; public:

Box(int,int); int volume();

[1] ; //将height定义为静态整形数据成员 };

[2] //在类体外定义构造函数,宽度width和 //长度length的缺省值均为10 {

width=w;length=len; }

int Box::volume() {

return (height*width*length); }

int Box::height=10; void main() {

Box a(15,20);

cout<

7. 下面的C++程序定义一个矩形类CRectangle。 class CRectangle {

double a,b,x,y; //(a,b)和(x,y)分别为左上角和右下角的坐标 public:

CRectangle(double a=0,double b=0,double x=1,double y=1) {

if ((a==x)||(b==y)) {this->a=this->b=0;this->x=this->y=0;} else {this->a=a;this->b=b;this->x=x;this->y=y;} }

int IsSquare()

{ //判断是否为矩形,若是返回1,否则返回0 if ( [1] ) return 1;

else return 0; }

void Move(int xx,int yy)

{//按左上角将矩形移动到(xx,yy)位置 [2] ; [3] ; } };

1. [1] show_time() [2] sec [3] minute

2.[1] fact=1 [2]fact*=i-- [3]Factorial A(n) 3. [1]public [2]cin>>array[i] [3]max=array[i]; 4. [1]class [2]n=nn; [3]a=new int[n];

5. [1]max_value() [2]arrayd[i] [3]show_value() 6. [1]static int height [2]Box::Box(int [3]cout<

7.[1]fabs(a-x)==fabs(b-y) [2] x+=xx-a; [3] y+=yy-b; 五、程序填空题

1. 下面函数声明类comp,用友元函数重载运算符\。 [1] comp { public:

int real,imag;

comp(int r=0,int i=0){real=r;imag=i;} friend comp operator +(comp &,comp &); };

comp [2] {

int r,i; [3] ;

i=x.imag+y.imag; return comp(r,i); }

2. 声明复数的类complex,用友元函数重载运算符\。 class complex { public:

int real, imag;

complex(int r=0, int i=0) { real=r; imag=i; } [1] complex operator -(complex &,complex &); };

complex operator -(complex &a, complex &b) { int r=a.real -b.real; int i= [2] ; return [3] ; }

3. #include

w=10, int len=10)

using namespace std; lass point {

private: float x,y;

public: point(float xx=0, float yy=0) { x=xx; y=yy; } ~point() { }

bool operator==(point &); bool operator!=(point &); point operator+=(point &); point operator-=(point &); float get_x() { return x; } float get_y() { return y; } };

bool point::operator==(point &p) { if ( [1] ) return 1; else return 0; }

bool point ::operator!=(point &p) {

if ( x!=p.get_x() && y!=p.get_y() ) return 1; else return 0; }

point point::operator+=(point &p) { this->x+=p.get_x(); this->y+=p.get_y(); return [2] ; }

point point::operator-=(point &p) { this->x-=p.get_x(); [3]

return *this; }

void main() {

point p1(1,2), p2(3,4), p3(5,6);

cout<<\p3+=p1; cout<<\p3-=p1; cout<<\}

运行结果为: p1==p2? 0 p1!=p2? 1

p3+=p1,p3: 6,8 p3+=p1,p3: 5,6

4. 下面的Time类重载运算符\使之满60秒进一分钟,此时秒又从0开始计时,请在下划线处

填入正确的程序代码。 #include

using namespace std; class Time {

public:

Time() {minute=0;sec=0;}

Time(int m,int s):minute(m),sec(s){} [1] ;

void display() {cout<

Time Time::operator++() {

if (++sec>=60) {

sec= [2] ; minute= [3] ; }

return *this; }

1.[1]class [2]operator +(comp &x, comp &y) [3]r=x.real+y.real; 2.[1] friend [2]a.imag-b.imag [3]complex(r,i)

3.[1]x==p.get_x() && y==p.get_y() [2](*this) [3]this->y-=p.get_y(); 4.[1]Time operator++() [2]sec-60 [3]minute+1 五、程序填空题

1. #include using namespace std; class vehicle {

protected: int size; int speed; public:

void setSpeed(int s) { speed=s; }

[1] getSpeedLevel() { return speed/10; } };

class car :public vehicle {

public:

int getSpeedLevel() { return speed/5; } };

class truck :public vehicle {

public:

int getSpeedLevel() { return speed/15; } };

int maxSpeedLevel(vehicle [2] , vehicle [3] ) {

if (v1.getSpeedLevel()>v2.getSpeedLevel()) return 1; else return 2; }

void main() {

truck t; car c;

t.setSpeed(130); c.setSpeed(60);

cout<

2. A为抽象类,输出为: this is class B printing this is class C printing 源程序为:

#include using namespace std; class A { public: [1] ; };

class B :public A { public:

void printMe() { [2] <<\};

class C :public B {

void printMe(){cout<<\};

void print( [3] ) { a.printMe(); } void main()

{ B b; C c; print(b); print(c); } 3. 下面程序的输出结果为0,56,56。 #include using namespace std; class base{ public:

[1] func(){return 0;} };

class derived:public base{

public: int a,b,c;

[2] setValue(int x,int y,int z){a=x;b=y;c=z;} int func(){return (a+b)*c;} };

void main() {

base [3] ; derived d;

cout<

cout<

4. 下列程序的运行结果如下: A1.s Print() called. A2.s Print() called.

根据结果将下面的程序补充完整。 #include class A {

public:

A(int a){b=a;} [1]

protected: int b; };

class A1:public A {

public: [2]

void Print() { cout<<”A1.s Print() called.”<

class A2: public A {

public: [3]

void Print() { cout<<”A2.s Print() called.”<

void fun( [4] ){ obj->Print(); } void main() {

A1 &c1=new A1(1);

[5]

fun(c1); fun(c2); }

1. [1] virtual int [2] &v1 [3] &v2

2. [1]virtual void printMe()=0; [2]cout [3] A &a 3.[1] virtual int [2] void [3] b

4. [1]virtual void Print()=0; [2]A1(int i):A(i){} [3]A2(int i):A(i){} [4]A *obj; [5]A2*c2=new A2(s); 四、程序填空题

1. 下面是实现类fraction(分数)的定义的测试程序,其中重载运算符<<以分数形式给出结果。例如

将三分之二输出为2/3。 #include [1] class fraction{ int den,num; public:

fraction( int y, int x ) { den=y; num=x; }; private:

[2] ostream &operator<<(ostream &s,fraction fr); };

ostream &operator<<(ostream &s,fraction fr) {

s<

void main() {

fraction f(2,3); cout<

1. [1] [2] friend [3] s

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

Top