最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

C++语言程序设计自测练习及答案

来源:动视网 责编:小OO 时间:2025-10-04 18:22:55
文档

C++语言程序设计自测练习及答案

C++语言程序设计自测练习(一)一、单项选择题1.C++源程序文件的默认扩展名为(A)。A.cppB.exeC.objD.lik2.由C++源程序文件编译而成的目标文件的默认扩展名为(C)。A.cppB.exeC.objD.lik3.由C++目标文件连接而成的可执行文件的默认扩展名为(B)。A.cppB.exeC.objD.lik4.C++程序从上机到得到结果的几个操作步骤依次是(B)。A.编译、编辑、连接、运行B.编辑、编译、连接、运行C.编译、运行、编辑、连接D.编辑、运行、编辑、连接5.
推荐度:
导读C++语言程序设计自测练习(一)一、单项选择题1.C++源程序文件的默认扩展名为(A)。A.cppB.exeC.objD.lik2.由C++源程序文件编译而成的目标文件的默认扩展名为(C)。A.cppB.exeC.objD.lik3.由C++目标文件连接而成的可执行文件的默认扩展名为(B)。A.cppB.exeC.objD.lik4.C++程序从上机到得到结果的几个操作步骤依次是(B)。A.编译、编辑、连接、运行B.编辑、编译、连接、运行C.编译、运行、编辑、连接D.编辑、运行、编辑、连接5.
C++语言程序设计自测练习(一)

一、单项选择题

    1. C++源程序文件的默认扩展名为( A    )。

        A. cpp       B. exe       C. obj       D. lik

    2. 由C++源程序文件编译而成的目标文件的默认扩展名为( C   )。

        A. cpp       B. exe       C. obj       D. lik

    3. 由C++目标文件连接而成的可执行文件的默认扩展名为(  B  )。

        A. cpp       B. exe       C. obj       D. lik

    4. C++程序从上机到得到结果的几个操作步骤依次是(  B    )。

        A. 编译、编辑、连接、运行        B. 编辑、编译、连接、运行

        C. 编译、运行、编辑、连接        D. 编辑、运行、编辑、连接

    5. 以下标识符中不全是保留字的是( B   )。

        A. case    for    int         B. default  then   while

        C. bool    class   long        D. goto   return  char

    6. 能作为C++程序的基本单位是(  C  )。

        A. 字符      B. 语句     C. 函数     D. 源程序文件

    7. 程序中主函数的名字为(  A  )。

        A. main      B. MAIN      C. Main      D. 任意标识符

    8. C++程序的基本模块为(  D  )。

        A. 表达式      B. 标识符      C. 语句      D. 函数

    9. 可用作C++语言用户标识符的一组标识符是(  B  )。

A. void    define    +WORD        B. a3_b3    _123     YN

C. for      -abc      Case        D. 2a      DO      sizeof

    10. 存储以下数据,占用存储字节最多的是( D   )。

        A. 0      B. ‘0’      C. “0”      D. 0.0

    11. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用(  D  )符号作为分隔符。

        A. 空格或逗号      B. 逗号或回车      C. 逗号或分号      D. 空格或回车

    12. 设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是(  C  )。

        A. 12      B. 144      C. 156      D. 288

    13. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式的表达式是(  D  )。

A. 1.0/a*b*c    B. 1/(a*b*c)    C. 1/a/b/(float)c    D. 1.0/a/b/c

    14. 设”int a=15,b=26;”,则”cout<<(a,b);”的输出结果是(  D  )。

A. 15      B. 26,15      C. 15,26      D. 26

    15. 设x是一个bool型的逻辑量,y的值为10,则表达式 x && y的值为(  C  )。

        A. 1      B. 0      C. 与x值相同      D. 与x值相反

16. x>0 && x<=10的相反表达式为(  A  )。

A. x<=0 || x>10 B. x<=0 && x>10     C. x<=0 || x<=10 D. x>0 && x>10

17. x>0 || y==5的相反表达式为(  B  )。

A. x<=0 || y!=5 B. x<=0 && y!=5 C. x>0 || y!=5 D. x>0 && y==5

    18.设x和y均为bool量,则x && y为真的条件是(  A  )。 

        A. 它们均为真      B. 其中一个为真     C. 它们均为假     D. 其中一个为假

    19.设x和y均为bool量,则x || y为假的条件是(  C  )。 

        A. 它们均为真      B. 其中一个为真     C. 它们均为假     D. 其中一个为假

    20. 字符串”a+b=12\\n”的长度为(  B  )。

        A. 6      B. 7      C. 8      D. 9

    21. 假定下列x和y均为int型变量,则不正确的赋值为(  B  )。

        A. x+=y++      B. x++=y++      C. x=++y      D. ++x=++y

    22. 下列的符号常量定义中,错误的定义是(  C  )。

        A. const M=10;         B. const int M=20; 

        C. const char ch;      D. const bool mark=true;

    23. 循环语句“for(int i=0; i        A. 1      B. n-1      C. n     D. n+1

    24. 在下面循环语句中循环体执行的次数为(  B  )。

for(int i=0; i if(i>n/2) break;

        A. n/2      B. n/2+1      C. n/2-1      D. n-1

    25. 在下面循环语句中内层循环体S语句的执行总次数为(  D  )。

for(int i=0; i for(int j=i; j        A. n2      B. (n+1)/2      C. n(n-1)/2      D. n(n+1)/2

    26. 在下面循环语句中循环体执行的次数为(  C  )。

int i=0,s=0; while(s<20) {i++; s+=i;}

        A. 4      B. 5      C. 6      D. 7

    27. 在下面循环语句中循环体执行的次数为(  A  )。

int i=0; do i++; while(i*i<10);

        A. 4      B. 3      C. 5      D. 2

    28. 当处理特定问题时的循环次数已知时,通常采用(  A  )来解决。

        A. for循环      B. while循环      C. do循环      D. switch语句

    29. 循环体至少被执行一次的语句为( C   )。

        A. for循环      B. while循环      C. do循环      D. 任一种循环

    30. switch语句能够改写为(  B  )语句。

        A. for      B. if      C. do      D. while

    31. do语句能够改写为(  D  )语句。

        A. 复合      B. if      C. switch     D. while

    32. 在下面的一维数组定义中,哪一个有语法错误。(  C  ) 

       A. int a[]={1,2,3};      B. int a[10]={0};

       C. int a[];              D. int a[5];

    33. 在下面的字符数组定义中,哪一个有语法错误。(  D  )。

       A. char a[20]=”abcdefg”;      B. char a[]=”x+y=55.”;

       C. char a[15];                D. char a[10]=’5’;

    34. 在下面的二维数组定义中,正确的是(  C  )。 

       A. int a[5][];                  B. int a[][5];      

       C. int a[][3]={{1,3,5},{2}};    D. int a[](10);

    35. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为(  C  )。

        A. 2      B. 4      C. 6      D. 8

    36. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(  A  )。

        A. 0      B. 4      C. 8      D. 6

    37. 若定义了函数 double *function(), 则函数function的返回值为(  B  )。

        A. 实数型    B.实数的地址    C.指向函数的指针    D.函数的地址

    38. 以下说法中正确的是(  B  )。  

        A. C++程序总是从第一个定义的函数开始执行

        B. C++程序总是从main函数开始执行

        C. C++函数必须有返回值,否则不能使用函数

        D. C++程序中有调用关系的所有函数必须放在同一个程序文件中

    39. 以下叙述中不正确的是(  C  )。

        A. 在一个函数中,可以有多条return语句

        B. 函数的定义不能嵌套,但函数的调用可以嵌套

        C. 函数必须有返回值

        D. 不同的函数中可以使用相同名字的变量

    40. 函数重载是指(  A  )。

        A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同

        B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同

        C. 两个以上的函数名字不同,但形参的个数或类型相同

        D. 两个以上的函数取相同的函数名,并且函数的返回类型相同

    41. 以下关于函数模板叙述正确的是(  C  )。

        A. 函数模板也是一个具体类型的函数

        B. 函数模板的类型参数与函数的参数是同一个概念

        C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数

        D. 用函数模板定义的函数没有类型

    42. 下列(  C  )的调用方式是引用调用。

        A. 形参和实参都是变量          B.形参是指针,实参是地址值

        C. 形参是引用,实参是变量      D.形参是变量,实参是地址值

    43. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择(  A  )。

        A. 内联函数  B.重载函数  C.递归函数  D.函数模板

    44. 函数原型语句正确的是(  B  )。

        A. int Function(void a);     B.void Function (int);

        C. int Function(a);          D.void int(double a);

    45. C++中函数返回值的类型是由(  B  )决定的。

        A. return语句中表达式的类型   B.该函数定义时的类型

        C.调用函数时的调用语句         D.系统根据结果

    46. 以下函数的返回结果是(  A  )。

        int function(char *x) {

            char *p=x; while(*p++); return(p-x-1);

        }

        A. 求字符串的长度               B.将字符串x连接到字符串p后面

        C. 将字符串x复制到字符串p中   D.将字符串x反向存放

    47. 函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为(  B  )个。

        A.  1     B.  2     C.  4     D.  5

    48. 设有如下函数定义 

    int f(char *s) {

        char *p=s;

        while(*p!=’\\0’) p++;

        return(p-s);

    }

    在主函数中用cout<        A. 3        B. 4        C. 5        D. 6

    49. 以下正确的函数原型语句是(  C  )。 

        A. double fun(int x,int y)            B. double fun(int x;int y)

        C. double fun(int,int);                D. double fun(int x,y);

    50. 以下正确的说法是(  B  )。

        A. 用户调用标准库函数前,必须重新定义

        B. 用户可以重新定义标准库函数,若如此,该函数将失去原有含义

        C. 系统不允许用户重新定义标准库函数

        D. 用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中

二、填空题

    1. C++语言是在_____C____语言的基础上发展起来的。

    2. C++语言的编译单位是扩展名为__________的__________文件。

    3. 行尾使用注释的开始标记符为__________。

    4. 多行注释的开始标记符和结束标记符分别为__________和__________。

    5. 用于输出表达式值的标准输出流对象是_________。

    6. 用于从键盘上为变量输入值的标准输入流对象是________。

    7. 一个完整程序中必须有一个名为________的函数。

    8. 一个函数的函数体就是一条_________语句。

    9. 当执行cin语句时,从键盘上输入每个数据后必须接着输入一个________符,然后才能继续输入下一个数据。

    10. 在C++程序中包含一个头文件或程序文件的预编译命令为__________。

    11. 程序中的预处理命令是指以______字符开头的命令。

    12. 一条表达式语句必须以______作为结束符。

    13. 在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是________定义的头文件。

    14. 使用#include命令可以包含一个头文件,也可以包含一个______文件。

    15.一个函数定义由________和________两部分组成。

    16.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的______语句。

    17.C++头文件和源程序文件的扩展名分别为______和______。

    18.程序文件的编译错误分为________和________两类。

    19.当使用_______保留字作为函数类型时,该函数不返回任何值。

    20.当函数参数表用______保留字表示时,则表示该参数表为空。

    21.从一条函数原型语句“int fun1(void);”可知,该函数的返回类型为______,该函数带有______个参数。

    22. 当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到________的开始位置。

    23. 假定x=5,y=6,则表达式x++*++y的值为__________。

    24. 假定x=5,y=6,则表达式x--*--y的值为__________。

    25. 假定x=5,y=6,则执行表达式y*=x++计算后,x和y的值分别为__________和__________。

    26. 假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为__________和__________。

    27. C++常数0x145对应的十进制值为__________。

    28. C++常数0345对应的十进制值为__________。

    29. 十进制常数245对应的十六进制的C++表示为__________。

    30. 十进制常数245对应的八进制的C++表示为__________。 

    31. signed char类型的值域范围是________至__________之间的整数。

    32. int和float类型的数据分别占用_________和__________个字节。

    33. float和double类型的数据分别占用_________和________个字节。

    34. bool和char类型的数据分别占用_________和________个字节。

    35. unsigned short int和int类型的长度分别为_________和________。

    36. 字符串”This\’s a book.\\n”的长度为__________。

    37. 字符串”\\nThis\’s a pen\\n\\n”的长度为__________。

    38. 在C++中存储字符串”abcdef”至少需要________个字节。

    39. 在C++中存储字符串”a+b=c”至少需要________个字节。

    40. 假定x和y为整型,其值分别为16和5,则x%y和x/y的值分别为__________和__________。

    41. 假定x和y为整型,其值分别为16和5,则x/y和double(x)/y的值分别为__________和__________。

    42. 假定x是一个逻辑量,则x && true的值为__________。

    43. 假定x是一个逻辑量,则x || true的值为__________。

    44. 假定x是一个逻辑量,则x && false的值为__________。

    45. 假定x是一个逻辑量,则x || false的值为__________。

    46. 假定x是一个逻辑量,则!x || false的值为__________。

47. 假定x是一个逻辑量,则x && !x的值为__________。

48. 假定x是一个逻辑量,则x || !x的值为__________。

49. 数学算式的C++表达式为________________。

    50. 数学算式的C++表达式为________________。

    51. 数学算式的C++表达式为________________。

    52. 设enum Printstatus{ready,busy,error}; 则 cout<    53. 设enum Printstatus{ready=2,busy,error}; 则cout<    54. 常数-4.205和6.7E-9分别具有__________和__________位有效数字。

    55. 枚举类型中的每个枚举值都是一个__________,它的值为一个__________。

    56. 常数100和3.62的数据类型分别为__________和__________。

    57. 若x=5, y=10, 则计算y*=++x表达式后,x和y的值分别为______和______。

    58. 假定x和ch分别为int型和char型,则sizeof(x)和sizeof(ch)的值分别为______和______。

    59. 假定x=10,则表达式x<=10?20:30的值为______。

    60. 表达式sqrt(81)和pow(6,3)的值分别为______和______。

三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。

1. 斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。

#include

void main() {

    int f,f1,f2,i;

cout<<” 斐波那契数列:\\n”;

    f1=0; f2=1;

cout< for(i=3;i<=20;i++) {

        f=______(1)______; 

cout<if(_____(2)______) cout<f1=f2;

f2=____(3)_______;

        }

cout<    }

(1)                 (2)                  (3) 

    2. 计算的值。

#include

        void main()

        {

            double x,p1=1,p2=1,s=0;

            int i,j=1;

cout<<"输入x的值:";

cin>>x;

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

                p1*=___(1)_____;

                p2*=____(2)____;

                s+=j*p1/p2;  //j的值为(-1)i+1

                j=____(3)____;

            }

cout<        }

(1)             (2)              (3) 

    3. 打印出2至99之间的所有素数(即不能被任何数整除的数)。

#include

#include

        void main()

        {

            int i,n;

            for(n=2; ___(1)___; n++) {

                int temp=int(sqrt(n));  //求出n的平方根并取整

                for(i=2; ___(2)___; i++)

                    if(n%i==0) ___(3)___;  

     if(i>temp) cout<            }

cout<<'\\n';

        }

(1)                 (2)                (3) 

    4. 采用辗转相除法求出两个整数的最大公约数。

#include

        void main()

        {

            int a,b;

cout<<"请输入两个正整数:";

cin>>a>>b;

while(a<=0 || __(1)___) {cout<<"重新输入:"; cin>>a>>b;}

            while(b) {

                int r;

                r=a%b;

                ___(2)___; ___(3)___;  //分别修改a和b的值

            }

cout<        }

(1)                   (2)                 (3) 

    5. 把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2 2 2 3”,输入50时得到的输出结果为“2 5 5”,输入37时得到的输出结果为“37”。

#include

        void main()

        {

            int x;

cout<<"请输入一个整数,若小于3则重输:";

do cin>>x; while(___(1)___);

            int i=2;

            do{

                while(___(2)___) {

         cout<                    x/=i;

                }

                ___(3)___;

}while(i if(x!=1) cout< cout<        }

(1)                 (2)              (3)

    6. 下面函数是求两个整型参数a和b的最小公倍数。

       int f2(int a, int b)

       {

           int i=2, p=1;

           do {

               while(a%i==0 && ___(1)___) {

                   p*=i; a/=i; b/=i;

               }

               ___(2)___;

}while(a>=i && ___(3)___);

           return p*a*b;

       }

(1)                     (2)                       (3) 

    7. 在输出屏幕上打印出一个由字符’*’组成的等腰三角形,该三角形的高为5行,从上到下每行的字符数依次为1,3,5,7,9。

#include

       void main()

       {

           int i,j;

           for(i=1;___(1)___;i++) {

     for(j=1;j<=9;j++)

         if(j<=5-i || ___(2)___) cout<<’ ’;

                   else ___(3)___;

     cout<           }

       }

(1)                     (2)                  (3) 

    8. 统计字符串中英文字母个数的程序。

#include

       int count (char str[]);

       void main(){

           char s1[80];

cout <<”Enter a line:”;

cin >>s1;

cout <<”count=”<       }

       int count(char str[]){

           int num=0;  //给统计变量赋初值

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

if (str[i]>=’a’ && str[i]<=’z’ ||___(1)___ )

               ___(2)___;

       ___(3)___;

       }

(1)                              (2)                        (3)  

    9. 主函数调用一个fun函数将字符串逆序。

#include

#include

   ___(1)___;

   void main( ) {

       char s[80];

cin>>s;

       ___(2)___;

cout<<”逆序后的字符串:”<   }

   void fun(char ss[]) {

       int n=strlen(ss);

       for(int i=0; ___(3)____; i++) {

          char c=ss[i];

          ss[i]=ss[n–1–i];

          ss[n–1–i]=c;

       }

       }

(1)                       (2)                    (3) 

    10. 从一个字符串中删除所有同一个给定字符后得到一个新字符串并输出。

#include

       const int len=20;

       void delstr(char a[],char b[],char c);

       void main() {

           char str1[len],str2[len];

           char ch;

cout<<"输入一个字符串:";

cin>>str1;

cout<<"输入一个待删除的字符:"; 

cin>>ch;

           delstr(str1,str2,ch);

cout<       }

       void delstr(char a[],char b[],char c)

       {

           int j=0;

           for(int i=0; ___(1)___; i++)

               if(___(2)___) b[j++]=a[i];

           b[j]=___(2)___;

       }

(1)                       (2)                      (3) 

四、写出程序运行结果

1. #include

#include

        void main()

        {

            int a[8]={25,48,32,85,,18,48,29};

            int max,min;

            max=min=a[0];

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

if(max>a[i]) max=a[i];

      if(min            }

cout<<"max:"< cout<<"min:"<        }

2. #include

        void main()

        {

            int a,b;

for(a=1,b=2; b<50;) {

     cout<                a=a+b;

                b=a+b;

            }

cout< cout<        }

3. #include

        const int M=3, N=4;

        void main()

        {

            int i,j,s=0;

for(i=1;i<=M;i++)

     for(j=1;j<=N;j++)

                    s+=i*j;

cout<<”s=”<        }

4. #include

       void main()

       {

           int a=2,b=5,c=0;

if(a+b>10) c=a*b; else c=3*a+b;

if(c<=20) cout< cout<           a=a+b; b=a+b;c+=a+b;

cout<<"a,b,c="<       }

5. #include

       void main()

       {

           int x=5;

           switch(2*x-3) {

case 4: cout< case 7: cout<<2*x+1<<’ ’;

case 10: cout<<3*x-1<<’ ’; break;

default: cout<<"default"<           }

cout<<"switch end."<       }

6. #include

#include

       int a[4]={36,-5,73,8};

       void main()

       {

           int i,y;

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

     if(a[i]<0) y=1;

     else if(a[i]<10) y= a[i]* a[i]+3;

     else if(a[i]<60) y=4*a[i]-5;

               else y=int(sqrt(a[i]));  // sqrt(x)为取x的平方根函数

     cout<           }

       }

7. #include

       int a[8]={36,25,20,43,12,70,66,35};

       void main()

       {

           int s0,s1,s2;

           s0=s1=s2=0;

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

               switch(a[i]%3) {

                 case 0: s0+=a[i];break;

                 case 1: s1+=a[i];break;

                 case 2: s2+=a[i];break;

               }

           }

cout<       }

8. #include

       const int N=5;

       void main()

       {

           int i,p=1,s=0;

for(i=1;i               p=p*i;

               s=s+p;

     cout<     cout<           }

       }

9. #include

       const int M=20;

       void main()

       {

           int c2,c3,c5;

           c2=c3=c5=0;

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

               if(i%2==0) c2++;

               if(i%3==0) c3++;

               if(i%5==0) c5++;

           }

cout<       }

10. #include

       void main()

       {

           int i,j;

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

     for(j=i;j<5;j++) cout<<’*’;

     cout<           }

       }

11. #include

       void main()

       {

for(int i=1,s=0;i<20;i++) {

               if(i%2==0 || i%3==0) continue;

     cout<               s+=i;

           }

cout<       }

五、指出程序或函数的功能

1. #include

        void main()

        {

            int i,s=0;

for(i=2;i<=30;i+=2) s+=i*i;

cout<<"s="<        }

2. #include

#include

#include

        void main()

        {

            int i=10,a;

while(i>0) {

               a=rand()%90+10;

               int j, k=int(sqrt(a)+1e-5);  //sqrt(x)为求x的平方根函数

for(j=2; j<=k; j++)

                  if(a%j==0) break;

     if(j>k) {cout<            }

        }

    3.  void trans(int x)

        {  

            char a[10];

            int i=0,rem;  

            do {

                rem=x%16;

                x=x/16;

     if(rem<10) a[i]=48+rem; //’0’字符的ASCII码为48

                else a[i]=65+rem;        //’A’字符的ASCII码为65

                i++;

            }while(x!=0);

while(i>0) cout< cout<        }

4. #include

       double f1(int n) {

           double sign=1,s=1;

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

               s+=sign/(i*i);

               sign*=-1;

           }

           return s;

       }

       void main()

       {

           int a;

cin>>a;

cout<       }

    5. double f1(double a, double b, char op) {

           switch(op) {

             case ’+’: return a+b;

             case ’-’: return a-b;

             case ’*’: return a*b;

             case ’/’: if(b==0) {

     cout<<"divided by 0!"<                           exit(1);

                       }

                       else return a/b;

default: cout<<"operator error!"<                      exit(1);

           }

       }

6. #include

#include

       void main()

       {

           int x,y;

cin>>x;

           y=int(sqrt(x));  //sqrt(x)为求x的算术平方根

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

     if(x%i==0) cout<<”x=”<       }

7. #include

       void main()

       {

           int i,p=1,s=0;

           int N;

cout<<"输入一个正整数:";

cin>>N;

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

               p*=i;

               s+=p;

           }

cout<       }

8. #include

#include

#include

       const N=10;

       int ff(int x, int y) {

           int z;

cout<  cin>>z;

           if(x+y==z) return 1; else return 0;

       }

       void main()

       {

           int a,b,c=0;

           srand(time(0));  //初始化随机数序列

for(int i=0;i               a=rand()%20+1;   //rand()函数产生0-32767之间的一个随机数

               b=rand()%20+1;

               c+=ff(a,b);

           }

cout<<"得分:"<       }

    9. int s1(int n)

       {

           int x;

           if(n==1) x=1;

           else x=s1(n-1)+n*n;

           return x;

       }

    10. void fun5(char* a, const char* b)

        {

            while(*b) *a++=*b++;

            *a=0;

        }

11. template

        bool fun8(T a[], int n, T key)

        {

for(int i=0;i                if(a[i]==key) return true;

            return false ;

        }

六、编程题

    1. 编一程序求出满足不等式1+1/2+1/3+...+1/n≥5的最小n值。

    2. 计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。

    3. 求满足不等式22+42+...+n2<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用do循环编程。

    4. 已知,求出并显示当x依次取从键盘输入的不同值时所对应的y值,要求把a定义为常量,其值设定为10.2,x的每个值由键盘输入,并假定用-100作为键盘输入数据的终止标志,求平方根函数为sqrt(x)。

C++语言程序设计自测练习(一)参考解答

一、单项选择题

1. A   2. C   3. B   4. B   5. B   6. C   7. A   8. D   9. B   10. D 

11. D  12. C  13. D  14. D  15. C  16. A  17. B  18. A  19. C  20. B 

21. B  22. C  23. C  24. B  25. D  26. C  27. A  28. A  29. C  30. B 

31. D  32. C  33. D  34. C  35. C  36. A  37. B  38. B  39. C  40. A 

41. C  42. C  43. A  44. B  45. B  46. A  47. B  48. B  49. C  50. B

二、填空题

1. C      2. .cpp 程序  3. //     4. /* */    5. cout      6. cin 

7. main   8. 复合       9. 空白   10. #include   11. #     12. 分号

13. 用户(或编程者)14. 程序 15. 函数头 函数体   16. 原型(或声明)

17. .h .cpp           18. 警告(warning) 致命(error) 

19. void  20. void  21. int 0     22. 下一行  23. 35       24. 25 

25. 6 30  26. 4 11  27. 325       28. 2       29 29. 0xF5 (F大小写均可) 

30. 0365  31. -128 +127 32. 4 4   33. 4 8     34. 1 1      35. 2 4 

36. 15    37. 15        38. 7     39. 6       40. 1 3      41. 3 3.2 

42. x     43. true  (或1)  44. false (或0)   45. x        46. !x 

47. false (或0) 48. true  (或1)  49. (x+y)/(2*x*y)        50. 3*x*y/(x+y) 

51. 1/(a*x*x+b*y*y)     52. 1     53. 3        54. 4 2     55. 枚举常量 整数 

56. int double    57. 6 60        58. 4 1      59. 20      60. 9 216 

三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面

1. (1) f1+f2                   (2) i%5==0      (3) f

2. (1) x                       (2) I            (3) -j

3. (1) n<=99 (2) i<=temp (3) break

4. (1) b<=0 (2) a=b          (3) b=r

5. (1) x<3 (或x<=2) (2) x%i==0       (3) i++

6. (1) b%i==0                  (2) i++ (或++i)   (3) b>=i

7. (1) i<=5 (2) j>=5+i (3) cout<<’*’

8. (1) str[i]>=’A’ && str[i]<=’Z’   (2) num++     (3) return num 

9. (1) void fun(char ss[]) (2) fun(s) (3) i10. (1) a[i] (或a[i]!=’\\0’)   (2) a[i]!=c        3) '\\0'

四、写出程序运行结果

1. max:85 

min:18 

2.

1 2 3 5 8 13 21 34 

55  

3. s=60       //6分

4.  121 

    a,b,c=7,12,30 

5.    11 14 switch end. 

6.   36  139   -5    1   73    8    8   67 

7.       114 138 55 

8.         1    1    1 

           2    2    3 

           3    6    9 

           4   24   33 

9.     10 6 4 

10.    ***** 

       **** 

       *** 

       ** 

       *

11.     1 5 7 11 13 37 

五、指出程序或函数的功能

1.    计算并输出22+42+62+...+302的值。

2.    随机产生出10个10至99之间的素数并显示出来。

3.此函数用于把十进制整数x转换为十六进制数字串输出。

4.    计算并输出1+的值,其中a的值由键盘输入。

5.     以参数a和b为运算对象,以参数op为四则算术运算符,求出运算结果并返回。

6.    把从键盘上输入的一个整数x分解为所有可能的每两个因子之积。

7.    计算并输出的值,其中N值由键盘输入。

8.    让计算机随机产生出10道20以内整数的加法题供用户计算,每道题10分,计算完成后打印出得分。

9. 求出1+22+32+...+n2的值。

10.    实现字符串系统函数strcpy的功能,把b所指的字符串拷贝到a所指的字符数组空间中。

11.    函数模板,从一维数组a[n]中查找值为key的元素,若查找成功则返回真否则返回假。

六、编程题

1.      void main()

        {

            int i=0; double s=0;

while(s<5) s+=double(1)/++i;

cout<<"n="<        }

    若采用for循环编写程序,则如下所示:

#include

        void main()

        {

            int i; double s=0;

for(i=1; s<5; i++) s+=1.0/i;

cout<<"n="<               //注意:此i-1的值为所求的n值

        }

2. #include

       void main()

       {

           int i;    //用i作为循环变量

           int p=1;  //用p作为累乘变量

           int s=1;  //用s作为累加循环变量

for(i=1;i<=10;i++) {p*=3; s+=p;}

cout<       }

3. #include

       void main()

       {

           int i=0;  //用i作为依次取值偶数的变量

           int s=0;  //用s作为累加变量

           do {

               i+=2;

               s+=i*i;

}while(s<1000);

cout<<"n="<       }

4. #include

#include

       const double a=10.2; 

       void main()

       {

           double x,y;

cin>>x;

            while(x!=-100) {

     if(x<=0) y=sqrt(a*a+x*x);

                else y=3*a*x*x+4*a*x-1;

     cout<     cin>>x;

           }

       }

文档

C++语言程序设计自测练习及答案

C++语言程序设计自测练习(一)一、单项选择题1.C++源程序文件的默认扩展名为(A)。A.cppB.exeC.objD.lik2.由C++源程序文件编译而成的目标文件的默认扩展名为(C)。A.cppB.exeC.objD.lik3.由C++目标文件连接而成的可执行文件的默认扩展名为(B)。A.cppB.exeC.objD.lik4.C++程序从上机到得到结果的几个操作步骤依次是(B)。A.编译、编辑、连接、运行B.编辑、编译、连接、运行C.编译、运行、编辑、连接D.编辑、运行、编辑、连接5.
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top