目录
第1关:求两个实型变量x和y差的绝对值
本关必读
本关任务
测试说明
第2关:逆序输出不超出100000的正整数的各位数字及其位数
本关必读
本关任务
测试说明
第3关:判断命令行输入的五位正整数是否是回文数
本关必读
本关任务
测试说明
绝对值是指一个数在数轴上所对应点到原点的距离叫做这个数的绝对值,绝对值用| |
来表示。
|a-b|
表示a
和b
差的绝对值,即数轴上表示a
的点和表示b
的点的距离。若a>=b
,则|a-b|=a-b
;若a,则
|a-b|=b-a
。
本关的任务是求两个实型变量x
和y
差的绝对值。即:输入实型变量x
和y
,若x>=y
,则|x-y| = x-y
;若x
|x-y| = y-x
。提醒:不允许使用系统函数fabs()
。
要求实现step1/Subt\fractionOperation.cpp
中的带值函数float Subt\fractionOperation(float x, float y)
:
// 输出实型变量x和y的差的绝对值
float Subt\fractionOperation(float x, float y)
{
// 请在此添加实现代码
}
本关的测试文件是step1/Subt\fractionOperationTest.cpp
,负责对你写的实现代码进行测试。具体说明如下:
#include
#include "Subt\fractionOperation.h"
using namespace std;
int main()
{
float x, y;
// 从命令行读入两个float型数值
// 这两个数取自测试集的输入
cin >> x >> y;
cout << Subt\fractionOperation(x,y) << endl;
}
上述main
函数从命令行读入,并将处理后的结果通过命令行输出。平台将根据这个命令行输出来判断float Subt\fractionOperation(float x, float y)
是否正确实现。
注意,step1/Subt\fractionOperationTest.cpp
的代码不能被修改。
其中:Subt\fractionOperation.h
文件代码如下:
#ifndef _ISLEAPYEAR_H_
#define _ISLEAPYEAR_H_
float Subt\fractionOperation(float ,float );
#endif
以下是平台对step1.Subt\fractionOperationTest
的测试样例: 测试输入:153 62
预期输出:91
测试输入:2.25 6.32
预期输出:4.07
// 输出实型变量x和y的差的绝对值
float SubtractionOperation(float x, float y)
{
// 请在此添加实现代码
float SubtractionOperation;
if(x>y)
{
SubtractionOperation=x-y;
}
else if(x<=y)
{
SubtractionOperation=y-x;
}
return SubtractionOperation;
}
所谓反序数,即有这样成对的数,其特点是其中一个数的各数字排列顺序完全颠倒过来,就变成另一个数,如102
和201
。简单的理解就是顺序相反的两个数,我们把这种成对的数互称为反序数。
逆序输出一个正整数其实就是找到这个数的反序数并输出。
本关任务是逆序输出不超出100000
的正整数的各位数字及其位数。其代码位于step2/ReverseNumber.cpp
文件,定义如下:
#include
using namespace std;
int main()
{
int x;
// 从命令行读入一个不大于100000的正整数
// 这个数取自测试集的输入
cin >> x;
// 请在下面添加实现代码
/**********Program**********/
/********** End **********/
}
本关的测试文件仍然是step2/ReverseNumber.cpp
,负责对你写的实现代码进行测试。
以下是平台对step2.ReverseNumber
的测试样例:
测试输入:90807
预期输出:70809 5
#include
using namespace std;
int main()
{
int x;
// 从命令行读入一个不大于100000的正整数
// 这个数取自测试集的输入
cin >> x;
// 请在下面添加实现代码
/**********Program**********/
int reverse=0,count=0,temp;
while(x)
{
temp=x%10;
reverse= reverse*10+temp;
x/=10;
count++;
}
cout << reverse << " " << count << endl;
/********** End **********/
return 0;
}
所谓回文数,是指像12321
这样“对称”的数。即:将这个数的各位数字按相反的顺序重新排列后,所得到的数和原来的数一样。
本关任务是判断命令行输入的五位正整数是否是回文数,其代码位于step3/PalindromeNumberJudge.cpp
文件,定义如下:
// 判断五位正整数是否是回文数
int PalindromeNumberJudge(int x)
{
// 请在此添加实现代码
}
本关的测试文件是step3/PalindromeNumberJudgeTest.cpp
,负责对你写的实现代码进行测试。
代码说明详见注释。
注意,step3/PalindromeNumberJudgeTest.cpp
的代码不能被修改。
本关的测试代码是step3/PalindromeNumberJudgeTest.cpp
:
#include
#include "PalindromeNumberJudge.h"
using namespace std;
int main()
{
int x;
// 从命令行读入一个正整数
// 这个数取自测试集的输入
cin >> x;
if (PalindromeNumberJudge(x) == 1)
{
cout << "该数是回文数!" << endl;
}
else if (PalindromeNumberJudge(x) == -1)
{
cout << "该数不是回文数!" << endl;
}
else
{
cout << "对不起,您输入的不是五位正整数!" << endl;
}
}
其中:PalindromeNumberJudge.h
文件代码如下:
#ifndef _ISLEAPYEAR_H_
#define _ISLEAPYEAR_H_
int PalindromeNumberJudge(int );
#endif
以下是平台对step3.PalindromeNumberJudgeTest
的测试样例: 测试输入:123
预期输出:对不起,您输入的不是五位正整数!
测试输入:12306
预期输出:该数不是回文数!
测试输入:12321
预期输出:该数是回文数!
// 判断五位正整数是否是回文数
int PalindromeNumberJudge(int x)
{
// 请在此添加实现代码
int PalindromeNumberJudge;
int sum=x;
int k=0;
if(x>9999 && x<100000)
{
while(sum!=0)
{
k=k*10+(sum%10);
sum=sum/10;
}
if(k==x)
{
PalindromeNumberJudge=1;
}
else
{
PalindromeNumberJudge=-1;
}
}
else
{
PalindromeNumberJudge=0;
}
return PalindromeNumberJudge;
}