C++程序设计基础(上)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

习题2

2.1 选择题

1.已知 int i=0, x=1, y=0;,在下列选项中,使i的值变成1的语句是( )。

(A)if(x&&y) i++;

(B)if(x==y) i++;

(C)if(x||y) i++;

(D)if(!x) i++;

2.设有函数关系为,下列选项中,能正确表示上述关系的是( )。

(A)

            y = 1;
           if(x >= 0)
              if(x == 0) y = 0;
              else  y=-1;

(B)

            y = -1;
           if(x != 0)
          if(x > 0) y = 1;
             else y = 0

(C)

            if(x <= 0)
              if(x < 0) y = -1;
              else  y=0;
           else  y=1;

(D)

            y = -1;
             if(x <= 0)
              if(x < 0) y = -1;
              else y = 0;

3.假设i=2,执行下列语句后i的值为( )。

            switch(i)
            {  case 1:i++;
              case 2 : i --;
              case 3 : ++ i; break;
              case 4 : -- i;
              default : i ++;
            }

(A)1

(B)2

(C)3

(D)4

4.已知int i=0,x=0;,在下面while语句执行时循环次数为( )。

            while(!x && i< 3) { x++; i++; }

(A)4

(B)3

(C)2

(D)1

5.已知int i=3;,在下面do_while 语句执行时的循环次数为( )。

            do{ i--; cout<<i<<endl;}while(i!= 1);

(A)1

(B)2

(C)3

(D)无限

6.下面for语句执行时的循环次数为( )。

            int i, j;
            for (i=0, j=5;i=j;)
            { cout<<i<<j<< ndl; i++; j--; }

(A)0

(B)5

(C)10

(D)无限

7.以下程序段形成死循环的是( )。

(A)int x; for(x=0; x<3;) { x++; };

(B)int k = 0; do { ++k; } while(k>=0);

(C)int a=5; while(a) { a--; };

(D)int i=3; for(; i; i --);

2.2 阅读下列程序,写出运行结果

1.

            #include<iostream>
            using namespace std;
            int main()
            { int a,b,c,d,x;
              a = c = 0; b = 1; d = 20;
              if(a) d = d-10;
              else if(!b)
                  if(!c) x = 15;
                  else x = 25;
              cout << d << endl;
            }

2.

            #include<iostream>
             using namespace std;
             int main()
             { int a = 0, b = 1;
              switch(a)
              { case 0: switch(b)
                { case 0 : cout<<"a="<<a<<" b="<<b<<endl;
                        break;
                  case 1 : cout<<"a="<<a<<" b="<<b<<endl;
                        break;
                  }
                case 1: a++; b++; cout<<"a="<<a<<" b="<<b<<endl;
                }
            }

3.

            #include<iostream>
            using namespace std;
            int main()
            {  int i=1;
              while(i<=10)
              {  if(++i % 3!=1)continue;
                  else  cout<<i<<endl;
              }
            }

4.

            #include<iostream>
            using namespace std;
            int main()
            {  int i=0,j=5;
              do
              {  i++;j--;
                  if (i>3) break;
              } while (j>0);
              cout << "i=" << i << endl << "j=" << j << endl;
            }

5.

            #include<iostream>
            using namespace std;
            int main()
            {  int i,j;
              for(i=1, j=5; i<j; i++) { j--; }
              cout<<i<<'\t'<<j<<endl;
            }

6.

            #include<iostream>
            using namespace std;
            int main()
            {  int i,s=0;
              for(i=0; i<5; i++)
                switch(i)
                {  case 0:  s+=i;  break;
                  case 1:  s+=i;  break;
                  case 2:  s+=i;  break;
                  default: s+=2;
                }
              cout<<"s="<<s<<endl;
            }

7.

            #include<iostream>
            using namespace std;
            int main()
            {  int i,j,x=0;
              for(i=0; i<=3; i++)
              {  x++;
                  for(j=0; j<=3; j++)
                  {  if(j % 2)  continue;
                    x++;
                  }
                  x++;
              }
              cout << "x=" << x << endl;
            }

2.3 思考题

1.C++语言中有什么形式的选择控制语句?归纳它们的语法形式、应用场合。根据一个实际问题使用不同的条件语句编程。

2.什么叫做循环控制?归纳比较C++语言中各种循环控制语句的语法、循环条件和循环结束条件的表示形式及执行流程。

3.根据一个实际问题,用不同的循环语句编程,分析其优缺点。

4.用if语句和goto语句组织循环,改写上面第3题编写的程序,并分析在什么情况下可以适当使用goto语句。

5. 有以下程序,希望判断两个输入的整数是否相等。程序通过编译,但不能达到预期结果。请分析程序能够通过C++编译而不能得到期望结果的原因。

            #include<iostream>
            using namespace std;
            int main()
            {  int a,b;
              cout<<"a:";  cin>>a;
              cout<<"b:";  cin>>b;
              if(a=b)  cout<<a<<"等于"<<b<<endl;
              else   cout<<a<<"不等于"<<b<<endl;
            }

运行程序,输入a的值为4,b的值为9,显示结果如下:

            a: 4
            b: 9
            9等于9

2.4 编程题

1.输入某学生成绩,若成绩在85分以上,则输出“very good”;若成绩在60~85分之间,则输出“good”;若成绩低于60分,则输出“no good”。

2.输入3个整数,按从小到大的顺序输出它们的值。

3.输入三角形的3条边,判别它们能否形成三角形,若能,则判断是等边、等腰三角形,还是一般三角形。

4.输入百分制成绩,并把它转换成五级分制,转换公式为:

5.编程模拟剪刀、石头和布游戏。游戏规则为:剪刀剪布,石头砸剪刀,布包石头。玩游戏者从键盘输入s(表示剪刀)或r(表示石头)或p(表示布),要求两个游戏者交替输入,计算机给出输赢的信息。

6.输入一个整数,输出该整数的所有素数因子。例如,输入120,输出为2、2、2、3和5。

7.使用迭代公式xn+1=(xn+a/xn)/2 (n=0,1,2…;x0 =a/2)编程求某一正整数a的平方根。

8.已知x=0 °, 10 °, 20 °, …, 180 °,求sinx,cosx和tanx的值。

9.在100~200之间找出满足用3除余2,用5除余3和用7除余2的所有整数。

10.求100~999之间的水仙花数。所谓水仙花数,是指一个3位数,它的每位数字的立方之和等于该数。例如,因为153=1 3+5 3+3 3,所以153为水仙花数。

11.求1000以内的所有完数。所谓完数,是指一个数恰好等于它的所有因子之和。例如,因为6=1+2+3,所以6为完数。

12.编写程序显示由符号组成的三角形图案。例如,程序运行后,

            屏幕显示:   How many lines?
            用户输入:   5
            屏幕显示:   What character?
            用户输入:   *

则输出如下图案:

13.已知XYZ+YZZ=532,其中XYZ为数字,编写程序求出XYZ的值。