⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c++.txt

📁 标准答案习题1 1.1 简述C++语言程序的结构特点。 答: (1)C++程序由一个或多个函数组成
💻 TXT
📖 第 1 页 / 共 5 页
字号:
标准答案习题1
1.1 简述C++语言程序的结构特点。
答:
(1)C++程序由一个或多个函数组成,其中至少有一个主函数main(),程序从主函数开始执行,由主函数来调用其他函数。
(2)C++函数由说明部分与函数体组成,函数体由变量定义和执行语句两部分组成。其中函数体中语句和变量说明以分号结束。一般函数结构如下:
# 编译预处理命令
函数类型 <函数名>(形式参数)
{  /* 注释 */
变量说明;  
  执行语句;  // 注释内容
}          
(3)程序书写规则为同一层语句同列书写、内层语句缩进两个字符、函数定义在第一列书写。严格区分字母的大小写,即大写与小写代表两个不同变量。
(4)C++输入/输出通过流cin和cout来实现的
 
1.2 简述C++程序开发的步骤。
答:
(1)分析问题。根据实际问题,分析需求,确定解决方法,并用适当的工具描述它。
(2)编辑程序。编写C++源程序,并利用一个编辑器将源程序输入,保存到计算机中的某一个文件中。文件的扩展名为.cpp。
(3)编译程序。编译源程序,产生目标程序。目标程序文件的扩展名为.obj。
(4)连接程序。将一个或多个目标程序与库函数进行连接后,产生一个可执行文件。可执行文件的扩展名为.exe。
(5)运行调试程序。运行可执行文件,分析运行结果。若有错误进行调试修改。
在编译、连接和运行程序过程中,都有可能出现错误,此时要修改源程序,并重复以上过程,直到得到正确的结果为止。
 
1.3设计一个C++程序,输出以下信息:
    ***************
Hello!
    ***************
解:
# include <iostream.h>
void  main()
{  cout<<" ***************"<<'\n';
   cout<<" Hello!"<<'\n';
   cout<<" ***************"<<'\n';
}
 
1.4设计一个C++程序,输入三个学生的成绩,求其总成绩。
解:
# include <iostream.h>
main()
{  int s1,s2,s3,sum;
   cout<<"请输入三个学生的成绩:";
   cin>>s1>>s2>>s3;
   sum=s1+s2+s3;
   cout<<"sum="<<sum<<'\n';
}
 
1.5设计一个C++程序,输入a、b二个整数,用sub()函数求两数之差。
解:
#include <iostream.h>
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= "<<m<<endl;
}
int sub(int x,int y)
{   int z;
    z=x-y;
    return(z);
}


习题2
2.1简述标识符定义。指出下列用户自己定义的标识符中哪些是合法的?哪些是非法的?如果是非法的,为什么?
答:
xy √    Book√   3ab×(不能数字开头)   x_2 √  switch×(保留字) integer√
page-1×(不能包含“-”)     _name√  MyDesk√  #NO×(不能包含“#”) 
y.5×(不能包含“.”)        char×(保留字)
 
2.2. C++语言中有哪些数据类型?
答: C++数据类型
       基本类型
       导出类型
       整型
       实型
       字符型  char
       无值型  void
       短整型    short int
       整型      int
       长整型    long int
       单精度型  float
       双精度型  double
       数组
       指针
       结构体
       共同体
      图2.1 C++的数据类型
 
 
 
 
 
 
 
 
 
 
 
 
 
2.3 什么是常量?什么是变量?
答:
在程序执行过程中,其值不能被改变的量称为常量。
在程序执行过程中,其值可以改变的量称为变量。变量必须用标识符来命名。
 
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
再按左结合性计算:a%3*7%2/4=7%3*7%2/4=1 *7 % 2/ 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
                            (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'               设x=8
'a'+x%3+5/2-'\24'=97+8%3+5/2-24=97+2+2-20=81
‘\24’为八进制,‘\24’=024(八进制)=2*8+4(十进制)=20(十进制)
'a'的ASCII码为97
 
2.7 写出以下程序的运行结果。
#include <iostream.h>
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<<i<<'\t'<<j<<'\n';
    cout<<m<<'\t'<<n<<'\n';
}
答:
程序运行结果:
9     11
9     10
 
2.8 将下列数学表达式写成C++中的算术表达式。
(1)                       (2)
(3)                     (4)h
解:算术表达式
(1) (a+b)/(x-y)  
(2)sqrt(p*(p-a)*(p-b)*(p-c))
(3)sin(x)/2/m  或  sin(x)/(2*m)
(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
(5)!a || a>b
解: (1)(a>b)&& (x>y)=(3>1) && (2>0) = 1 && 1=1 
(2)a>b && x>y=3>1 && 2>0 = 1 && 1=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
(5)ch>='A' && ch<='Z'
解:
(1)w++|| z++ = 3 || 7 =1 (先用后加,w=4,z=8)
(2)!w>z =!3 > 7  =  0 >7  = 0                
(3)w && z = 3 && 7 =1
(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                                      (2)b+=b
(3)c=b/=a                                     (4)d=(c=a/b+15)
解:
(1)c=d=a   c=(d=6) =6                       a=6,b=7,c=6,d=6
(2)b+=b    b=b+b=14                        a=6,b=14,c,d不定
(3)c=b/=a   c=(b=b/a)=(b=7/6)=1               a=6,b=1,b=1,c=1,d不定
(4)d=(c=a/b+15)  d=(c=6/7+15)=(c=0+15)=15     a=6,b=7,c=15,d=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    y=14
(2)x=a, y=x+b = (x=5,y=x+b)=(5,y=5+8)=(5,y=13)=13             x=5, y=13
 
2.15设计一个程序,从键盘输入一个圆的半径,求其周长和面积。
解:
# include <iostream.h>
void  main()
{  float r,L,S;
   cout<<"请输入园的半径:";
   cin>>r;
   L=2*3.14*r;
   S=r*r*3.14;
   cout<<"r="<<r<<'\n';
   cout<<"L="<<L<<endl;
   cout<<"S="<<S<<endl;
}
 
2.16设计一个程序,从键盘输入一个小写字母,将它转换成大写字母。
解:
# include <iostream.h>
void  main()
{  char c,C;
   cout<<"请输入小写字母:";
   cin>>c;
   C=c-0x20;     //此为十六进制,也可以用十进制 C=c-32;
   cout<<"C="<<C<<'\n';
}
 
2.17从键盘输入一个三位数abc,从左到右用a、b、c表示各位的数字,现要求依次输出从右到左的各位数字,即输出另一个三位数cba,例如:输入123,输出321,试设计程序。(算法提示:a=n/100,b=(n-a*100)/10,c=(n-a*100)%10,m=c*100+b*10+a)
解:
# include <iostream.h>
# include <math.h>
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="<<m<<'\n';
}


习题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后面的常量表达式的值必须互不相同;
(4)case后可有多个语句,而不必用花括号。
 
3.6 用于实现循环结构的循环语句有哪三种? 分别用于实现哪二种循环结构?这三种循环语句在使用上有何区别?
答:
实现循环结构的循环语句有while 、do while、for三种语句。while、for语句分别用于实现当型循环结构。do 
while用于实现直到型循环结构。while、for语句用于先判断循结束后执行循环体场合,而do while用于先执行循环体后判断循环结束的场合。
 
3.7 分支程序与循环程序常用于解决哪些实际问题?
答 :
能够用分支与循环结构程序解决的实际问题有:累加和、连乘积、求一批数的和及最大值与最小值、求数列的前n项、判素数、求两个整数的最大公约数和最小公倍数、用迭代法求平方根、用穷举法求不定方程组的整数解、打印图形等等。
 
3.8 continue语句与break语句均用于循环结构,在使用上有何区别?
答:
break语句只能用在循环语句和switch语句中,其功能是终止循环语句和switch语句的执行。
continue语句只能用在循环语句中,其功能是结束本次循环,重新开始下一次循环。
3.9程序的正常终止与异常终止有何区别,分别用什么函数来实现?使用这些函数时应包含什么头文件?
答:
程序的正常终止用exit()函数来完成,此时系统要做终止程序执行前的收尾工作,如关闭该程序打开的文件。释放变量所占用的存储空间(不包括动态分配的存储空间)等。
程序的异常终止用abort ()函数来完成,系统不做结束程序前的收尾工作,直接终止程序的执行。
使用这两个函数时应包含stdlib.h头文件?
 
3.10 写出下列程序的运行结果:
#include <iostream.h>
void main(void)
{   int a=2,b=-1,c=2;
    if (a<b)
    if (b<0) c=0;
      else c=c+1;
    cout<<c<<endl;
}
解:运行结果:2
 
3.11写出下列程序的运行结果:
#include <iostream.h>
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<<i<<endl;
}
解:运行结果:13
 
3.12 设计一个程序,判断从键盘输入的整数的正负性和奇偶性。
解:
# include <iostream.h>
void main()
{  int  i;
   cout<<"请输入一个整数:";
   cin>>i;
   if (i>0) 
       if (i % 2==0)
         cout<<i<<" is positive even number"<<endl;
       else
         cout<<i<<" is positive odd number"<<endl;
   else 
       if (i % 2==0)
         cout<<i<<" is negative even number"<<endl;
       else
         cout<<i<<" is negative odd number"<<endl;
}     
 
3.13 有下列函数:
       -x+2.5           (x<2)
y=     2-1.5(x-3)2           (2≤x<4)
       -1.5            (x≥4)
设计一个程序,从键盘输入x的值,输出y的值。
解:
# include <iostream.h>
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="<<y<<endl;
}        
 
3.14设计一个程序,从键盘输入a、b、c三个整数,将它们按照从大到小的次序输出。
解:
# include <iostream.h>
void main()
{  int a,b,c,temp;
   cout<<"please Input a,b,c:";
   cin>>a>>b>>c;
   if (a<b) 
         {temp=a;a=b;b=temp;}       //a与b交换
   if (a<c)
              {temp=a;a=c;c=temp;}     //a与c交换
   if (b<c)
              {temp=b;b=c;c=temp;}     //b与c交换
   cout<<a<<'\t'<<b<<'\t'<<c<<endl;
}        
 
3.15 输入平面直角坐标系中一点的坐标值(x,y),判断该点是在那一个象限中或那一条坐标轴上。
解:
# include <iostream.h>
void main()
{  float x,y;
   cout<<"please Input palne coordinate (x,y):";
   cin>>x>>y;
   if (x>0 && y>0) 
         cout<<"("<<x<<","<<y<<")"<<" is in first quadrant"<<endl;
  else if (x<0 && y>0) 
         cout<<"("<<x<<","<<y<<")"<<" is in Second quadrant"<<endl;
  else if (x<0 && y<0) 
         cout<<"("<<x<<","<<y<<")"<<" is in third quadrant"<<endl;
  else if (x>0 && y<0) 
         cout<<"("<<x<<","<<y<<")"<<" is in four quadrant"<<endl;
  else if (x==0 && y==0) 
         cout<<"("<<x<<","<<y<<")"<<" is on origin"<<endl;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -