C++程序设计基础(第5版)(上)习题与解答第1章练习题同步练习1.1一、选择题1.一个最简单的C++程序,可以只有一个()。(A)库函数(B)自定义函数(C)main函数(D)空函数2.函数名是(),用于识别和调用函数。(A)关键字(B)标识符(C)常数(D)语句3.用C++语言编写的源程序要成为目标程序必须要经过()。(A)解释(B)汇编(C)编辑(D)编译4.C++程序中的简单语句必须以()结束。(A)冒号(B)分号(C)空格(D)花括号5.程序中把表达式“a+0.5”写为“a*0.5”,是()错误。(A)编译(B)连接(C)运行(D)逻辑【解答】CBDBD二、程序练习用一个简单问题,练习程序的书写格式。(1)问题输入一个摄氏温度值,转换输出华氏温度值。转换公式为:9325FC式中,F是华氏温度值,C是摄氏温度值。想一想,应该如何正确把转换公式写成C++表达式。(2)分析首先,分析本问题需要的数据表示和数据处理。数据:摄氏温度C,华氏温度F。处理:输入C;计算F;输出C和F。然后,逐步细化:①说明变量C和F;②显示提示输入摄氏温度值的信息;③从键盘输入C的值;④通过转换公式计算F的值;⑤以清晰的说明输出C和F。(3)编写代码简单程序语法格式:程序与外部连接表示主函数程序中需要连接系统的输入/输出流类库。使用VC2010,要用宏指令包含头文件,使用标准名空间的using语句。主函数定义包括函数头和函数体。程序框架:#includeiostreamusingnamespacestd;intmain(){//语句序列}根据以上分析写出一个完整的程序,并在集成开发环境编译执行。运行结果如下:请输入摄氏温度C:26.5摄氏温度C=26.5华氏温度F=79.7【解答】#includeiostreamusingnamespacestd;intmain(){doubleC,F;cout请输入摄氏温度C:\n;cinC;F=(9.0/5)*C+32;cout摄氏温度C=Cendl;cout华氏温度F=Fendl;}想一想把程序中的语句F=(9.0/5)*C+32;改为F=(9/5)*C+32;测试一下,程序计算结果将会有什么错误?想想为什么?同步练习1.21.在下列选项中,全部都是C++关键字的选项为()。(A)whileIFStatic(B)breakchargo(C)sizeofcaseextern(D)switchfloatinteger2.按C++标识符的语法规定,合法的标识符是()。(A)_abc(B)new(C)π(D)age3.在C++语句中,两个标识符之间()不能..作为C++的分隔符。(A)数字(B);(C):(D)+4.可以用于命名变量的标识符是()。(A)3x(B)const(C)name_2(D)a.com5.说明变量a是整型变量的正确语句是()。(A)inta;(B)inta;(C)Inta;(D)INTa;【解答】CAACA同步练习1.3一、选择题1.下列正确的八进制整型常量表示是()。(A)0a0(B)015(C)080(D)0x102.下列错误的十六进制整型常量表示是()。(A)0x11(B)0xaf(C)0xg(D)0x1f3.在下列选项中,全部都合法的浮点型数据的选项为()。(A)-1e3.515.2e-4(B)12.34-1e+50.1E-12(C)0.2e-2-12345.e-5(D)5.0e(1+4)0.18e+24.在下列选项中,正确的字符常量为()。(A)a(B)'name'(C)a(D)'\101'5.下列选项中,结果等于false的是()。(A)13(B)1=3(C)1==3(D)1!=3【解答】BCBDC二、程序练习sizeof运算可以求一个数据或数据类型所要求的字节数。例如:sizeof(int)结果为4sizeof(3.14)结果为8编写程序,显示以下数据类型要求的字节数:charshortintintlongintdoublelongdouble【解答】#includeiostreamusingnamespacestd;intmain(){coutsizeof(char)=sizeof(char)endl;coutsizeof(shortint)=sizeof(shortint)endl;coutsizeof(int)=sizeof(int)endl;coutsizeof(longint)=sizeof(longint)endl;coutsizeof(double)=sizeof(double)endl;coutsizeof(longdouble)=sizeof(longdouble)endl;}同步练习1.4一、选择题1.在下列语句选项中,()不能..交换变量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;2.关于下列语句,叙述错误的是()。inti=10,p=&i;(A)p的值为10(B)p指向整型变量i(C)p表示变量i的值(D)p的值是变量i的地址3.有以下变量说明,下面不正确...的赋值语句是()。inta=5,b=10,c;intp1=&a,p2=&b;(A)p2=b;(B)p1=a;(C)p2=p1;(D)c=p1(p2);4.有以下变量说明,下面正确的语句是()。inta=10,b;int&pa=a,&pb=b;(A)&pb=a;(B)pb=pa;(C)pb=&pa;(D)pb=pa;5.执行下面语句序列后,a和b的值分别为()。inta=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【解答】DABBB二、程序练习阅读以下程序,分析下面语句序列中每个字符“”和“&”的含义,并写出输出结果。#includeiostreamusingnamespacestd;intmain(){inta=10,b=20;int*p=&a,*q=&b;*p=*p**q;int&ra=a;ra=a;int*&rt=q;*rt=30;couta=a\nb=b\n*p=*p\n*q=*q\nra=ra\n*rt=*rtendl;}【解答】intmain(){inta=10,b=20;intp=&a,q=&b;//*为指针类型说明符,&是取址运算符p=pq;//第1、2、4个*为间址运算符,第3个是算数乘运算符int&ra=a;//&是引用说明符ra=a;int&rt=q;//*指针说明符,&引用说明符rt=30;//*间址运算符//字符串中的*是字符,其他是间址运算符couta=a\nb=b\np=p\nq=q\nra=ra\nrt=rtendl;}程序运行结果:同步练习1.5一、选择题1.假设有说明inta=0;doublex=5.16;则在以下语句中,()属于编译错误。(A)x=a/x;(B)x=x/a;(C)a=a%x;(D)x=xa;2.在下列运算符中,()优先级最高。(A)=(B)=(C)+(D)3.在下列运算符中,()优先级最低。(A)!(B)&&(C)!=(D)?:4.已知inti=1,j=2;则表达式i+++j的值为()。(A)1(B)2(C)3(D)45.已知inti=1,j=2;则表达式++i+j的值为()。(A)1(B)2(C)3(D)46.在下列表达式选项中,()是正确。(A)++(a++)(B)a++b(C)a+++b(D)a++++b7.已知inti=0,j=1,k=2;则逻辑表达式++i||--j&&++k的值为()。(A)0(B)1(C)2(D)38.执行下列语句后,x和y的值是()。intx,y;x=y=1;++x||++y;(A)1和1(B)1和2(C)2和1(D)2和29.设x为整型变量,不能..正确表达数学关系1x5的C++逻辑表达式是()。(A)1x5(B)x==2||x==3||x==4(C)1x&&x5(D)!(x=1)&&!(x=5)10.已知intx=5;执行下列语句后,x的值为()。x+=x-=xx;(A)25(B)40(C)–40(D)2011.设inta=1,b=2,c=3,d=4;则以下条件表达式的值为()。ab?a:cd?c:d(A)1(B)2(C)3(D)412.以下逗号表达式的值为()。(x=45,x5),x+25(A)25(B)20(C)100(D)45【解答】CDDCDCBCACAD二、书写表达式1.根据算术式写C++算术表达式。(1)11111xy(2)x{x[x(ax+b)+c]+d}+e(3)ln101abab(4)1cos48°2(5)cot2211xx(6)lg(a2+ab+b2)【解答】1.1/(1+1/(1+1/(x+y)))2.x*(x*(x*(a*x+b)+c)+d)+e3.log(1+pow(fabs((a+b)/(a–b)),10)4.sqrt(1+3.14159/2*cos(48*3.14159/180))5.1/tan((1-x*x)/(1+x*x))或者cos((1-x*x)/(1+x*x))/sin((1-x*x)/(1+x*x))6.log10(a*a+a*b+b*b)2.书写描述以下条件成立的C++逻辑表达式。(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.i%j==02.(nk)&&(n%2==0)3.1=x&&x104.xz||yz5.!(y=-100&&y=-10)&&!(y=10&&y=100)6.sqrt(pow((x-10),2)+pow((y-20),2))357.a+bc&&b+ca&&c+ab8.(year%4==0)&&(year%100!=0)||(year%400==0)三、程序练习1.阅读下列程序,写出运行结果。#includeiostreamusingnamespacestd;intmain(){inta=1,b=2;boolx,y;cout(a++)+(++b)endl;couta%bendl;x=!ab;y=a--&&b;coutxendl;coutyendl;}【解答】2.阅读下列程序,写出运行结果。#includeiostreamusingnamespacestd;intmain(){intx,y,z,f;x=y=z=1;f=--x||y--&&z++;coutx=xendl;couty=yendl;coutz=zendl;coutf=fendl;}【解答】3.编写一个程序。要求从键盘输入4个小于100的正整数,并打印输出它们的和、平均值、乘积、最小值和最大值。整数的平均值不一定是整数,注意程序中应做什么处理。【解答】#includeiostreamusingnamespacestd;intmain(){inta,b,c,d,sum,pro,min,max;doubleave;coutInputfourdifferentintegers(100):;cinabcd;sum=a+b+c+d;ave=sum/