• 优质范文
  • 工作总结
  • 工作计划
  • 作文大全
  • 心得体会
  • 述职报告
  • 实习报告
  • 写作方案
  • 教案反思
  • 演讲稿
  • 发言稿
  • 读书笔记
  • 精美散文
  • 读观后感
  • 范文大全
  • 当前位置: 博通范文网 > 写作方案 > 正文

    C++课程实践报告试题及答案

    时间:2021-09-24 来源:博通范文网 本文已影响 博通范文网手机站

    任务一 一、实践任务 1.试建立一个类 PP,求出下列多项式的前 n 项的值。

      n x P n x xP nx x Pnn/ )) ( ) 1 ( ) ( ) 1 2 ((1) (2 n 1 -

    110nnn 二、详细设计 1、类的描述与定义 (1)私有数据成员  int n:前若干项的项数。

     double

    x:存放 x 的值。

     double *p:根据 n 的大小动态申请存放 P n (x) 前 n 项的数组空间。

    (2)公有成员函数  PP(int num,double x1):构造函数,初始化数据成员 n 和 x,使 p 指向动态申请的数组空间。

     ~PP():析构函数,释放 p 指向的动态内存空间。

     double fun(int n1,double x):递归函数,用于求多项式 ) (x P n 的第 n1 项。注意:将递归公式中的 n 用作函数参数。本函数供 process 函数调用。

     void process( ):完成求前 n 项的工作,并将它们存放到 p 指向的动态数组中。

     void show( ):输出 n 和 x,并将前 n 项以每行 4 个数的形式输出到屏幕上。

    2、主要函数设计

    在主函数中完成对该类的测试。先输入 num 和 x1,并定义一个 PP 类的对象 items,用 num 和 x1 初始化 items 的成员 n 和 x,调用 items 的成员函数,求出并输出多项式前 num 项的值。

    三、源程序清单 #include class PP{ private:

    int n;

    double x;

    double*p; public:

    PP(int num,double x1)

    {

    n=num;

    x=x1;

    p=new double[n];

    }

    ~PP()

    {

    if(p) delete []p;

    }

    double fun(int n1,double x);

    void process();

    void show(); }; double PP::fun(int n1,double x) {

    if(n1==0) return 1;

    else if(n1==1) return x;

    else if(n1>1) return ((2*n1-1)*x*fun(n1-1,x)-(n1-1)*fun(n1-2,x))/n1; } void PP::process() {

    for(int i=0;i

    {

    p[i]=fun(i,x);

    } } void PP::show() {

    cout<<"n="<

    for(int i=0;i

    {

    cout<

    if((i+1)%4==0) cout<

    } } void main() {

    int num;

    double x1;

    cout<<"请输入 num 和 x1:";

    cin>>num>>x1;

    PP items(num,x1);

    items.process();

    items.show(); }

    任务二

    一、实践任务 2.试建立一个类 SP,求k k k kn k n f      ....3 2 1 ) , ( ,另有辅助函数 power(m,n)用于求nm 。

    二、详细设计 1、类的描述与定义 (1)私有数据成员  int n,k:存放公式中 n 和 k 的值; (2)公有成员函数  SP(int n1,int k1):构造函数,初始化成员数据 n 和 k。

     int power(int m, int n):求 m n 。

     int fun( ):求公式的累加和。

     void show( ):输出求得的结果。

    2、主要函数设计 在主程序中定义对象 s,对该类进行测试。

    三、源程序清单 #include class SP{

    private:

    int n,k; public:

    SP(int n1,int k1)

    {

    n=n1;

    k=k1;

    }

    int power(int m,int n);

    int fun();

    void show(); }; int SP::power(int m,int n) {

    int s=1;

    for(int i=0;i

    {

    s*=m;

    }

    return s; } int SP::fun() {

    int s=0;

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

    {

    s+=power(i,k);

    }

    return s; }

    void SP::show() {

    cout<<"f("<

    int n1,k1;

    cout<<"请输入 n1,k1:";

    cin>>n1>>k1;

    SP s(n1,k1);

    s.fun();

    s.show(); }

    任务三

    一、实践任务 3.建立一个类 MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。

    二、详细设计 1、类的描述与定义 (1)私有数据成员  float array[20]:一维整型数组。

     int n:数组中元素的个数。

    (2)公有成员函数  MOVE(float b[],int m):构造函数,初始化成员数据。

     void average():输出平均值,并将数组中的元素按要求重新放置。

     void print():输出一维数组。

    2、主要函数设计 在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。

    三、源程序清单 #include class MOVE{ private:

    float array[20];

    int n; public:

    MOVE(float b[],int m)

    {

    for(int i=0;i

    {

    array[i]=b[i];

    }

    n=m;

    }

    void average();

    void print();

    ~MOVE()

    {}; }; void MOVE::average() {

    float ave=0;

    int i,j;

    for(i=0;i

    {

    ave+=array[i];

    }

    ave/=n;

    cout<

    float turn[20];

    j=0;

    for(i=0;i

    {

    if(array[i]<=ave)

    {

    turn[j]=array[i];

    j++;

    }

    }

    j=0;

    for(i=0;i

    {

    if(array[i]>ave)

    {

    turn[n-1-j]=array[i];

    j++;

    }

    }

    for(i=0;i

    {

    array[i]=turn[i];

    } } void MOVE::print() { for(int i=0;i

    cout<

    float b1[]={1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3};

    int num;

    num=sizeof(b1)/sizeof(float);

    MOVE s(b1,num);

    s.average();

    s.print(); }

    任务四

    一、实践任务 4.建立一个类 MOVE,将数组中最大元素的值与最小元素的值互换。

    二、详细设计 1、类的描述与定义 (1)私有数据成员  int *array:一维整型数组。

     int n:数组中元素的个数。

    (2)公有成员函数  MOVE(int b[],int m):构造函数,初始化成员数据。

     void exchange():输出平均值,并将数组中的元素按要求重新放置。

     void print():输出一维数组。

     ~MOVE():析构函数。

    2、主要函数设计 在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。

    三、源程序清单 #include class MOVE{ private:

    int *array;

    int n; public:

    MOVE(int b[],int m)

    {

    array=new int[m];

    n=m;

    for(int i=0;i

    {

    array[i]=b[i];

    }

    }

    void exchange();

    void print();

    ~MOVE()

    {

    if(array) delete array;

    } }; void MOVE::exchange()

    {

    float ave=0;

    for(int i=0;i

    {

    ave+=array[i];

    }

    ave/=n;

    cout<<"平均值为"<

    int max,min;

    max=min=array[0];

    int m;

    for(i=0,m=0;i

    {

    if(array[i]>=max) m=i,max=array[i];

    }

    int l;

    for(i=0,l=0;i

    {

    if(array[i]

    }

    i=array[m],array[m]=array[l],array[l]=i;

    } void MOVE::print()

    {

    for(int i=0;i

    cout<

    {

    int text[]={21,65,43,87,12,84,44,97,32,55};

    int num;

    num=sizeof(text)/sizeof(int);

    MOVE s(text,num);

    s.print();

    cout<

    s.exchange();

    s.print(); }

    任务五 一、实践任务 定义一个类 Palindrome,实现绝对回文数。设计一个算法实现对任意整型数字判断是否为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。

    二、详细设计 1、类的描述与定义 (1)私有数据成员  int n:整型数字。

     int y:

    标记是否为回文数。

    (2)公有成员函数  Palindrome (int x) :构造函数,根据 x 参数初始化数据成员 n,y 初始化为 0。

     void huiwen () :判断数 n 是否为绝对回文数。

     void show( ) :若该数为回文数,则在屏幕显示。

    2、主要函数设计

    在主程序中定义 int a,由键盘输入数字。定义一个 Palindrome 类对象 p,用 a 初始化 p,完成对该类的测试。

    三、源程序清单 #include class Palindrome{ private:

    int n;

    int y; public:

    Palindrome(int x)

    {

    n=x;

    y=0;

    }

    void huiwen();

    void show(); }; void Palindrome::huiwen() {

    int i=0,j=0;

    int m;

    m=n;

    while(m)

    {

    m/=10;

    i++;

    }

    m=n;

    while(m)

    {

    m/=2;

    j++;

    }

    int*s10=new int[i];

    int*s2=new int[j];

    m=n;

    for(int k=0;k

    {

    s10[i-1-k]=m%10;

    m/=10;

    }

    m=n;

    for(k=0;k

    {

    s2[j-1-k]=m%2;

    m/=2;

    }

    int num10=0;

    for(k=0;k

    {

    if(s10[i-1-k]==s10[k]) num10++;

    else break;

    }

    int num2=0;

    for(k=0;k

    {

    if(s2[j-1-k]==s2[k]) num2++;

    else break;

    }

    if(num10==(i/2)&&num2==(j/2)) y=1;

    } void Palindrome::show() {

    int i=0,j=0;

    int m;

    m=n;

    while(m)

    {

    m/=10;

    i++;

    }

    m=n;

    while(m)

    {

    m/=2;

    j++;

    }

    int*s10=new int[i+1];

    int*s2=new int[j+1];

    m=n;

    for(int k=0;k

    {

    s10[i-1-k]=m%10;

    m/=10;

    }

    m=n;

    for(k=0;k

    {

    s2[j-1-k]=m%2;

    m/=2;

    }

    if(y)

    {

    cout<<"该数为绝对回文数!:"<

    cout<<"十进制表示为:";

    for(k=0;k

    cout<

    cout<<"二进制表示为:";

    for(k=0;k

    cout<

    }

    else

    {

    cout<<"该数不是绝对回文数!:"<

    cout<<"十进制表示为:";

    for(k=0;k

    cout<

    cout<<"二进制表示为:";

    for(k=0;k

    cout<

    }

    cout<

    int a;

    cout<<"请输入一个数字:";

    cin>>a;

    Palindrome p(a);

    p.huiwen();

    p.show(); }

    任务六

    一、实践任务 6.定义一个字符串类 String,实现判断该字符串是否为回文字符串。所谓回文字符串,是

    指该字符串左右对称。例如字符串“123321”是回文字符串。

    二、详细设计 1、类的描述与定义 (1)私有数据成员  char *str;

     int y:标记是否为回文字符串。

    (2)公有成员函数  String (char *s) :构造函数,用给定的参数 s 初始化数据成员 str。y 初始化为 0。

     void huiwen () :判断 str 所指向的字符串是否为回文字符串。

     void show( ) :在屏幕上显示字符串。

    2、主要函数设计 在主程序中定义字符串 char s[]=”ababcedbaba”作为原始字符串。定义一个 String 类对象 test,用 s 初始化 test,完成对该类的测试。

    三、源程序清单 #include #include class String{ private:

    char*str;

    int y; public:

    String(char*s)

    {

    int n=strlen(s);

    str=new char[n+1];

    strcpy(str,s);

    y=0;

    }

    void huiwen();

    void show();

    ~String()

    { if(str) delete []str;} }; void String::huiwen() {

    int n,judge=0;

    n=strlen(str);

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

    {

    if(str[i]==str[n-1-i]) judge++;

    }

    if(judge==i) y=1; } void String::show()//输出; {

    if(y==1) cout<<"y=1,¸该字符串是回文数"<

    else cout<<"y=0,该字符串不是回文数"<

    char s[]="ababcedbaba";

    String test(s);

    test.huiwen();

    test.show(); }

    任务七

    一、实践任务 7.建立一个类 PHALANX,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。

    二、详细设计 1、类的描述与定义 (1)私有数据成员 1

    2

    4

    3

    … 1 1

    2

    5

    10 4

    3

    6

    11 9

    8

    7

    12 16

    15

    14

    13

     int (*p)[20]:指向按照折叠规律存放方阵的二维整型数组。

     int startnum:折叠方阵的起始数。

     int n:存放方针的层数。

    (2)公有成员函数  PHALANX (int s, int m ):构造函数,初始化成员数据。

     void process():生成起始数为 startnum 的 n 行方阵。

     void print():输出折叠方阵。

     ~ PHALANX( ):析构函数。

    2、主要函数设计 在主程序中对该类进行测试。

    三、源程序清单 #include class phalanx {

    int (*p)[20];

    int startnum;

    int n;

    public:

    phalanx(int s[20][20],int m)

    {

    startnum=1;

    p=s;

    n=m;

    }

    void process()

    {

    p[0][0]=startnum;

    for(int i=0;i

    for(int j=0;j

    {if(i>j){p[i][j]=1+i*i+i+i-j;}

    else{p[i][j]=1+j*j+i;}}

    }

    void print()

    {

    for(int i=0;i

    {

    for(int j=0;j

    cout<<"\n";

    }

    }

    ~ phalanx() { }

    };

    void main()

    {

    int m;

    int s[20][20];

    cout<<"请输入折叠层数:";

    cin>>m;

    cout<<"\n";

    phalanx pp(s,m);

    pp.process();

    pp.print();

    }

    这是一篇无可置疑的好范文。

    有感染力!

    一、单选题

    1.在C语言中,下列类型属于构造类型的是( D ) A.整型 B.字符型 C.实型 D.数组类型 2.下列字符串不是标识符的是( D ) A.sum B.Average C.Day_night D.M.D.JOHN 3.在C语言中,回车换行符是( A ) A.n B.t C.v D.b 4.在C语言中,语句和数据定义是用( C )作为结束标记的 A.句号 B.逗号 C.分号 D.括号 5.设有如下定义: int x=10,y=5,z; 则语句printf(“%dn”,z=(x+=y,x/y)); 的输出结果是( C ) A.0 B.1 C.3 D.4 6.10.以下程序的输出结果是( B ) main( ) {char c1=’8’,c2=’2’;

    printf(“%c,%c,%d,%dn”,c1,c2,c1-c2,c1+c2); } A.因输出格式不合法,输出出错信息 B.8,2,6,106 C.8,2,6,10 D.8,2,5,9 7.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( A ) main( ) {int x; scanf(“%d”,&x);

    if(x++>5) printf(“%dn”,x); else printf(“%dn”,x--); } A.7和5 B.7和4 C.6和4 8.表达式(int)2.1416的值时( A ) A.2 B.2.1 C.0 D.3 9.下列运算符优先级最高的是( B ) A.> B.+ C.&& D.!= 10.C语言容许函数值类型缺省定义,此时该函数值隐含的类型时( B ) A.float型 B.Int型 C.Long 型 D.Double型

    11、C程序的基本构成单位是( C) A、子程序 B、过程 C、函数 D、文件

    12、C语言中要求操作数都为整型数据的算术符是(C ) A、/ B、! C、% D、= =

    13、若int x=1,y=1;则表达式(!x||y--)的值是(B )。 A、0 B、1 C、2 D、-1

    14、能正确表示逻辑关系:a≥10或a≤0的C语言表达式(D ) A、a>=10 or a=0|a=10 && a=10||a

    15、double x,y;表达式x=1,y=x+3/2的值是(C )。 A、1 B、2 C、2.0 D、2.5

    16、运行C源程序的命令是( D ) A、ALT+F5 B、ALT+F9 C、CTRL+F5 D、CTRL+F9

    17、运行完C程序后,查看C程序运行结果的命令是( A ) A、ALT+F5 B、ALT+F9 C、CTRL+F5 D、CTRL+F9 18.若有程序段:int i=2,j; j=i++; printf(“%d,%d”,++i,j); 该程序段的输出结果是:(D) A、3,2 B、4,3 C、3,3 D、4,2 19设 int a=12; 表达式a+=a-=a*=a的值是(C )。 A 12 B 144 C 0 D 132 20、若给定条件表达式(M)?(a++):(a--),则其中表达式M和( D )等价。 A M==0 B M=1 C M!=1 D M!=0

    21、在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式为( D )。 A 只能是逻辑表达式 B只能是关系表达式

    C 只能是逻辑表达式或关系表达式 D可以是任意表达式

    22、下列选项中,(A )给变量赋初值是错误的。

    A int a=b=3; B int a,b,c=5; C int a=3,b,c=a; D float f=3.56;

    23、在C语言中,一个字符变量在内存中占用( A )个字节。 A 1 B 2 C 3 D 4

    24、int a=12,b=13,c; c=(a

    25、设有int i;则表达式i=1,++i,++i||++i,i的值为(C ) A.1 B.2 C.3 D.4 30以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是(A) A)if((a>b)&&(b>c)) k=1; B) if((a>b)||(b>c)) k=1 else k=0; C)if(ab) k=1; else if(bc) k=1; else k=0;

    31、算法具有五个特性,以下选项中不属于算法特性的是(A)有穷性 (B)简洁性 (C)可行性 (D)确定性 32以下选项中可作为C语言合法常量的是 (A ) (A)-80.(B)-080 (C)-8e1.0 (D)-80.0e

    33、以下叙述中正确的是 (C )

    (A)用C语言实现的算法必须要有输入和输出操作 (B)用C语言实现的算法可以没有输出但必须要有输入 (C)用C程序实现的算法可以没有输入但必须要有输出 (D)用C程序实现的算法可以既没有输入也没有输出

    33、以下选项中,不能作为合法常量的是 (B) (A)1.234e04 (B)1.234e0.4 (C)1.234e+4 (D)1.234e0

    34、有以下程序

    B ) ( main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %dn",i,j,k); } 程序运行后的输出结果是 (D) (A)1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 3

    35、判断变量ch中的字符是否为数字字符,正确表达式是____D___。

    A)ch>=0&&ch=’0’||ch=’0’&&ch

    36、若执行以下程序时从键盘上输入9,则输出结果是__B_____ A)11 B)10 C)9 D)8 main( )

    { int n; scanf("%d",&n); if(n++

    37、若w=1,x=2,y=3,z=4;则条件表达式w>x?w:y

    38、以下非法的赋值语句是( C ) A) n=(i=2,++i); B)j++; C) ++(i+1); D)x=j>0;

    39、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D) A)6.500000 B)6 C) 5.500000 D) 6.000000 40、已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为

    1、j的值为

    2、k的值为3,以下选项中正确的输入语句是(C) A) scanf(“---”,&i,&j,&k); B) scanf(“%d %d %d”,&i,&j,&k); C) scanf(“%d,%d,%d”,&i,&j,&k); D) scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);

    41、若有以下程序: main() { int k=2,i=2,m; m=(k+=i*=k);printf(“%d,%dn”,m,i); } 执行后的输出结果是(C) A) 8,6 B) 8,3 C) 6,4 D) 7,4 

    42、已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是(D) A) 6 B) 0 C) 2 D) 1

    43 以下选项中,与k=n++完全等价的表达式是(A) A) k=n,n=n+1 B) n=n+1,k=n C) k=++n D) k+=n+1

    39、若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是B A)i= *P; B)*P=*&J; C)i=&j; D)i=* *p; 40、若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为6的表达式是C A)*p+6 B)*(p+6) C)*p+=5 D)p+5

    二、填空题

    1.C语言是通过 库函数 来进行输入和输出的。

    2.C语言的数据类型有四大类,他们是 基本类型、构造类型、指针类型和 空类型 。

    4.下面程序的运行结果是 3.600000,3 main( ) {float x; int i; x=3.6;i=(int)x; printf(“x=%f,i=%d”,x,i); } 5.数组名定义规则和变量名相同,遵守 标识符 命名规则。

    6、main( ) {char c1,c2,c3; c2=’c’; c1=c2-1; c3=c2+1; printf(“%c,%d,%cn”,c1,c2,c3); } 程序的运行结果是: b,99,d

    7、main( ) {int a=5,b=6,c; c=a; if(a>b) c=1; else if(a= =b) c=0; else c=-1 ; printf(“c=%dn”,c); } 程序的运行结果是: -1 11.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为 0 。 12.设 int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是 9 。 14.求100~200间的全部素数。 # include main() { int m,k,i,n=0; for(m=101;m

    15、main() { int x,y=1,z=10; if(y!=0) x=5; printf(“x=%dt”,x); x=1; if(z0) x=3; else x=5; printf(“x=%dn”,x); if(z=y

    16、百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹? main( ) { int hb,hm,hl,n=0; for(hb=0;hb

    17、写出程序运行结果,并简述功能(运行结果5分,功能描述3分,共8分) #include main() { int i,t; int a[10]={2,4,6,8,10,1,3,5,7,9}; for(i=0;i

    9 7 5 3 1 10 8 6 4 2 功能描述:

    将整型数组a以逆序形式显示出来

    18、有以下语句段 int n1=10,n2=20; printf(“ n1=%dnn2=%d ”,n1,n2);

    要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20

    19、有以下程序 main( ) { int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%dn”,x); } 执行后输出结果是 -4 。

    21、.以下程序运行后的输出结果是____ main() { int a,b,c; a=10;b=20;c=(a%b1); printf("%d %d %dn",a,b,c); } 答案:10 20 0

    22、任意输入三条边(a,b,c)后,若能构成三角形且为等腰、等边和直角,则分别输出DY、DB和ZJ,若不能构成三角形则输出NO。 main() { float a,b,c,a2,b2,c2 scanf("%f%f%f%,&a,&b,&c); printf("%5.1f,%5.1f,%5.1f",a,b,c); if(a+b>c&&b+c>a&&a+c>b) { if(a==b || b==c || a==c)printf("DY"); if(a==b && b==c)printf("DB"); a2=a*a;b2=b*b;c2=c*c; if((a2+b2==c2) || (a2+c2==b2) || (b2+c2==a2)) printf("ZJ"); printf("n"); } else printf("NOn"); }

    23、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是___x=2______ if (a

    24、以下程序运行后的输出结果是 20,0 。  main() { int x=10,y=20,t=0; if(x==y)t=x;x=y;y=t; printf(“%d,%d n”,x,y); }

    三、程序题

    1、在购买某物品时,若所花的钱x在下述范围内,所付钱y按对应折扣支付:

    x x

    2、编一程序根据上网时间计算上网费用,计算方法如下:

    费用= 30元基数

    同时为了鼓励多上网,每月收费最多不超过150元。

    3、已知输入某课程的百分制成绩mark,要求显示对应五级制的评定,评定条件如下:

    等级= 优 mark≥90 良 80≤mark<90 中 70≤mark<80 及格 60≤mark<70 不及格 mark<60 第一题答案: #include void main() { float y; int x; scanf("%d",&x); if(x=1000 && x=2000 && x=3000) y=0.7*x; printf("%f",y); } 第二题答案: #include void main() { float y; int x; scanf("%d",&x); if(x=10 && x=50) y=2.5*x; if(y>150) y=150; printf("%f",y); } 第三题答案: #include void main() { int mark; scanf("%d",&mark); if(mark>=90) printf("优"); else if(mark>=80) printf("良"); else if(mark>=70) printf("中"); else if(mark>=60) printf("及格"); else printf("不及格"); }

    推荐访问:试题 实践 答案

    • 读/观后感
    • 精美散文
    • 读书笔记
    • 演讲
    • 反思
    • 方案
    • 心得体会