logo资料库

C++课本习题带答案.doc

第1页 / 共62页
第2页 / 共62页
第3页 / 共62页
第4页 / 共62页
第5页 / 共62页
第6页 / 共62页
第7页 / 共62页
第8页 / 共62页
资料共62页,剩余部分请下载后查看
习题1
习题2
习题3
习题4
习题5
习题6
习题7
习题8
习题9
习题10
习题11
习题12
习题 1 } 1.4 设计一个 C++程序,输入三个学生的成 绩,求其总成绩。 解: # include main() { int s1,s2,s3,sum; cout<<"请输入三个学生的成绩:"; cin>>s1>>s2>>s3; sum=s1+s2+s3; cout<<"sum="< void main(void) { int sub(int x,int y); int a,b,m; cout<<"Input a,b:"; cin>>a>>b; m=sub(a,b); cout<<"a-b= "<(形式参数) { /* 注释 */ 变量说明; 执行语句; // 注释内容 } (3)程序书写规则为同一层语句同列书 写、内层语句缩进两个字符、函数定义在第一 列书写。严格区分字母的大小写,即大写与小 写代表两个不同变量。 (4)C++输入/输出通过流 cin 和 cout 来实 现的 1.2 简述 C++程序开发的步骤。 答: (1)分析问题。根据实际问题,分析需求, 确定解决方法,并用适当的工具描述它。 (2)编辑程序。编写 C++源程序,并利用 一个编辑器将源程序输入,保存到计算机中的 某一个文件中。文件的扩展名为.cpp。 (3)编译程序。编译源程序,产生目标程 序。目标程序文件的扩展名为.obj。 (4)连接程序。将一个或多个目标程序与 库函数进行连接后,产生一个可执行文件。可 执行文件的扩展名为.exe。 (5)运行调试程序。运行可执行文件,分 析运行结果。若有错误进行调试修改。 在编译、连接和运行程序过程中,都有可 能出现错误,此时要修改源程序,并重复以上 过程,直到得到正确的结果为止。 1.3 设计一个 C++程序,输出以下信息: *************** Hello! *************** 解: # include void main() { cout<<" ***************"<<'\n'; cout<<" Hello!"<<'\n'; cout<<" ***************"<<'\n';
习题 2 2.1 简述标识符定义。指出下列用户自己定 义的标识符中哪些是合法的?哪些是非法的? 如果是非法的,为什么? 答: xy √ Book√ 3ab×(不能数字开头) x_2 √ switch×(保留字) integer√ page-1 × ( 不 能 包 含 “ - ” ) MyDesk√ #NO×(不能包含“#”) y.5×(不能包含“.”) char×(保留字) _name √ 2.2. C++语言中有哪些数据类型? 答: 整型 基本类型 实型 C++数据类型 字符型 char 无值型 void 数组 指针 导出类型 结构体 2.3 什么是常量?什么是变量? 答: 在程序执行过程中,其值不能被改变的量 类 图 2.1 C++的数据类型 共同体 称为常量。 在程序执行过程中,其值可以改变的量称 为变量。变量必须用标识符来命名。 2.4 下列常量的表示在 C++中是否合法? 若合法,指出常量的数据类型;若非法,指出 原因。 答: -123 √(整型,十进制) 0321√(整型, 八 进 制 ) .567 √ ( 浮 点 型 , 十 进 制 小 数 ) 1.25e2.4 ×(指数部分有“.”,必须是整 数) 32L√(长整型,十进制) '\t'√(字符型,字符常量) "Computer"√ (字符型,字符串常量) 'x'√ (字符型,字符常量) "x"√(字符 型,字符串常量) '\85'×(85 不是八进数) 2.5 字符常量与字符串常量有什么区别? 答: C++中字符常量为用单引号括起来的单个 字符,而字符串常量为用双引号括起来的多个 字符,且字符串最后加入结束标志’\0’。 2.6 求出下列算术表达式的值: ( 1 ) x+a%3*(int)(x+y)%2/4 x=2.5,y=4.7,a=7 设 答: 按优先级先计算强制类型转换:(int) (2.5+4.7)=7 再 按 左 结 合 性 计 算 : 2/ *7 % a%3*7%2/4=7%3*7%2/4=1 4=7%2/4=1/4=0 最后计算 x+0=2.5+0=2.5 ( 2 ) (float)(a+b)/2-(int)x%(int)y 设 a=2,b=3,x=3.5,y=2.5 答: 按优先级先计算强制类型转换:(float) (a+b)/2=5.0 /2=2.5 短整型 short int 整型 int 长整型 long int 最 单精度型 float 双精度型 double (int)x%(int)y=(int)3.5%(int)2.5=3%2=1 后 计 算 (float)(a+b)/2-(int)x%(int)y=2.5-1=1.5 (3)'a'+x%3+5/2-'\24' 'a'+x%3+5/2-'\24'=97+8%3+5/2-24=97+2+2- 设 x=8 20=81 ‘\24’为八进制,‘\24’=024(八进制)=2*8+4 (十进制)=20(十进制) 'a'的 ASCII 码为 97 2.7 写出以下程序的运行结果。 #include void main(void) { int i,j,m,n; i=8;j=10; m=++i;n=j++; //i=9 m=9 ,n=10 j=11 cout<
(4)(a+b)/2*h 2.9 在 C++语言中如何表示“真”和“假”? 系统又是如何判断一个量的“真”和“假”的? 答: C++语言中用“1”表示“真”,“0”表 示“假”。 系统判断“真”和“假”的方法为:一个 量非零为“真”,等于零为“假” 2.10 设有变量说明: int a=3,b=2,c=1; 求出下列表达式的值: (1)a>b (2)a<=b (3)a!=b (4)(a>b)==c (5)a-b==c 解:(1)1 (2) 0 (3)1 (4)1 (5) 1 2.11 设有变量说明: int a=3,b=1,x=2,y=0; 求出下列表达式的值: (1)(a>b)&& (x>y) (2)a>b && x>y (3)(y||b) && (y||a) (4) y||b && y||a = 1 && 1=1 && 1=1 (5)!a || a>b 解:(1)(a>b)&& (x>y)=(3>1) && (2>0) (2)a>b && x>y=3>1 && 2>0 = 1 ( 3 ) (y||b) && (y||a)= (0||1) && (0||3)=1 && 1=1 (4)y||b && y||a = y|| (b && y) ||a =0 || (1 && 0) || 3=0 || 0 || 3= 0 || 3 =1 (5)!a || a>b =!3 || 3>1 =0 || 1 =1 2.12 设有变量说明: int w=3,x=10,z=7; char ch='D'; 求出下列表达式的值。 (1)w++||z++ (2)!w>z (3)w && z (4)x>10 || z<9 = 10>10 || 7<9 = 0 || 1 =1 (5 )ch>='A' && ch<='Z' = 'D'>='A' && 'D'<='Z' =1 && 1 =1 2.13 设 a、b 的值分别为 6、7;指出分别运 算下列表达式后 a、b、c、d 的值。 (1)c=d=a b+=b (3)c=b/=a d=(c=a/b+15) (2) (4) 解: ( 1 ) c=d=a a=6,b=7,c=6,d=6 ( 2 ) b+=b a=6,b=14,c,d 不定 ( 3 ) c=b/=a a=6,b=1,b=1,c=1,d 不定 4 ( ) d=(c=6/7+15)=(c=0+15)=15 a=6,b=7,c=15,d=15 c=(d=6) =6 b=b+b=14 c=(b=b/a)=(b=7/6)=1 d=(c=a/b+15) 2.14 设 a、b、c 的值分别为 5、8、9;指出 分别运算下列表达式后 x、y 的值。 (1)y=(a+b,b+c,c+a) (2)x=a,y=x+b 解: (1)y=(a+b,b+c,c+a) =(5+8,8+9,9+5) =(13,17,14)=14 ) ( 2 y=14 x=a, (x=5,y=x+b)=(5,y=5+8)=(5,y=13)=13 y=13 y=x+b = x=5, 2.15 设计一个程序,从键盘输入一个圆的 半径,求其周长和面积。 解: # include void { main() float r,L,S; cout<<"请输入园的半径:"; cin>>r; L=2*3.14*r; S=r*r*3.14; cout<<"r="<>c; C=c-0x20; //此为十六进制,也可 以用十进制 C=c-32; cout<<"C="< # include main() { int a,b,c,n,m; cout<<"请输入三位十进制整数:"; cin>>n; a=n/100; b=n%100/10; c=n%100%10; m=c*100+b*10+a; cout<<"m="<
习题 3 3.1 程序的三种基本控制结构是什么? 答: 程序的三种基本控制结构是:顺序程序结 构、分支程序结构、循环结构程序结构。 3.2 C++语言中的语句分哪几类? 答: C++语言中的语句分为 6 类,即:说明语 句、控制语句、函数调用语句、表达式语句、 空语句、复合语句。 3.3 怎样区分表达式和语句? 答: 表达式与语句的区别是:表达式不需要用 分号结尾,而语句必须以分号结尾。 3.4 程序的多路分支可通过哪二种语句来 实现?说出用这两种语句实现多路分支的区 别。 答: 程序的多路分支可用 if 语句嵌套实现与 switch 语句来实现。switch 语句只能用于条件表 达式的值为整型或字符型的场合,而 if 语句可 用于条件表达式为任意类型值的场合。 3.5 使用 switch 开关语句时应注意哪些问 题? 型; 答: 使用 switch 开关语句应注意: (1)必须用 break 才能退出当前 case 语句; (2)表达式值与常量值只能是整型或字符 (3)每个 case 后面的常量表达式的值必 实现当型循环结构。do while 用于实现直到型循 环结构。while、for 语句用于先判断循结束后执 行循环体场合,而 do while 用于先执行循环体 后判断循环结束的场合。 3.7 分支程序与循环程序常用于解决哪些 实际问题? 答 : 能够用分支与循环结构程序解决的实际问 题有:累加和、连乘积、求一批数的和及最大 值与最小值、求数列的前 n 项、判素数、求两 个整数的最大公约数和最小公倍数、用迭代法 求平方根、用穷举法求不定方程组的整数解、 打印图形等等。 3.8 continue 语句与 break 语句均用于循环 结构,在使用上有何区别? 答: break 语句只能用在循环语句和 switch 语句 中,其功能是终止循环语句和 switch 语句的执 行。 continue 语句只能用在循环语句中,其功能 是结束本次循环,重新开始下一次循环。 3.9 程序的正常终止与异常终止有何区别, 分别用什么函数来实现?使用这些函数时应包 含什么头文件? 答: 程序的正常终止用 exit()函数来完成,此时 系统要做终止程序执行前的收尾工作,如关闭 该程序打开的文件。释放变量所占用的存储空 间(不包括动态分配的存储空间)等。 程序的异常终止用 abort ()函数来完成,系 统不做结束程序前的收尾工作,直接终止程序 的执行。 使用这两个函数时应包含 stdlib.h 头文 须互不相同; 件? (4)case 后可有多个语句,而不必用花 括号。 3.6 用于实现循环结构的循环语句有哪三 种? 分别用于实现哪二种循环结构?这三种循 环语句在使用上有何区别? 答: 实 现 循 环 结 构 的 循 环 语 句 有 while 、do while、for 三种语句。while、for 语句分别用于 3.10 写出下列程序的运行结果: #include void main(void) { int a=2,b=-1,c=2; if (a
} 解:运行结果:2 3.11 写出下列程序的运行结果: #include void main(void) { int i=10; switch (i) { case 9:i=i+1; case 10:i=i+1; case 11:i=i+1; default :i=i+1; } cout< void main() { float x,y; cout<<"please Input x:"; cin>>x; if (x<2) y=-x+2.5; else if (x>=2 && x<4) y=2-1.5*(x-3)*(x-3); else y=x/2-1.5; cout<<"y="< void main() { int i; cout<<"请输入一个整数:"; cin>>i; if (i>0) if (i % 2==0) cout< void main() { int a,b,c,temp; cout<<"please Input a,b,c:"; cin>>a>>b>>c; if (a void main()
{ float x,y; cout<<"please Input palne coordinate (x,y):"; cin>>x>>y; if (x>0 && y>0) cout<<"("<0) case cout<0 && y<0) cout<<"("< void main() { float x,y; char op; cout<<"please Input x op y:"; cin>>x>>op>>y; switch(op) { case cout< void main(void) { int a,b; float r,tax,prise; cout<<"please Input prize :"; cin>>a; if (a>=5000) b=10; else b=a/500; switch(b) { case 0: r=0;break; case 1: r=3;break; case 2: case 3: r=5;break; case 4: case 5: case 6: case 7: case 8: case 9: r=8;break; case 10: r=12;break; default :cout<<"Input error!";
} tax= a*r/100; prise=a*(1-r/100); cout<<"Tax rate:"< void main(void) { int n=4; while (--n) cout< void main(void) { int x=3; do cout< void main(void) { int i=0,j=0,k=0,m; for (m=0;m<4;m++) switch (m) { case 0:i=m++; case 1:j=m++; case 2:k=m++; case 3:m++; } cout< void main() { int i,n; float s; cout<<"Please Input n:"; cin>>n; s=0; i=1; while (i<=n) { s=s+1.0/i; i++; } cout<<"s="< void main() { int i,n; float s; cout<<"Please Input n:"; cin>>n; for(s=0,i=1;i<=n;i++) s=s+1.0/i; cout<<"s="<1),直到最后一项小于 10-4 为止。 解:用当型语句求解 方法一: # include # include void main(void) { int i; float x,y,z; cout<<"Please Input x:"; cin>>x; if (x>1) { i=1; y=1;
分享到:
收藏