目录
第1关:将小写字母转换为大写字母
本关必读
在ASCII码表中:大小写字母都是按顺序进行存储的,大写字母的ASCII值区间为:65~90,对应的字母为:'A'-'Z';小写字母的ASCII值区间为:97~122,对应的字母为:'a'-'z',因此,将小写字母转化为大写字母,可以直接将该变量减32即可得到对应的大写字母;相反将大写字母转化为小写字母,则直接将该变量加32即可。
本关任务
本关任务是判断键盘输入的字符是否为小写字母,若为小写字母则转换为大写字母输出,否则原样输出。即实现step1/LowercaseToUppercase.cpp中的带值函数char LowercaseToUppercase(char c):
// 将键盘输入的小写字母转换为大写字母,其他字母原样输出char LowercaseToUppercase(char c){// 请在此提供实现代码}
测试说明
本关的测试文件是step1/LowercaseToUppercaseTest.cpp,负责对你写的实现代码进行测试。具体说明如下:
#include<iostream>#include"LowercaseToUppercase.h"using namespace std;int main(){char ch;// 从命令行读入一个char型字符// 该字符取自测试集的输入cin>>ch;cout<< LowercaseToUppercase(ch)<<endl;}
上述main函数从命令行读入,并将处理后的结果通过命令行输出。平台将根据这个命令行输出来判断char LowercaseToUppercase(char c)是否正确实现。
注意,step1/LowercaseToUppercaseTest.cpp 的代码不能被修改。
其中:LowercaseToUppercase.h文件代码如下:
#ifndef _ISLEAPYEAR_H_#define _ISLEAPYEAR_H_char LowercaseToUppercase(char );#endif
以下是平台对step1.LowercaseToUppercaseTest的测试样例:
测试输入:a
预期输出:A
测试输入:#
预期输出:#
测试输入:H
预期输出:H
开始你的任务吧,祝你成功!
// 将键盘输入的小写字母转换为大写字母,其他字母原样输出
char LowercaseToUppercase(char c)
{
if(97<=c&&c<=122)
{
char C=c-32;
return C;
}
return c;
// 请在此提供实现代码
}
第2关:根据年月日判断其是星期几
本关必读
基姆拉尔森计算公式(Kim Larsson Calculation Formula):W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7
其中:
d表示日期中的日数;m表示月份数;y表示年数;W=0-6代表星期日-星期六。
注意:在公式中有个与其他公式不同的地方:把一月和二月看成是上一年的十三月和十四月,例如:2004-01-10需换算成2003-13-10来代入公式计算。
本关任务
本关任务是根据键盘输入的年月日来判断其是星期几。即其代码位于step2/CalculateWeekDay.cpp文件,定义如下:
#include<iostream>using namespace std;int main(){int year,month,day;// 从命令行读入三个正整数// 这三个数取自测试集的输入cin>>year>>month>>day;// 请在下面添加实现代码/**********Program**********//********** End **********/}
测试说明
本关的测试文件仍然是step2/CalculateWeekDay.cpp,负责对你写的实现代码进行测试。
以下是平台对step2.CalculateWeekDay的测试样例:
测试输入:1980 12 31
预期输出:星期三
测试输入:2000 2 29
预期输出:星期二
测试输入:2015 2 28
预期输出:星期六
测试输入:1980 1 3
预期输出:星期四
开始你的任务吧,祝你成功!
#include<iostream>
using namespace std;
int main()
{
int y,m,d,W;
// 从命令行读入三个正整数
// 这三个数取自测试集的输入
cin>>y>>m>>d;
// 请在下面添加实现代码
/**********Program**********/
if(m==1||m==2)
{
W=(d+2*(m+12)+3*(m+13)/5+(y-1)+(y-1)/4-(y-1)/100+(y-1)/400+1)%7;
}
else
{
W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
}
switch(W)
{
case 0:
cout<<"星期日"<<endl; break;
case 1:
cout<<"星期一"<<endl; break;
case 2:
cout<<"星期二"<<endl; break;
case 3:
cout<<"星期三"<<endl; break;
case 4:
cout<<"星期四"<<endl; break;
case 5:
cout<<"星期五"<<endl; break;
case 6:
cout<<"星期六"<<endl; break;
}
return 0;
/********** End **********/
}
第3关:根据工资收入来计算个人所得税
本关必读
个人所得税率是个人所得税税额与应纳税所得额之间的比例。个人所得税率是由国家相应的法律法规规定的,根据个人的收入计算。
本关任务
本关任务是根据工资收入来计算个人所得税,个人所得税率表如下:
月收入1200元起征,
-
超过起征点
1000元(含)以内,超过1200元的部分按5%征税; -
超过起征点
3000元(含)以内,超过1200元的部分按10%征税; -
超过起征点
5000元(含)以内,超过1200元的部分按15%征税; -
超过起征点
10000元(含)以内,超过1200元的部分按20%征税; -
超过起征点
10000元以上的,超过1200元的部分按30%征税。
计算个人所得税的代码位于step3/TaxCalculate.cpp文件,定义如下:
// 根据收入计算个人所得税double TaxCalculate(double m){// 请在此提供实现代码}
测试说明
本关的测试文件是step3/TaxCalculateTest.cpp,负责对你写的实现代码进行测试。代码说明详见注释。
注意,step3/TaxCalculateTest.cpp的代码不能被修改。
本关的测试代码是step3/TaxCalculateTest.cpp:
#include<iostream>#include"TaxCalculate.h"using namespace std;int main(){double income;// 从命令行读入一个double型数值// 这个数取自测试集的输入cin>>income;cout<<TaxCalculate(income)<<endl;}
其中:TaxCalculate.h文件代码如下:
#ifndef _ISLEAPYEAR_H_#define _ISLEAPYEAR_H_double TaxCalculate(double );#endif
以下是平台对step3.TaxCalculateTest的测试样例:
测试输入:1545
预期输出:17.25
测试输入:5406
预期输出:630.9
测试输入:3163
预期输出:196.3
开始你的任务吧,祝你成功!
// 根据收入计算个人所得税
double TaxCalculate(double m)
{
if(1200<m&&m<=2200)
{
double A=(m-1200)*0.05;
return A;
}
else if(2200<m&&m<=4200)
{
double B=(m-1200)*0.1;
return B;
}
else if(4200<m&&m<=6200)
{
double C=(m-1200)*0.15;
return C;
}
else if(6200<m&&m<=11200)
{
double D=(m-1200)*0.2;
return D;
}
//超过起征点10000元以上的,超过1200元的部分按30%征税。
else (11200<m);
{
double E=(m-1200)*0.3;
return E;
}
}