第一题:
方法1:
#include<iostream>
#include<string>
using namespace std;
int main()
{
intincome,tax=0;
cin>>income;
if(income<=2200)
{
tax=0;
return0;
}
tax=(income-2200)*0.14;
income-=2200;
while(income>=500)
tax+=(income-=500)*0.01;
system("pause");
return0;
}
方法二:
可以定义三个数组:a[]={2200,2700,...};b[]={0,0.14,0.15,...};c[]={0,0,70,145,...};然后根据题意往下计算。
第四题:见上一篇博客:日期问题函数(编程珠玑第三章)
第五题:代码
#include<iostream>
#include<string>
using namespace std;
const int N=24;
string p[N] = {"et-ic", "al-is-tic","s-tic", "p-tic","-lyt-ic", "ot-ic", "an-tic",
"n-tic", "c-tic","at-ic", "h-nic","n-ic", "m-ic","l-lic", "b-lic","-clic", "l-ic",
"h-ic", "f-ic","d-ic", "-bic","a-ic", "-mac","i-ac"};
stringgetTrueMatch(string s)
{
for(int i=0;i<N;i++)
{
if(s.size()<p[i].size())
continue;
stringtemp=s.substr(s.size()-p[i].size(),p[i].size());
if(temp==p[i])
return p[i];
}
return "false";
}
int main()
{
string s;
cin>>s;
cout<<getTrueMatch(s)<<endl;
system("pause");
return0;
}
第八题:代码
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string number[] = {"1011111","0000101","1110110","1110101","0101101",
"1111001","1111011","0010101","1111111","1111101"};
vector<string>convert(int num)
{
vector<string> result;
while(num!=0)
{
inttemp=num%10;
num/=10;
result.push_back(number[temp]);
}
reverse(result.begin(),result.end());//从低位开始转换,最后进行一次reverse即可
returnresult;
}
int main()
{
vector<string>result=convert(13259);
for(int i=0;i<result.size();i++)
cout<<result[i]<<endl;
system("pause");
return0;
}