所得税问题

V若所得税按下式计算:y为所得税.x为月收入

 

 


y= 0                          x<=2000
  (x-2000)*3%            2000<x<=5000
  (x-5000)*5%+90         5000<x<=10000
  (x-10000)*10%+340     10000<x<=100000
  (x-100000)*30%+9340         x>100000
该题可以用多重嵌套条件语句来实现。但基于类的方法不这样做。

//所得税问题
//变嵌套多重的条件语句为一重while型语句
#include<iostream.h>
#define N 5
void main(){
 float a[N]={0,2000,5000,10000,100000};
 float b[N]={0,0.03,0.05,0.1,0.3};
 float c[N]={0,0,90,340,9340};
 float x;
 cin>>x;
 int i=N-1;
 float y;
 if(x>100000)
  y=(x-a[i])*b[i]+c[i];
 while(x<a[i]){
  y=(x-a[i-1])*b[i-1]+c[i-1];
             i--; 
 }
 cout<<y;
 }
//编写低复杂度,通用程序的原则。
//如果使用多重条件语句,第一语句长。第二它不是通用程序。


计算菲波拉契数列的前21项。
解:
菲波列数列的计算公式是:第一项为0,第二项为1.第三项为前两项之和。
求前21项的值。

#include<iostream.h>
#define N 21
void main(){
 int f[N];
 f[0]=0;
 f[1]=1;
 int i;
 for(i=2;i<N;i++)
  f[i]=f[i-1]+f[i-2];
 for(i=0;i<N;i++)
  cout<<f[i]<<endl;
}
//和有些菲波拉数列不同,该程序用数组元素来存储每一项的值。
//程序和数学公式有一对一的关系。
//程序中不出现数据传递。
//编程难度低

请根据下面给出的有关数据归纳出带计算过程和计算条件的递推公式并编出通用计算程序。
1
2
3
1 4
1 2 5
1 2 3 1 6
1 2 3 1 4 1 2 7
1 2 3 1 4 1 2 5 1 2 3 1 8
1 2 3 1 4 1 2 5 1 2 3 1 6 1 2 3 1 4 1 2 9


解析:从上中行数据总结出以下规律:
第N行中最后一个数为N
从第4行开始,各行数字个数等于前两行数字个数之和。
从i=4,开始,除了最后一个数字 之外,其余数字为前i-2行数字的复制。

#include<iostream.h>
#define N 10
void main(){
 int s[N+1]; //用来存储除本行之外前n行的项数
 int x[1000];//用来存储每一项的值
 int i,k,j;
 s[0]=0;
 s[1]=1;
 s[2]=2;
 for(i=3;i<=N;i++)
  s[i]=s[i-1]+s[i-2];//用来存储每和行开始时前面的项数
 for(i=1;i<=N;i++)
  x[s[i]]=i;      //用来存储关于行数的信息。每一行最后一个数字的信息

 for(i=4;i<=N;i++)
 {j=1;
  for(k=s[i-1]+1;k<s[i];k++)
  {
   x[k]=x[j];//从第一个位置开始,把上面的所有复制一遍
   j+=1;}}
   for(i=1;i<=N;i++)
  {
   for(j=s[i-1]+1;j<=s[i];j++)
    cout<<x[j]<<"  ";
   cout<<endl;
  }
}

 

某人在年初买了一头刚生下的母牛,3年后的年初,小母牛生下了一头小母牛,假设以后每年年初,那头母牛都生下一头小母牛,而所有小母牛也会在三年后的年初生下一头小母牛。且以后每年年初都会同样生下一头小母牛。问20年后那个有多少母牛???

//令x1,x2,x3,x4分别表示第N年后刚生下的小母牛,满一年的母牛,满二年的母牛,可生小母牛的母牛。
#include<iostream.h>
#define N 21
void main(){
 int x1[N];
 int x2[N];
 int x3[N];
 int x4[N];
 int i;
 x1[0]=1;
 x2[0]=x3[0]=x4[0]=0;
 for(i=1;i<N;i++)
 {
  x2[i]=x1[i-1];
  x3[i]=x2[i-1];
  x1[i]=x4[i]=x3[i-1]+x4[i-1];
 }
 int s;
 s=x1[N-1]+x2[N-1]+x3[N-1]+x4[N-1];
 cout<<s;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值