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

📄 c++.txt

📁 标准答案习题1 1.1 简述C++语言程序的结构特点。 答: (1)C++程序由一个或多个函数组成
💻 TXT
📖 第 1 页 / 共 5 页
字号:
  else if (x==0 && y!=0) 
         cout<<"("<<x<<","<<y<<")"<<" is on y axis"<<endl;
  else if (x!=0 && y==0) 
         cout<<"("<<x<<","<<y<<")"<<" is on x axis"<<endl;
}        
 
3.16 简单计算器。设计一个程序计算表达式:data1 op 
data2的值,其中data1、data2为两个实数,op为运算符(+、-、*、/),并且都由键盘输入。
解:
# include <iostream.h>
void main()
{  float x,y;
   char  op;
   cout<<"please Input x op y:";
   cin>>x>>op>>y;
   switch(op)
   {  case '+':  cout<<x<<op<<y<<"="<<x+y<<endl;break;
      case '-':  cout<<x<<op<<y<<"="<<x-y<<endl;break;
         case '*':  cout<<x<<op<<y<<"="<<x*y<<endl;break;
         case '/':  cout<<x<<op<<y<<"="<<x/y<<endl;break;
         default :  cout<<"Input op error!"<<endl;
   }
}        
 
3.17奖金税率如下:(a代表奖金,r代表税率)
              a<500(元)                                  r=0%
              500≤a<1000                              r=3%
              1000≤a<2000                            r=5%
              2000≤a<5000                            r=8%
              a≥5000                                     r=12%
输入一个奖金数,求税率、应交税款及实得奖金数。
解:
# include <iostream.h>
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:"<<r<<"%"<<endl;
     cout<<"Tax :"<<tax<<endl;
     cout<<"Prise:"<<prise<<endl;
}        
 
3.18 写出下列程序的运行结果:
#include <iostream.h>
void main(void)
{   int n=4;
    while (--n)
      cout<<n<<'\t';
    cout<<endl;
}
答:  3   2  1
 
3.19 写出下列程序的运行结果:
#include <iostream.h>
void main(void)
{   int x=3;
    do
     cout<<x<<'\t';
    while (!(x--));
    cout<<endl;
}
答:3
 
3.20 写出下列程序的运行结果:
#include <iostream.h>
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<<i<<'\t'<<j<<'\t'<<k<<'\t'<<m<<endl;
}
答:0   1   2   5 
3.21 求 的值,即求 的值。
解:
# include <iostream.h>
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="<<s<<endl;
}
另解(for语句)
# include <iostream.h>
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="<<s<<endl;
}
 
3.22 编程计算 的值(x>1),直到最后一项小于10-4为止。
解:用当型语句求解
方法一:
# include <iostream.h>
# include <math.h>
void main(void)
{   int i;
    float x,y,z;
       cout<<"Please Input x:";
       cin>>x;
       if (x>1)  
       {  i=1; y=1;
          z=1.0/pow(x,i);
          while (z>=0.0001)
          {  y+=z;
                i++;
                z=1.0/pow(x,i);
       }
        cout<<"y="<<y<<'\t'<<"1/xi="<<z<<'\t'<<"i="<<i<<endl;
       }
       else
              cout<<"x<=1  error!";
}
方法二:
# include <iostream.h>
void main(void)
{   float x,y,z;
       cout<<"Please Input x:";
       cin>>x;
       if (x>1)  
       {  y=1;z=1.0/x;
          while (z>=0.0001)
          {  y=y+z;
                z=z/x;
       }
        cout<<"y="<<y<<endl;
       }
       else
              cout<<"x<=1  error!";
}
方法三:
# include <iostream.h>
void main(void)
{   float x,y,t;
       cout<<"Please Input x:";
       cin>>x;
       if (x>1)  
       {  for(y=1,t=1.0/x;t>=0.0001;t=t/x)
            y=y+t;
          cout<<"y="<<y<<endl;
       }
       else
              cout<<"x<=1  error!";
}
方法四(直到型)
# include <iostream.h>
# include <math.h>
void main()
{   int i;
    float x,y,z;
       cout<<"Please Input x:";
       cin>>x;
       if (x>1)  
       {  i=1;   y=1;
          z=1.0/pow(x,i);
          do 
          {  y+=z;
                i++;
                z=1.0/pow(x,i);
          }while (z>=0.0001);
       cout<<"y="<<y<<'\t'<<"1/xi="<<z<<'\t'<<"i="<<i<<endl;
       }
       else
              cout<<"x<=1  error!";
}     
 
3.23 输入两个正整数m和n,求其最大公约数和最小公倍数。
解:求两个自然数m与n的最大公约数采用辗转相除法,
设最小公倍数 (Lease common multiple)为lcm=m*n;
最大公约数(Gretest common divisor)为gcd。
可采用如下循环实现:
r=m%n;m←n;n←r;直到r=0为止,此时最大公约数为gcd=n,最小公倍数为lcm=lcm/gcd
例如:求m=4与n=6的最大公约数:
r=4%6=4; m←6;n←4;
r=6%4=2; m←4;n←2;
r=4%2=0; 
则最大公约数gcd=n=2
最小公倍数lcm=4*6/2=12
事实上:4的公约数为1、2、4,6的公约数为1、2、3、6,所以两数公约数为1,2,最大公约数为2。4的公倍数为4、8、12、16等,6的公倍数为6、12、18等,所以两数最小公倍 
数为12。
# include <iostream.h>
void main()
{  int m,n,lcm,gcd,r;
   cout<<"please input m,n:";
   cin>>m>>n;
   lcm=m*n;
   while (m%n!=0)
   {   r=m%n;
       m=n;
          n=r;
   }
   gcd=n;
   lcm=lcm/gcd;
   cout<<"Lease common multiple="<<lcm<<endl;
   cout<<"Greatest common divisor="<<gcd<<endl;
}
 
3.24某月十天内的气温为:-5、3、4、0、2、7、0、5、-1、2(℃),编程统计出气温在0℃以上、0℃和0℃以下各多少天?并计算出这十天的平均气温值。
解:
# include <iostream.h>
void main(void)
{  int i,positive=0,zero=0,negative=0;
   float f,sum=0,ave;
   cout<<"请输入10天的气温:";
   for (i=1;i<=10;i++)
   {   cin>>f;
          if (f>0) positive++;
          else if (f==0) zero++;
          else negative++;
          sum+=f;
   }
   ave=f/10;
   cout<<"大于零度:"<<positive<<"天\n等于零度:"
<<zero<<"天\n小于零度:"<<negative<<"天"<<endl;
   cout<<"平均温度:"<<ave<<endl;
}
 
3.25 求 ,即求1!+2!+3!+4!+……+10!。
解:
# include <iostream.h>
void main(void)
{   int i,n,k=1;
    long s=0;
       cout<<"Please Input n:";
       cin>>n;
       for(i=1;i<=n;i++)
       {   k=k*i;
              s=s+k;
       }
       cout<<"s="<<s<<endl;
}
 
3.26设用100元钱买100支笔,其中钢笔每支3元,圆珠笔每支2元,铅笔每支0.5元,问钢笔、圆珠笔和铅笔可以各买多少支(每种笔至少买1支)?
解:
设钢笔、圆珠笔和铅笔各买i、j、k支,则应有下列式子成立。
3*i+2*j+0.5*k=100
i+j+k=100
用穷举法将购买钢笔、圆珠笔的数量用二重循环遍历一遍。从中找出符合上述条件的购买方法。
# include <iostream.h>
void main(void)
{  int i,j,k;
   for (i=1;i<=33;i++)
          for (j=1;j<=49;j++)
          {  k=100-i-j;
                if (k%2==0 && 3*i+2*j+k/2==100) 
                       cout<<"pen="<<i<<"\t ball pen="<<j<<"\t 
pencil="<<k<<endl;
       }
}
3.27 编程显示如下图形:
解:
# include <iostream.h>
void main(void)
{  int i,j,n;
   cout<<"请输入棱形的对角线半长度n:";
   cin>>n;
   for (i=1;i<=n;i++)  //画上半个棱形
   {  for(j=1;j<=40-i;j++) cout<<" ";
      for(j=1;j<=2*i-1;j++) cout<<"*";
         cout<<endl;
   }
   for (i=n-1;i>0;i--)  //画下半个棱形
   {  for(j=1;j<=40-i;j++) cout<<" ";
      for(j=1;j<=2*i-1;j++) cout<<"*";
         cout<<endl;
   }
}


 
习题4
4.1什么是数组?
答:
数组是若干个同类型数据元素的集合。
 
4.2一维数组与二维数组在内存中是如何存储的?
答:
一维数组a[n]定义后,系统分配n*k个连续存储单元,用于存放数组元素值,其中k=元素占用字节数。
二维数组a[m][n]定义后,系统分配m*n*k个连续存储单元,用于存放数组元素值,其中k=元素占用字节数。
存放方式为按行存放,即先存第一行元素,再存第二行元素,依次把各行元素存入一串连续的存储单元中。
 
4.3有如下数组定义:
int  a[20];
指出该数组的数组名、数组元素类型、数组元素个数、第一个数组元素的下标值和最后一个数组元素的下标值。
答:
数组名为a,数组元素类型为整型,数组元素个数为20,第一个数组元素的下标值为0和最后一个数组元素的下标值为19。
 
4.4写出下列程序的运行结果:
#include <iostream.h>
void main(void)
{   int i,k,a[10],p[3];
    k=5;
    for (i=0;i<10;i++)          // a[0]=0,…,a[9]=9
      a[i]=i;
    for (i=0;i<3;i++)
      p[i]=a[i*(i+1)];          // p[0]=a[0]=0,p[1]=a[2]=2,p[2]=a[6]=6,
    for (i=0;i<3;i++)
      k=k+p[i]*2;              // k=5+0*2+2*2+6*2=21
    cout<<k<<endl;
}
答: 21
4.5写出下列程序的运行结果:
#include <iostream.h>
void main(void)
{   int a[6][6],i,j;
    for (i=1;i<6;i++)
      for (j=1;j<6;j++)
        a[i][j]=(i/j)*(j/i);    //当i<j时i/j=0 当j<i时j/i=0 所以只有当i=j时a[i][j]=1
    for (i=1;i<6;i++)
      {  for (j=1;j<6;j++)
           cout<<a[i][j]<<'\t';
         cout<<endl;
      }
}
答:
a[i][j]=(i/j)*(j/i);    //当i<j时i/j=0 当j<i时j/i=0 所以
a[i][j]=1, i=j
a[i][j]=0, i≠j
即矩阵对角线上元素为1,其它元素为0。输出结果为对角线矩阵:
1  0  0  0  0  0
0  1  0  0  0  0
0  0  1  0  0  0
0  0  0  1  0  0
0  0  0  0  1  0
0  0  0  0  0  1
 
4.6写出下列程序的运行结果:
#include <iostream.h>
#include <string.h>
void main(void)
{   char str[80];
    int i,j,k;
    cout<<"Input string:";
    cin>>str;
    for (i=0,j=strlen(str)-1;i<j;i++,j--)
      {  k=str[i];
         str[i]=str[j];
         str[j]=k;
      }
    cout<<str<<endl;
}
运行时输入:abcdef(回车)
答:fedcba
 
4.7某班有30个学生,进行了数学考试,编写程序将考试成绩输入一维数组,并求数学的平均成绩及不及格学生的人数。
解:
#include <iostream.h>
#define N 10
void main(void)
{  float math[N],sum,ave;
   int i,count;
   cout<<"Input math score:";
   sum=0;
   count=0;
   for(i=0; i<N;i++)
      cin>>math[i];
   for(i=0;i<N;i++)
   {  sum=sum+math[i];
      if (math[i]<60)   count++;
   }

⌨️ 快捷键说明

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