目录
第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;
}
}