2015春浙江电大《C++语言程序设计》期末复习(2)

时间:2024-04-27 19:33:05 5A范文网 浏览: 复习资料 我要投稿
 三、写出下列程序运行后的输出结果

1#include <iostream.h>

   void SB (char ch) {

switch (ch) {

  case ’A’ :case ’a’:

    cout <<”well”!” ; break

  case ‘B’: case ‘b’:

    cout <<”good!” ;break;

  case ‘C’: case ‘c’:

    cout <<”pass!” ;break;

  default :

    cout << “bad!” ; break;}}

void main ( ){

  char al=’b’,a2=’c’,a3=’f’;

  SB(al);SB(a2);SB(a3);SB(A);

  Cout <<endl;}

运行结果:goodpassbadwell

2#include <iostream.h>

#include<stdlib.h>

double SD(int a,int b,char op) {

   double x; //局部变量x的改变不影响main函数中的x

   switch (op) {

     case ‘x’:x=double(a) + b; break;

     case ‘-‘: x=double (a)– b; break;

     case ‘*’: x=double (a) * b;break;

     case ‘/’:if (b) x=double (a)/b;

          else exit(1);

          break;

     default:exit(1); }

return x;}

   void main ( ){  

int x=20 ,y=12;

cout <<SD(x,y,’-‘)<<’ ‘;

cout <<SD(x,y,’*’)<<’ ‘;

cout <<SD(x+y,y-2,’/’)<<endl;}

   运行结果:8  240  3.2   

3#include <iostream.h>

void main ( ){

    int s=0;

    for (int I=1;I<6;I++)

         s+=I*I;      // s=1*1+2*2+3*3+4*4+5*5

     cout <<”s=”<<s<<endl;}

运行结果:s=55

4# include <iostream.h>

void main ( ){

   int s=0;

   for (int I=1;;I++){

       if (s>50) break;

       if (I%3= =0) s+=I;     // s=3+6+9+12+15+18

    }

cout <<”I,s=”<<I<<”,”<<s<<endl;}

运行结果:I,s=1963

5# include <iostream.h>

   void main ( ){

int s1=0,s2=0;

for (int I=0;I<10;I++)

    if (I%2) s1+=I;   // s1= 1+3+5+7+9

    else s2 +=I;      // s2= 0+2+4+6+8

cout <<s1<<’ ‘<<s2<<endl;}

运行结果:25  20

6# include <iostream.h>

   void main (){

int n=10,y=1;

while (n--){y++;++y;}  // 循环10 y增加20

cout <<”y*y=”<<y*y<<endl;}

运行结果:y * y = 441

7#include<iostream.h>

void main(){

    int a[10]={12,39,26,41,55,63,72,40,83,95};

     int b;

    int i0=0,i1=0,i2=0;

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

        switch(b=a[i]%3)

     {   case 0:

          i0++;break;  //a[ i ] = 12 , 39 , 63 , 72

        case 1:

         i1++;break;              //  a[ i ] = 55 , 40

        case 2:

         i2++;         //  a[ i ] = 26 , 41 , 83 , 95

    }

   cout<<i0<<' '<<i1<<' '<<i2<<endl;}

运行结果:4  2  4

8#include<iostream.h>

#include<string.h>

void main( ){

char *a[5]={"student","worker","cadre","apple","peasant"};

    char *p1,*p2;

    p1=p2=a[0];

for(int i=0;i<5;i++){

   if(strcmp(a[i],p1)>0) p1=a[i];//p1:最大;p2:最小

   if(strcmp(a[i],p2)<0) p2=a[i];}

cout<<p1<<' '<<p2<<endl;}

运行结果:worker  apple

9#include<iostream.h>

void main( )

{   int a[8]={36,73,48,14,55,40,32,66};

    int b1,b2;

    b1=b2=a[0];        

    for(int i=1;i<8;i++)

         if(a[i]>b1){

            if(b1>b2)b2=b1;   

            b1=a[i];   }

    cout<<b1<<' '<<b2<<endl;   }

运行结果:73  36

10#include<iostream.h>

void main(){

    char a[]= "aabcdaabacabfgacd";

    int i1=0, i2=0, i=0;

    while(a[i]){

           if(a[i] = = 'a') i1++;

           if(a[i] = = 'b') i2++;

           i ++;  }

    cout<<i1<<' '<<i2<<endl;}

运行结果:7  3

11#include<iostream.h>

void main(){

    char a[ ]= "abcdabcdbdaeaf";

    int b[5]= { 0 },i=0;

    while(a[i]){

         switch(a[i]){

            case 'a' : b[0]++;break;

            case 'b' : b[1]++;break;

            case 'c' : b[2]++;break;

            case 'd' : b[3]++;break;

            default : b[4]++; }

           i++;  }

        for(i=0;i<5;i++)cout<<b[i]<<' ';

        cout<<endl;}

运行结果:4  3  2  3  2

12#include<iostream.h>

void main(){

     int a[10] = {73,83,54,62,40,75,80,92,77,84};

     int b[4] = {60,70,90,101};

     int c[4] = {0};

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

       int j = 0;

       while(a[i]>=b[j]) j++;

       c[j]++;}

    for(i=0;i<4;i++) cout<<c[i]<<' ';

    cout<<endl;}

运行结果:2  1  6  1

13#include<iostream.h>

void main(){

    int a[3][4] = {{1,2,7,8},{5,6,11,12},{24,10,3,4}};

    int m = a[0][0];

    int ii =0,jj =0;

    for(int i =0;i<3;i++)

    for(int j =0;j<4;j++)

        if(a[i][j]>m) {m=a[i][j];ii=i;jj=j;}   

// m:最大值;最大值行号ii、列号jj

    cout<< ii << ' ' << jj << ' '<< a[ii][jj]<<endl;}

运行结果:2  0  24

14#include<iostream.h>

void main(){

    int a =10,b =20;

    cout<< a << ' ' << b << endl;

    { a *= 4;

    int b = a +35;

    cout<< a << ' ' << b << endl; }

    cout<< a << ' ' << b << endl;}

运行结果:10  20

40  75

40  20

15#include<iomanip.h>

void main(){

int a[8]={7,9,11,13,3,8,15,17};

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

16#include<iomanip.h>

void main(){

int a[5]={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

17#include<iomanip.h>

void main(){

int a[8] ={4,8,12,16,20,24,28,32};

int *p = a;

do{

cout<< *p << ' ';

p+=3;

}while(p<a+8);

cout<<endl;}

运行结果:4  16  28

18#include<iomanip.h>

void main(){

int x=20,y=40, *p;

p =&x;cout<< *p<< ' ';

* p= x +10;     //  x = x + 10 = 30

p =&y;cout<< *p<<endl;

* p = y +20;cout<< x << ' ' << y <<endl; }

运行结果:20  40

          30  60

19#include<iomanip.h>

int LA(int * a,int n){

int s = 0;

for(int i =0;i<n;i++)

s += a[i];

return s;}

void main(){

int a[ ]={5,10,15,20,25,30};

int b =LA(a,5);

int c =LA(a+3,2);

cout<< b << ' ' << c << ' ' << b +2 * c<<endl;}

运行结果:75  45  165

20#include<iomanip.h>

void LC(int a,int b){                // 参数按值传递

int x = a;

a = b;b = x;

cout<< a << ’ ’ << b <<endl;}

void main(){

int x =15,y =36;

LC(x,y);cout<< x << ’ ’ << y <<endl;}

运行结果:

36         15

15      36

21#include<iomanip.h>

void LF(int & x, int y){          // 引用形参 x 按地址传递,形参 y 按值传递

x = x + y;               // x= 5 + 8 = 13

y = x + y;               // y = 13 + 8 = 21

cout<<”x =”<< x <<”,y =”<< y <<endl;}

void main(){

int x =5,y =8;

cout<<”x =”<< x <<”,y =”<< y <<endl;

LF(x,y);

cout<<”x =”<< x <<”,y =”<< y <<endl;}

运行结果:x = 5 , y = 8

          x = 13 , y = 21

x = 13 , y = 8

22#include<iomanip.h>

void LG(int * & a, int & m){       // 按地址传递

a = new int[m];

int * p = a;

for(int i = 0;i<m;i++)

*p++ =2 * i +1; // a[0]=1  a[1]=3  a[2]=5  a[3]=7  a[4]=9}

void main(){

int * p, n =5;

LG(p,n);

for(int i = 0;i<n; i++)

cout<< p[i]<< ’ ’;

cout<<endl;

delete[ ]p;}

运行结果:1  3  5  7  9

23#include<iomanip.h>

void LH(int * a, int n){

int * p = a + n-1;

while(a<p){

int x = * a;

* a = * p;

* p = x;

a++;p--;}}

void main(){

int * d = new int[5];

int i;

for(i = 0;i<5; i++){

d[i]=2 * i +3;          

cout<<setw(5)<<d[i]<< ' ';}

cout<<endl;

LH(d,5);

for(i = 0;i<5;i++){

cout<<setw(5)<<d[i]<< ' ';}

cout<<endl;

delete[]d;}

运行结果:3  5  7  9  11

         11  9  7  5   3

24#include<iostream.h>

struct Worker{

char name[15];   //姓名

int age;    //年龄

float pay;  //工资

};

void main(){

Worker x ={”weirong”,55,640};

Worker y, * p;

y = x;p =&x;

cout<< y. name<< ’’ <<y.age<< ’ ’ <<y. pay<<endl;

cout<< p->name<< '' << p->age+5<< '' << p->pay-10<<endl;;}

运行结果:weirong  55  640

          weirong  60  630

25#include<iostream.h>

#include<string.h>

struct Worker{

char name[15];  //姓名

int age;        //年龄

float pay;      //工资};

void main(){

Worker x;

char * t =”liouting”;

int d =46;float f =725;

strcpy(x. name, t);

x. age = d;x. pay = f;

cout<< x. name<< ’’ <<x.age<< ’’ <<x. pay<<endl;}

运行结果:liouting  46  725

26#include<iostream.h>

class  A{

   int a,b;

public:

   A( ) {a=b=0;}

A( int aa, int bb){

   a=aa; b=bb;

   cout<<a<<’ ’<<b<<endl;}};

void main( ){

   A x,y(6,3), z(8,10);}

运行结果:6  3

          8  10

27#include<iostream.h>

class A{

int a, b;

public:

A(int aa= 0, int bb= 0): a(aa),b(bb){

cout<<”Constructor”<< a + b<<endl;}};

void main(){

A x, y(2,5), z(y);}

运行结果: Constructor  0

          Constructor  7

28#include<iostream.h>

  class A{

int * a;

public:

A(int aa= 0){

a = new int(aa);

cout<<”Constructor”<< * a<<endl;}};

void main(){

A x[2];

A * p = new A(5);

delete p; }

运行结果: Constructor  0

         Constructor  0

         Constructor  5

29#include<iostream.h>

class A{

int a;

public:

A(int aa= 0): a(aa){}

~A(){cout<<”Destructor”<< a <<endl;}  };

   void main(){

A x(5);

A * p = new A(10);

delete p;}

运行结果:  Destructor 10

         Destructor 5

30#include<iostream.h>

class A {

int * a;

public:

A(int x){

a = new int(x);

cout<<”Constructor”<< * a<<endl;}

~A(){delete a;cout<<”Destructor”<<endl;}};

void main(){

A x(9),* p;

p = new A(12);

delete p;}

运行结果:  Constructor  9

Constructor  12

Destructor

Destructor

31#include<iostream.h>

class A{

int a;

public:

A(int aa= 0): a(aa){

cout<<”Constructor A”<< a<<endl;}};

class B:public A{

int b;

public:

B(int aa, int bb): A(aa), b(bb){

cout<<”Constructor B”<< b<<endl;}};

void main(){

B x(2,3),y(4,5);}

运行结果:  ConstructorA 2

ConstructorB 3

ConstructorA 4

ConstructorB5

32#include<iostream.h>

    class A{

int a;

public:

A(int aa= 0){a = aa;}

~A(){cout<<”Destructor A”<< a<<endl;}};

class B:public A{

int b;

public:

B(int aa= 0, int bb= 0): A(aa){b = bb;}

~B(){cout<<”Destructor B”<<b<<endl;}};

void main(){

B x(5),y(6,7);}

运行结果:  DestructorB 7

Destructor A 6

Destructor B 0

Destructor A 5

8#include<iostream.h>

   #include<stdlib.h>

   class A{

int a,b;char op;

public:

A(int aa, int bb, char ch){a = aa;b = bb;op = ch;}

int Comp(){

switch(op){

case '+' :return a + b;

case '-' :return a -b;

case '*' :return a * b;

case '/' :if(b!=0)return a/b;else exit(1);

case '%' :if(b!=0)return a%b;else exit(1);

default:exit(1);}}

void SetA(int aa, int bb, char ch){

a = aa;b = bb;op = ch;}};

void main(void){

A x(3,5,'*');

int a = x.Comp();

x.SetA(4,9, '+');

a += x. Comp();

x.SetA(13,8, '%');

a += x. Comp();

cout<<" a = "<< a <<endl;}

运行结果: a=33

9#include<iostream.h>

class B{

int a,b;

public:

B(){a = b = 0;}

B(int aa, int bb){a = aa;b = bb;}

B operator +(B& x){

B r;

r.a = a + x.a;

r.b = b + x.b;

return r;}

B operator -(B& x){

B r;

r.a = a - x.a;

r.b = b - x.b;

return r;}

void OutB(){

cout<< a << ’ ’ << b <<endl;}};

      void main(){

B x(6,5),y(13,3), z1, z2;

z1 = x + y;z2 = x - y;

z1.OutB();z2.OutB();}

运行结果: 19   8

         -7    2

10#include<iostream.h>

template<class TT>

class FF{

TT a1,a2,a3;

public:

FF(TT b1, TT b2, TT b3){

a1 =b1;a2 =b2;a3 =b3;}

TT Sum(){return a1 + a2 + a3;}};

void main(){

FF< int > x(8,3,4),y(5,9,11);

cout<< x. Sum()<< ’ ’ << y. Sum()<<endl;}

运行结果:  15  25

四、写出下列每个函数的功能

1.#include<iostream.h>

  int SA(int a,int b) {

        if(a>b) return 1

        else if(a= =b) return 0

        else return –1}

函数功能:判断ab两整型参数,若ab返回1,若ab返回0,若ab返回-1

2int SC(int a,int b,int c) {

if(a>=b && a>=c) return a

if(b>=a && b>=c) return b

if(c>=a && c>=b) return c}

函数功能:判断并返回abc三个整型参数中的最大值。

3int SE(int n) {

          / /n为大于等于1的整数

int xcin>>xif(n= =1) return x

int m=x

while(──n){

     cin>>x

     m+=x;}

return m}

函数功能:计算并返回键盘输入的n个整数的和。

4double SF (double x,int n) {

          / /n为大于等于0的整数

         double p=1,s=1

         for(int i=1i<=ni+ +) {

p* =x;    // p = x ^ n

s+ =p/(i+1)          }

          return s   }

函数功能:计算并返回s的值其中s = 1 + x/2 + x^2/3 + x^3/4 + … + x^(n-1)/n + x^n/(n+1)

5.#include<math.h>

bool SG(int x) {

      / /x为大于等于2的整数

    int a=int(sqrt(x))/ /x的平方根

    int i=2

    while(i<=a) {

    if(x%i= =0) break

    i+ +    }

    if(i<=a)return 0else return 1}

函数功能:判断整型参数x是否为素数(质数),若是素数刚返回1否则返回0

6float FH( ) {

        float x,y=0,n=0

        cin>>x

        while(x= 100) {

            n+ +y+=x

            cin>>x        }

        if(n= =0) return yelse return y/n    }

函数功能:计算并返回键盘输入的一批float型数据的平均值,数据个数用n变量统计,当输入-100时结束数据的输入。

7#include<iostream.h>

void LI(int n){

int * a = new int[n], * p = a + n;

for(int i =0;i<n;i + +)cin>> a[i];

for(i = n - 1;i> =0;i--)cout<< *(--p)<< ’ ’;

cout<< ’/ n’;

delete [ ]a;}

函数功能:申请具有 n 个元素的动态整型数组空间( n 由参数给定),键盘输入 n 个整数放入此数组中,并按与输入相反的顺序输出这批整数。

8#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 + = a[i];

s/= n;

m = 0;

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

if(a[i]> = s)m + +;

b = new int[m];

int * p = b;

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

if(a[i]> = s)* p + + = a[i];}

函数功能:求形参 a 数组n 个整型元素的平均值,统计数组中大于或等于平均值的数据个数并通过引用参数 m 返回;申请具有 m 个元素的动态整型数组空间,将数组中大于或等于平均值的数据存入此动态空间并通过引用指针形参 b 返回。

9/ /struct Worker{

/ /    char name[15];/ /姓名

/ /    int age;/ /年龄

/ /    float pay;/ /工资};

istream & operator>>(istream& istr,Worker& x){

cout<<”请输入一个职工记录:姓名、年龄、工资”<<endl;

istr>> x. name>> x.. age>> x.. pay;

return istr;}

这是一个>>操作符重载函数。其功能为:输入一具有Worker类型的结构变量的nameagepag各成员的值,并通过引用形参 x 返回。

10/ / struct StrNode{

/ /     char name[15];/ /字符串域

/ /     StrNode * next;/ /指针域};

void QB(StrNode * & f, int n){

if(n = = 0){f =NULL;return;}

f =new StrNode;

cin>>f>name;

StrNode * p = f;

whlie(- -n){

p = p>next= new StrNode;

cin>>p>name;}

p>next=NULL;}

函数功能:建立一有 n 个结点的、头指针为 f 的、数据类型为StrNode结构类型的链表。 

11/ / struct StrNode{char name[15];StrNode * next;};

void QC(StrNode * f){

whlie(f){

cout<< f>name<< ’ ’;

f = f>next;}}

函数功能:遍历一头指针为 f 的、数据类型为StrNode结构类型的链表。

1#include<iomanip.h>

   #include<fstream.h>

   #include<string.h>

   void JA(char * fname)

        / /可以把fname所指字符串作为文件标识符的文件称为fname文件

{  ofstream fout(fname);

char a[20];

cin>> a;

whlie(strcmp(a,”end”)=0){

fout<< a << endl;

cin>> a;}}

函数功能: 建立磁盘文件(文件名由参数fname给定),键盘输入一批字符串(每个字符串长度小于20),存入此文件中,当输入”end”时结束输入。

2#include<iomanip.h>

   #include<fstream.h>

   void JB(char * fname)

        / /可把以fname所指字符串作为文件标识符的文件称为fname文件

        / /假定该文件中保存着一批字符串,每个字符串的长度均小于20

   {    ifstream fin(fname);

char a[20];

int i = 0;

whlie(fin>> a){

cout<< a <<endl;

i + +;}

fin.close();

cout<< ”i = ”<< i <<endl;}

函数功能: 从fname所指的磁盘文件中读取一批字符串并通过屏幕输出。统计并输出所读取的字符串数目。

3#include<iomanip.h>

   #include<fstream.h>

   void JC(chat * fname, int n)

         / /可把以fname所指字符串作为文件标识符的文件称为fname文件

{    ofstream fout(fname, ios : : out | ios : : binary);

int x;

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

cin>> x;

fout.write((char * )&x, sizeof(x));}

fout.close();}

函数功能:建立磁盘二进制文件(文件名由参数fname给定),输入n个整数存入此文件中。

4#include<iomanip.h>

#include<fstream.h>

void JD(char * fname)

    / /可把以fname所指字符串作为文件标识符的文件称为fname文件,

    / /假定该文件保存着一批整数。

{   ifstream fin(fname, ios : : in | ios : : nocreate | ios : : binary);

int x, s = 0, n = 0;

whlie(fin.read((char * )&x, sizeof(x))){

s + = x;n + +;}

cout<< n << ’ ’ << s << ’ ’ <<float(s)/n<<endl;

fin.close();}

函数功能:fname所指的二进制文件中读取一批整数,统计并输出所读取的数据个数n、总和s、及平均值。

五、按题目要求编写程序

1. 已知6a3015b36,求出满足不定方程2a+5b=126的全部整数组解。如(13,20)就是其中的一组解,并按此格式输出每组解。

#include<iostream.h>

       void main()

       {   int a,b;                  

           for(a=6;a<=30; a++)       

               for(b=15;b<=36;b++)   

                   if(2*a+5*b==126) cout<<'('<<a<<','<<b<<')'<<endl; }   

2. 假定函数声明为“void Print(int a[], int n);”,在函数体中按下标从大到小的次序输出数组a中的n个元素的值,并要求每行输出6个元素,当然最后一行可以不足6个。

void Print(int a[], int n) 

    {   int i,j=0;                   

        for(i=n-1; i>=0; i--) {       

            cout<<a[i]<<’ ’;          

            if(++j%6==0) cout<<endl;  

        }

        cout<<endl; }

3. 假定一个函数声明为“void AD(int a[], int n);”,要求把数组a中的n个元素值按相反的次序仍保存在数组a中。

void AD(int a[], int n)

    {

        for(i=0; i<n/2; i++) {

            int x=a[i]; a[i]=a[n-1-i]; a[n-1-i]=x; }}

4. 假定一个函数声明为“int FF(int a[], int n);”,要求递归求出数组a中所有n个元素之积并返回。

int FF(int a[], int n)

{   if(n==1) return a[n-1];

        else return a[n-1]*FF(a,n-1);

        //或者if(n==0) return 1;

        //     else return a[n-1]*FF(a,n-1);}

来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。

相关文章:

2022年中考物理:常考物体质量估测04-27

高一语文教学工作总结800字04-27

2022年初中物理:质量04-27

高一语文劝学原文及翻译04-27

2022年中考物理知识点:特殊法测电阻04-27

2022年中考物理知识点:变阻器取值范围04-27

2022年中考物理知识点:欧姆定律及适用条件04-27

2022年初中物理知识点:欧姆定律原理实验04-27

2022年初中物理知识点:串联电路的特点04-27

2022年初中物理:一些物体的质量04-27

热搜文章
最新文章