习题1
1.1 选择题
1.一个最简单的C++程序,可以只有一个( )。
(A)库函数
(B)自定义函数
(C)main函数
(D)空函数
2.用C++语言编写的源程序要成为目标程序必须要经过( )。
(A)解释
(B)汇编
(C)编辑
(D)编译
3.C++程序中的简单语句必须以( )结束。
(A)冒号
(B)分号
(C)空格
(D)花括号
4.假设有说明 int a=0; double x=5.16;,则在以下语句中,( )属于编译错误。
(A)x=a/x;
(B)x=x/a;
(C)a=a%x;
(D)x=x*a;
5.执行C++程序时出现的“溢出”错误属于( )错误。
(A)编译
(B)连接
(C)运行
(D)逻辑
6.在下列选项中,全部都是C++关键字的选项为( )。
(A)while IF Static
(B)break char go
(C)sizeof case extern
(D)switch float integer
7.按C++标识符的语法规定,合法的标识符是( )。
(A)_abc
(B)new
(C)π
(D)"age"
8.在C++语句中,两个标识符之间( )不.能.作为C++的分隔符。
(A)数字
(B);
(C):
(D)+
9.下列正确的八进制整型常量表示是( )。
(A)0a0
(B)015
(C)080
(D)0x10
10.下列错误的十六进制整型常量表示是( )。
(A)0x11
(B)0xaf
(C)0xg
(D)0x1f
11.在下列选项中,全部都合法的浮点型数据的选项为( )。
(A)-1e3.5 15. 2e-4
(B)12.34 -1e+5 0.1E-12
(C)0.2e-2 -12345. e-5
(D)5.0e(1+4) 0.1 8e+2
12.在下列选项中,正确的字符常量为( )。
(A)"a"
(B)'name'
(C)a
(D)'\101'
13.在下列选项中,( )不能交换变量a和b的值。
(A)t=b; b=a; a=t;
(B)a=a+b; b=a-b; a=a-b;
(C)t=a; a=b; b=t;
(D)a=b; b=a;
14.关于下列语句,叙述错误的是( )。
int i=10, *p=&i;
(A)p的值为10
(B)p指向整型变量i
(C)*p表示变量i的值
(D)p的值是变量i的地址
15.有以下变量说明,下面不正确的赋值语句是( )。
int a=5, b=10, c; int *p1 = &a, *p2 = &b;
(A)*p2 = b;
(B)p1 = a;
(C)p2 = p1;
(D)c = *p1 *(*p2);
16.有以下变量说明,下面正确的语句是( )。
int a=10,b; int&pa=a,&pb=b;
(A)&pb = a;
(B)pb = pa;
(C)pb = &pa;
(D)*pb = *pa;
17.执行下面语句序列后,a和b的值分别为( )。
int a=5, b=3, t; int &ra=a; int &rb=b; t=ra; ra=rb; rb=t;
(A)3和3
(B)3和5
(C)5和3
(D)5和5
18.在下列运算符中,( )优先级最高。
(A)<=
(B)*=
(C)+
(D)*
19.在下列运算符中,( )优先级最低。
(A)!
(B)&&
(C)!=
(D)? :
20.已知int i=1, j=2;,则表达式 i+++j 的值为( )。
(A)1
(B)2
(C)3
(D)4
21.已知int i=1, j=2;,则表达式 ++i+j 的值为( )。
(A)1
(B)2
(C)3
(D)4
22.在下列表达式选项中,( )是正确。
(A)++(a++)
(B)a++b
(C)a+++b
(D)a++++b
23.已知 int i=0, j=1, k=2;,则逻辑表达式 ++i||- -j&&++k 的值为( )。
(A)0
(B)1
(C)2
(D)3
24.执行下列语句后,x的值是( ),y的值是( )。
int x, y; x=y=1; ++x || ++y;
(A)不确定
(B)0
(C)1
(D)2
25.设x为整型变量,不能正确表达数学关系1<x<5 的C++逻辑表达式是( )。
(A)1< x <5
(B)x==2||x==3||x==4
(C)1<x && x<5
(D)! (x<=1)&&! (x>=5)
26.已知 int x=5;,执行下列语句后,x的值为( )。
x+=x-=x*x;
(A)25
(B)40
(C)-40
(D)20
27.设 int a=1, b=2, c=3, d=4;,则以下条件表达式的值为( )。
a<b?a:c<d?c:d
(A)1
(B)2
(C)3
(D)4
28.以下逗号表达式的值为( )。
(x=4*5, x*5), x+25
(A)25
(B)20
(C)100
(D)45
1.2 根据下列数学表达式写出C++算术表达式
1.
2.x{x[x(ax+b)+c]+d}+e 3.
4.
5.
6.lg(a2+ab+b2)
1.3 用逻辑表达式表示下列条件
1.i 被j整除
2.n是小于正整数k的偶数
3.1≤x<10
4.x、y其中有一个小于z
5.y∉[-100,-10],并且 y∉[10,100]
6.坐标点(x, y)落在以(10, 20)为圆心,以35为半径的圆内
7.三条边a,b和c构成三角形
8.年份Year能被4整除,但不能被100整除,或者能被400整除
1.4 阅读下列程序,写出运行结果
1.
#include <iostream> using namespace std; int main() { int a = 1, b = 2; bool x, y; cout << (a++)+(++b) << endl; cout << a % b << endl; x = !a>b; y = a-- && b; cout << x << endl; cout << y << endl; }
2.
#include <iostream> using namespace std; int main() { int x, y, z, f; x = y = z = 1; f = --x || y-- && z++; cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; cout << "f = " << f << endl; }
3.
#include <iostream> #include<iomanip> using namespace std; int main() { int a=123; int &ra=a; int *pa=&a; cout<<setw(5)<<dec<<a<<setw(5)<<oct<<ra<<setw(5)<<hex<<*pa<<endl; }
1.5 思考题
1.什么是数据类型?变量的类型定义有什么作用?
2.普通数据类型变量和指针类型变量的定义、存储和使用方式有何区别?请编写一个程序验证之。
3.什么是数据对象的引用?对象的引用和对象的指针有什么区别?请用一个验证程序说明之。
4.数据对象在C++中有几种不同的访问方式?请编写一个程序验证之。
5.为了约束对数据对象的值进行只读操作,C++采用什么方式?请进行简要归纳。
6.什么是表达式?表达式值的类型由什么因素决定?使用不同运算符连接以下3个变量,请写出5个以上获得值为true的表达式:
int a=1, b=2; double x=0.5;
7.阅读以下程序,分析下面语句序列中每一个字符“*”和“&”的含义,并写出输出结果。
#include <iostream> using namespace std; int main() { int a=10, b=20; int *p = &a, *q = &b; *p = *p * *q; int & ra = a; ra=a; int * & rt = q; *rt = 30; cout<<"a="<<a<<"\nb="<<b<<"\n*p="<<*p<<"\n*q="<<*q <<"\nra="<<ra<<"\n*rt="<<*rt<<endl; }
1.6 编程题
1.输入一个3位整数,将它反向输出。
2.输入平面上某点横坐标x和纵坐标y,若该点位于图1.11所示的方块区域内,则输出1;否则,输出0。
图1.11 正方形区域
3.输入3个整数,求出其中最小数(要求使用条件表达式)。