本文共 3066 字,大约阅读时间需要 10 分钟。
本节书摘来自异步社区出版社《好学的C++程序设计》一书中的第2章,第2.5节,作者: 张祖浩 , 沈天晴,更多章节内容可以访问云栖社区“异步社区”公众号查看。
好学的C++程序设计
1.请回答下列问题:(1)什么是变量存储空间、存储空间大小、存储空间地址、存储空间类型、存储空间内容?
(2)基本数据类型有哪几种?
(3)各基本数据类型的存储空间各占多少个字节?长度是几位?
2.请回答下列问题:
(1)设一个unsigned short型变量的二进制值为1011011011010111。试将它化为十六进制数和十进制数。此数在存储空间中是怎样安置的?作图表示之。
(2)试问一个int型数据长度多长?存储空间多大?能化成几位十六进制数?
3.试问下列各小题中的小段程序执行后,能否输出正确结果?为什么?
(1)short a=23456,b=12345,sum=a+b;
cout<<<'\n';
(2)short c=-13579,d=-24680,sum=c+d;
cout<<<'\n';
(3)unsigned short e=34567,f=45678,s=e+f;
cout<<<'\n';
4.请回答下列问题:
(1)试用标准科学记数法表示实数值123.4。
(2)试用一般形式表示实数值0.6789E+3。
(3)后缀F或f的实数是什么类型,无后缀的实数默认是什么类型?
5.请回答下列问题:
(1)字符‘0’、‘A’和‘a’的ASCII码的十进制值是多大?
(2)设有一个字符型变量的值为‘h’,试写出该变量存储空间中的二进制数。
6.试问下列三者在内存中各占多少个字节?如何用存储空间字节数运算符sizeof检测?
(1)‘w’ (2)“I am a boy.” (3)“为振兴中华而努力学习!”
7.对数据变量的访问是什么意思?
8.请回答:(1)别名有没有配给的存储空间?为何访问别名就是访问实名?(2)能用别名对某变量进行访问的关键何在?
9.已对a、b、c、d诸变量分别作出了如下声明:
(1)int a; (2)double b; (3)char c; (4)int *d;
试分别作出它们的别名声明(设它们的别名分别表示为e、f、g、h)。
10.程序如下,试写出程序运行结果。
#includeusing namespace std;int main(){ int a=2,b=3,c,&u=a; int &v=b; a=a+b; v=u+v; c=u+v; cout<<"a="< <<'\t'<<"b="<<<'\t' <<"c="< <<'\t'<<"u="< <<'\t' <<"v="< <<'\n'; return 0;}
11.怎样能由变量名获得变量地址?
12.请回答下列问题:
(1)在图2.6(B)中,指针变量p的存储空间中存储着什么?
(2)用什么语句,能使图2.7(A)中的指针变量q不指向变量b,而指向变量a?
13.试作图表明下列语句全部执行以后,指针变量p1、p2、p3、p4的指向。
char a,b,c,d, *p1, *p2, *p3, *p4;p1=&a; p2=&b;p3=p2=&c; p4=p1=&d;
14.已作如下声明和赋值,试问要最终使p2指向c,p3指向a,p4指向c,p1指向b还需要添加哪些语句?
int a,b,c, *p1, *p2, *p3, *p4;p2=p1=&b;
15.作图表示short型指针和double型指针所指的存储空间各有多大?
16.请回答下列问题:
(1)指针所指是什么意思?
(2)所指变量是什么意思?
(3)能用指针对某变量进行访问的关键何在?
(4)在什么情况下,访问指针所指就是访问所指变量?
17.程序如下,试写出其输出结果。
#includeusing namespace std;int main(){ int a=18,b=6, *u=&a, *v=&b; *u=25; a=a-b; *v=10; cout<<"a="< <<'\n'; cout<<"b="<<<'\n'; return 0;}
18.看图2.12,x、u、a分别表示3种变量,箭头表示指针关系。请回答下列问题:
(1)x的一级所指变量是哪个变量?x的二级所指变量是哪个变量?
(2)访问x的一级所指 x 就是访问哪个变量?访问x的二级所指 *x 就是访问哪个变量?
(3)u的一级所指是哪个变量?访问u的一级所指 *u 就是访问哪个变量?
(4)哪个变量的值是u的地址?哪个变量的值是a的地址?
19.在例2-4程序中,若将E行改为:
t=*x; *x=*y; *y=t;
并且,t的类型也作相应改变。试问:(1)程序中t的类型该作怎样改变?(2)改后程序运行结果会是怎样的?(3)图2.11中会有些什么变化?(4)写出改后整个程序。
20.声明一个指针p,而未进行初始化或赋值,此时可否对其所指*p进行赋值?为什么?
21.下列语句中的“&”和“*”各表示什么意思?
(1)&x; (2)char x=&u; (3)x=&a; (4)t=x; x=y; **y=t;
(5)int x; (6)char x=&a; (7)x=a; (8)double a, u=&a, **x=&u;
(9)int *x; (10)char &x=a; (11)c=u; (12)double a=3,b=4,&x=a;
22.设只作了如下声明语句:
char *p1; int *p2; double x, *p3=&x;
然后分别执行如下各小题中的语句。试问有没有错误?错在何处?
(1)*p2=24680; (2)p2=p3; (3)p3=p1; (4)p1=&x;
23.程序如下,试将变量a、b、u、v之间的初期关系用简图表示之,程序运行完毕时关系有何变化?输出结果如何?
#includeusing namespace std;int main(){ char a='A',b='B'; char *u=&a, *v=&b,c; c=*u; *u=*v; *v=c; cout<<"a="< <<'\t'; cout<<"b="<<<'\n'; return 0;}
24.怎样声明常值变量、常值指针变量、只读指针变量和只读别名变量?
25.试设计一个程序,声明3个double型变量a、b和c。对a输入一个实数,对b输入一个实数,将二者之和赋给c。请输出c之值。
26.对题10的程序重新改写。在用别名访问变量的地方,改为用指针所指访问变量,其他需要改变的地方作相应改变,最终达到同样的效果。写出改变后的程序。
27.对题23的程序重新改写。在用指针所指访问变量的地方,改为用别名访问变量,其他需要改变的地方作相应改变,最终达到同样的效果。写出改变后的程序。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。