C++程序设计与案例分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.16 实战演练

学生成绩管理系统中的数据类型:

学生成绩评定通常有如下两类方法:一是百分制,即用 0~100 的数值来描述成绩;二是等级制,通常可分为两级制和五级制,即两级制为合格与不合格,五级制为优秀、良好、中等、及格与不及格。百分制通常根据是否有小数选择int(无小数)或float(有小数)数据类型描述,等级制通常采用char数据类型描述。

实战一:输入学生的10科课程成绩,计算总分和平均分(百分制)。

程序代码:

          #include <iostream.h>
          int  main()
          {
              float  sum=0,average=0,score;
              int  i;
              cout<<"please  input  10  numbers(0~100):"<<endl;
              for(i = 0; i < 10; i ++)
              {
                  cin>>score;
                  sum = sum + score;
              }
              average = sum / 10;
              cout << "sum = " << sum << endl;
              cout << "average = " << average << endl;
              return 0;
          }

运行程序,输入10个数据,得到的输出结果如下:

实战二:输入学生的10科课程成绩,统计各个等级的课程门数(等级制)。

程序代码:

          #include <iostream.h>
        int  main()
        {
            int  a=0,b=0,c=0,d=0,e=0;
            char  score;
            int  i;
            cout<<"please  input  10  characters(A,B,C,D,E):"<<endl;
            for(i = 0; i < 10; i ++)
            {
                cin>>score;
                switch(score)
                {
                    case 'a':
                    case 'A': a = a + 1; break;
                    case 'b':
                    case 'B': b = b + 1; break;
                    case 'c':
                    case 'C': c = c + 1; break;
                    case 'd':
                    case 'D': d = d + 1; break;
                    case 'e':
                    case 'E': e = e + 1; break;
              }
            }
            cout<<"优秀(A级)的课程门数为: "<<a<<endl;
            cout<<"良好(B级)的课程门数为: "<<b<<endl;
            cout<<"总等(C级)的课程门数为: "<<c<<endl;
            cout<<"及格(D级)的课程门数为: "<<d<<endl;
            cout<<"不及格(E级)的课程门数为: "<<e<<endl;
            return 0;
        }

运行程序,输入10个数据,得到的输出结果如下:


习题

一、填空题

1. 在下面的枚举类型中,BLUE的值是______ 。

            enum  COLOR{WHITE, RED=50, BLACK, BLUE, GREEN=100};

2. 字符串"LineOne\x0AlineTwo\12"的长度是______ 。

3. 字符串"Please enter \"Yes\" or \"No\""的长度是______ 。

4. 设x = 2.5,a = 7,y = 4.7,表达式x + a % 3 * (int)(x + y) % 2 / 4的值为______ 。

5. 执行完下列语句后,a、b、c三个变量的值分别为______ 、______ 、______ 。

              a = 30;
              b = a ++;
              c = ++a;

6. 设a = 2,b = 3,x = 3.5,y = 2.5,表达式float(a + b) / 2 + (int)x % int(y)的值为 ______。

7. 设a为int型变量,则执行表达式a=36/5%3后,a的值为 ______。

8. 若"int a = 6, x = 3;",则执行x += x = a *= x后,x的值为______ 。

9. 若"int x = 3, y = 2, z = 1;",则表达式x && y < z的值为______ 。

10. 设x = 10100011,若要通过x ^ y使x的高4位取反,低4位不变,则y的二进制数为______ 。

二、选择题

1. 以下运算符,优先级最低的是( ),优先级最高的是( )。

A.&&

B.&

C.|=

D.||

2. 以下选项中,与m = n ++完全等价的表达式是( )。

A.m = n, n = n+1

B.n = n+1, m = n

C.m = ++n

D.m += n+1

3. 已有定义"int x = 3, y = 4, z = 5;",则表达式!(x + y) + z && y + z / 2的值为( )。

A.0

B.1

C.2

D.6

4. 若int x = 8,则x += x = x * x的值为( )。

A.80

B.112

C.32

D.32

5. 表达式0x13 & 0x17的值为( )。

A.0x17

B.0x13

C.0xf8

D.0xec

6. 设有以下语句:

          int  x=3,y=6,z;
          z = x ^ y << 2;

则z的二进制值是( )。

A.00010100

B.00011000

C.00011100

D.00011011

7. 已定义“int x = 2, y = 3, z = 4;”,则表达式x + y > z的值为( )。

A.3

B.2

C.1

D.0

8. 若a = 1,b = 2,则a | b的值为( )。

A.0

B.1

C.2

D.3

9. 表达式~0x13的值为( )。

A.0xFF71

B.0xFF68

C.0xFFEC

D.0Xff17

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

A.表达式a &= b等价于a = a&b

B.表达式a |= b等价于a = a|b

C.表达式a ! = b等价于a = a! b

D.表达式a ^= b等价于a = a^b

三、编程题

1. 加密的一个方法是用原来字母后的第n个字母(如第3个)代替原来的字母。例如,把A用其后第3个字母D替代。根据此规则,原文Secret的密码是Vhfuhw。现有一密码为LoryhX,它的原文是什么?请编程验证(提示:将密码的各个字符分别赋值给字符变量c1、c2、c3、c4、c5、c6中,将每个变量减3就得到各个字符的原文,然后输出出来)。

2. 编写并运行一个程序,输出两个整数100和9的和、差、积、商及余数。