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的和、差、积、商及余数。