C++规范设计简易教程思维训练答案Word格式.docx
《C++规范设计简易教程思维训练答案Word格式.docx》由会员分享,可在线阅读,更多相关《C++规范设计简易教程思维训练答案Word格式.docx(66页珍藏版)》请在冰豆网上搜索。
floatgetCircleArea(floatr)
return3.14*r*r;
12
(1)升旗仪式:
取旗,奏国歌,升旗,行礼,降旗
(2)写论文:
写题纲,找资料,写作,修改
(3)炸碉堡:
取炸药包,掩护,埋包,退回,引爆
(4)旅游策划:
确定目的地,定路线,订宾馆,订机票等。
第二章答案
(1)编译出错:
通过出错信息,定位并改正语法错误;
连接出错:
检查申明和源码之间是滞匹配等;
运行出错:
单步调试或者断点调试等,检查变量的状态。
(2)F10/F11交替使用单步调试,使用变量窗口和查看窗口查看数据状态。
(3)最关键的是cpp源码文件和h声明文件。
如主模块所在cpp源码文件,自定义模块所在cpp源码文件,自定义模块的h声明文件。
拷贝一个项目两种方法:
一是拷贝整个项目;
二是拷贝cpp和h文件。
(4)放在章节目录下,如第一章程序位置:
c:
\c++\chapt1
(5)新建项目、拷贝核心文件(源码和声明)、项目中添加核心文件
(6)随机值,因为编译时,会将变量赋一个随机值
(7)错误信息:
c没有被定义
(8)在相应位置设置断点(F9),运行至断点(F5)即可通过变量窗口查看此时值
(9)三种常用函数:
绝对值函数fabs(3)正弦函数sin(4)求平方根函数sqrt
(2)。
使用数学函数,要加#include<
math.h>
(10)项目名为:
ThreeMaxMinProj,项目下建立3个文件,模型图如下:
BBAAA
ABABCCA
3选择题
√√√
4改错题
(1)正确答案
#include<
iostream.h>
intgetPoly3Value(intx);
intmain(){
intx,y;
cin>
>
x;
y=getPoly3Value(x);
cout<
<
y;
return0;
intgetPoly3Value(intx){
returnx*x*x+2*x*x+1;
(2)正确答案
voidswap(a,b);
inta,b;
a>
b;
swap(a,b);
a<
voidswap(inta,intb){
inttemp;
temp=a;
a=b;
b=temp;
(3)主模块中调用getSquareSum,但并没有声明。
修改:
将Int.h中将getSquare改为getSquareSum
(4)清单文件中声明是getSquareSum模块,但源码文件提供是getSquare模块,不匹配,故连接出错。
将Int.cpp中将getSquare改为getSquareSum
5调试题
aa,bb,cc的值是3,4,5
6画图题
intgetCommDiv(intdata1,intdata2)
intgetCommMult(intdata1,intdata2)
char*strCat(char*str1,char*str2)
intgetSeriesN(intn)
intgetMax(inta,intb,intc)
voidprintMax(inta,intb,intc)
voidprintAllInt(void)
7画图题
8答辩题-模块代码
intfindMax(intaa,intbb,intcc)
if(aa>
bb&
&
aa>
cc)returnaa;
if(bb>
aa&
bb>
cc)returnbb;
if(cc>
cc>
aa)returncc;
9答辩题-模块代码
floatgetDeposit(floatcapital,floatrate,intyear)//可归属于Finance
floatdeposit;
deposit=capital*pow(1+rate,year);
returndeposit;
10编程题(提高)-模块代码
#include"
Finance"
floatcapital,rate;
intyear;
floatresult1,result21,result22;
//不转存情况
capital=10000;
rate=0.03;
year=5;
result1=getDeposit(capital,rate,year);
"
不转存情况"
result1<
endl;
//转存,先求前三年,在此基础上,求后两年
rate=0.02;
year=3;
result21=getDeposit(capital,rate,year);
capital=result21;
rate=0.04;
year=2;
result22=getDeposit(capital,rate,year);
转存情况"
result22<
第三章答案
(1)假如整形变量a,则(int)a强制转成小数
(2)算术>
关系>
逻辑
(3)大于小于等于不等于等
(4)字符常量用单引号,字符串常量用双引号。
如’a’与”a”
(5)三步骤:
定义,声明,使用
(6)’a’是字符a,其码值是97;
’\a’是字符响铃,其码值是7。
’0’是字符0,其码值是48;
’\0’是不可见字符,其码值是0。
(7)void
(8)假如整形变量a,通过sizeof(a)可知道分配多少单元
(9)小数表示法,科学计数法
(10)-2147483648---2147483647
(11)假如整形变量a,则一个整数得到最后一位方法:
a%10;
去除最后一位方法:
a/10
CCAAB
BAAAAA
注:
第7题题目答案有改变
3计算题
(1)25
(2)12.5(3)18
4编程题
voidlower2Upper(charc1,charc2,charc3,charc4,charc5){
c1=c1-32;
c2=c2-32;
c3=c3-32;
c4=c4-32;
c5=c5-32;
c1<
c2<
c3<
c4<
c5;
5编程题
voidchangeChar(charc1,charc2,charc3,charc4,charc5){
c1=c1+5;
c2=c2+5;
c3=c3+5;
c4=c4+5;
c5=c5+5;
6编程题
calc模块
main模块
intcalc(inta,intb,charsign)
if(sign=='
+'
)
returna+b;
returna-b;
intmain()
inta,b,result;
charsign;
b>
sign;
result=calc(a,b,sign);
result<
7编程题
chargetChangedChar(charch)
returnch+5;
8编程题
方法一
方法二
if(ch>
='
a'
ch<
z'
if(ch+5>
'
{
returnch+5-26;
}
elsereturnch+5;
A'
Z'
boolisChar(charch)//先做判断是否字符模块
||ch>
returntrue;
elsereturnfalse;
ch=ch+5;
if(isChar(ch))
returnch;
elsereturnch-26;
第四章答案
(1)在传递的模块中改变自身的值
(2)传地址、类型匹配、间接操作
(3)sizeof(指针变量)
(4)随机地址
(5)不能直接赋值,需要强制转成整形地址后再赋值。
int*p;
p=(int*)0x12ff7c;
(6)pC++表示指针移动1个字节;
pI++表示指针移动4个字节
1
2
3
4
5
6
7
8
9
10
C
D
A
B
√
×
voidsetMaxMin(floata,floatb,float*pMax,float*pMin){
b){
*pMax=a;
*pMin=b;
else{
*pMax=b;
*pMin=a;
intgetMax(intdata1,intdata2,intdata3)
intmax;
if(data1>
data2&
data1>
data3)max=data1;
if(data2>
data1&
data2>
data3)max=data2;
if(data3>
data3>
data1)max=data3;
returnmax;
intgetMin(intdata1,intdata2,intdata3)
intmin;
if(data1<
data1<
data3)min=data1;
if(data2<
data2<
data3)min=data2;
if(data3<
data3<
data1)min=data3;
returnmin;
intdata1,data2,data3,max,min;
data3;
max=getMax(data1,data2,data3);
min=getMin(data1,data2,data3);
max<
min;
voidsetMaxMin(intdata1,intdata2,intdata3,int*pMax,int*pMin)
data3)*pMax=data1;
data3)*pMax=data2;
data1)*pMax=data3;
data3)*pMin=data1;
data3)*pMin=data2;
data1)*pMin=data3;
setMaxMin(data1,data2,data3,&
max,&
min);
voidsetMaxMin(intdata1,intdata2,intdata3,int&
aMax,int&
aMin)
data3)aMax=data1;
data3)aMax=data2;
data1)aMax=data3;
data3)aMin=data1;
data3)aMin=data2;
data1)aMin=data3;
setMaxMin(data1,data2,data3,max,min);
(1)welcome模块
voidwelcome(void)
*********************************************************"
;
*欢迎使用本程序*"
*本程序是将三个整数进行排序*"
*作者:
李祎*"
(2)sort模块
voidsort(int*pA,int*pB,int*pC)
if(*pA>
*pB){temp=*pA;
*pA=*pB;
*pB=temp;
*pC){temp=*pA;
*pA=*pC;
*pC=temp;
if(*pB>
*pC){temp=*pB;
*pB=*pC;
(3)main模块
inta,b,c;
welcome();
c;
sort(&
a,&
b,&
c);
b<
第五章答案
(1)通过调用模块的返回值给本模块的的变量赋值;
将本模块变量的地址传递过去,在调用模块中通过间接方式修改本模块的变量值;
将本模块变量的名传递过去,在调用模块中通过引用名修改本模块的变量值;
(2)模块设计指的是将所要实现的功能写成一个独立的单元,这个单元的名字叫模块或者叫函数;
结构编程指的是模块内部编程时,只有一个入口和一个出口的顺序、选择、循环三种结构代码,不能够在三种结构里随意地跳转。
(3)一般情况下,switch用于离散值的选择,根据输入的几个特定的值去选择分支走向,如菜单的制作;
if/else用于较复杂的选择环境。
(4)对齐格式用setiosflags(ios:
:
对齐格式)来控制,具体小数的位数用setprecision(小数位数)控制,总长度用setw(总长度)控制,另外总长度需要每次输出时都明确。
(5)赋值是对一个已经定义的变量传值,而克隆是在定义变量的同时传值。
voidprtGrade(floatscore){
chargrade;
if(score>
=85)grade='
elseif(score>
=70)grade='
b'
=60)grade='
c'
elsegrade='
d'
gradeis:
grade<
voidprtByGrade(chargrade){
switch(grade){
case'
cout<
85-100\n"
break;
70-84\n"
60-69\n"
60\n"
default:
输入有错"
chargetGrade(floatscore){
returngrade;
boolisLeapYear(intyear){
boolflag;
if(year%4==0&
year%100!
=0||year%400){
flag=true;
else{
flag=false;
returnflag;
9编程题
判断是否构成三角形模块isTri
求三棱锥体积模块
boolisTri(floata,floatb,floatc){
if(a<
b+c&
a+c&
c<
a+b)
flag=true;
else
flag=false;
floatgetTriVol(floata,floatb,floatc,floath){
floatp,vol;
if(isTri(a,b,c)){
p=0.5*(a+b+c);
vol=h*sqrt(p*(p-a)*(p-b)*(p-c))/3;
cout<
这不是三棱锥"
vol=0;
returnvol;
10编程题
求根模块setRoot
主模块main
intsetRoot(inta,intb,intc,float*pRoot1,float*pRoot2){
floatdet=b*b-4*a*c;
if(det>
0)
*pRoot1=(-b+sqrt(det))/(2*a);
*pRoot2=(-b-sqrt(det))/(2*a);
flag=1;
elseif(det==0)
*pRoot1=*pRoot2=(-b*1.0)/(2*a);
flag=0;
*pRoot1=(-b*1.0)/(2*a);
*pRoot2=sqrt(-det)/(2*a);
flag=-1;
floatroot1,root2;
请输入3个系数:
cin>
flag=setRoot(a,b,c,&
root1,&
root2);
if(flag==1)
两个不等实根:
root1<
"
root2;
elseif(flag==0)
两个相等实根:
两个虚根:
虚根1:
+"
root2<
i"
虚根2:
-"
第六章答案
(1)循环初始值、循环条件、循环变量的改变
(2)while
(1)
(3)找到第n项的项值