第1关:求两个实型变量x和y差的绝对值
本关必读
绝对值是指一个数在数轴上所对应点到原点的距离叫做这个数的绝对值,绝对值用| |
来表示。
|a-b|
表示a
和b
差的绝对值,即数轴上表示a
的点和表示b
的点的距离。若a>=b
,则|a-b|=a-b
;若a<b
,则|a-b|=b-a
。
本关任务
本关的任务是求两个实型变量x
和y
差的绝对值。即:输入实型变量x
和y
,若x>=y
,则|x-y| = x-y
;若x<y
,则|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)
{
// 请在此添加实现代码
}
// 输出实型变量x和y的差的绝对值
float SubtractionOperation(float x, float y)
{
float a=x;
float b=y;
if(a>=b)return a-b;
if(b>=a)return b-a;
// 请在此添加实现代码
}
第2关:逆序输出不超出100000的正整数的各位数字及其位数
本关必读
所谓反序数,即有这样成对的数,其特点是其中一个数的各数字排列顺序完全颠倒过来,就变成另一个数,如102
和201
。简单的理解就是顺序相反的两个数,我们把这种成对的数互称为反序数。
逆序输出一个正整数其实就是找到这个数的反序数并输出。
本关任务
本关任务是逆序输出不超出100000
的正整数的各位数字及其位数。其代码位于step2/ReverseNumber.cpp
文件
#include<iostream>
using namespace std;
int main()
{
int x;
// 从命令行读入一个不大于100000的正整数
// 这个数取自测试集的输入
cin >> x;
// 请在下面添加实现代码
/**********Program**********/
int T=0;
int y=x;
for(int z=0;z<x;z++){
y/=10;
T++;
if(y==0)break;
}
int a[T];
a[0]=x%10;
a[1]=x/10%10;
a[2]=x/100%10;
a[3]=x/1000%10;
a[4]=x/10000%10;
for(int i=0;i<T;i++)cout <<a[i];
cout <<" "<<T;
/********** End **********/
}
第3关:判断命令行输入的五位正整数是否是回文数
本关必读
所谓回文数,是指像12321
这样“对称”的数。即:将这个数的各位数字按相反的顺序重新排列后,所得到的数和原来的数一样。
本关任务
本关任务是判断命令行输入的五位正整数是否是回文数,其代码位于step3/PalindromeNumberJudge.cpp
文件
// 判断五位正整数是否是回文数
#include<iostream>
int PalindromeNumberJudge(int x)
{
// 请在此添加实现代码
int y=x,T=0,z=x;
for(int i=0;i<=y;i++){
y/=10;
T++;
if(y==0)break;
}
if(T!=4)return 0;
int b[4];
b[0]=z%10;
b[1]=z/10%10;
b[2]=z/100%10;
b[3]=z/1000%10;
b[4]=z/10000%10;
if(b[0]==b[4]&&b[1]==b[3]){return 1;}
else{return -1;}
}