第1关:对称数生成
100
- 任务要求
- 参考答案
- 评论
任务描述
本关任务:生成一个小于(包括)3位的正整数的对称数:如由123生成123321, 若输入为负数或0,返回-1,若输入大于3位的正整数,只取最后三位生成对称数。
相关知识
为了完成本关任务,你需要掌握:1.if 分支结构;2.for 循环结构。
if 分支结构
程序中有时需要根据某些特定的条件决定对数据进行不同的操作,这就需要一种判断和选择的机制。 C++提供 if 选择语句。其一般形式为:
-
if (<条件表达式>) <语句>
此结构表示: 如果
<条件表达式>
的值为非
0
(
true
),即“真”,则执行指定的
<语句>
,然后按顺序执行 if 语句的后继语句。如果
<条件表达式>
的值为
0
(
false
),即 “假”,则忽略
<语句>
,按顺序执行 if 语句的后继语句。 if 选择结构只有在条件为真时才执行指定的动作;否则就跳过这个动作。实际应用中,我们经常需要根据测试条件的真假分别执行不同的处理,这种情况下 if 选择结构用起来就不自然了。为此,C++ 提供了一种双分支选择结构—— if-else 选择结构,可以在条件为真或假时分别执行指定的不同动作。C++ 的 if-else 语句的一般形式为:
-
if (<条件表达式>) <语句 1> else <语句 2>
else 和
<语句 2>
称为 else 分支或 else 子句。上述结构表示:如果
<条件表达式>
的值为非
0
(
true
),即“真”,则执行
<语句 1>
,执行完
<语句 1>
后继续执行整个 if-else 语句的后继语句;如果
<条件表达式>
的值为
0
(
false
),即“假”,那么跳过
<语句 1>
而执行
<语句 2>
,执行完
<语句 2>
后继续执行整个 if-else 语句的后继语句。也就是说,if-else 语句总是根据
<条件表达式>
的结果,选择
<语句 1>
和
<语句 2>
中的一个执行,执行完后,整个 if-else 语句就算执行完了。 #####for 控制结构 C++ 提供一种语句—— for 循环语句,也称计数循环。它的一般形式为:
-
for (<初始化语句> ;[<条件表达式>]; [<增量表达式>] ) <语句>
其中,for 是 C 和 C++ 的关键字,表示 for 循环语句的开始。
<初始化语句>
可以是任何合法的语句,
<条件表达式>
和
<增量表达式>
则可以由任何合法的表达式充当,其中
<初始化语句>
通常是一个赋值语句,用来给循环控制变量赋初值;
<条件表达式>
是一个能够转换成逻辑值的表达式,它决定什么时候退出循环,该表达式可以为空(为空时逻辑值恒为
true
);
<增量表达式>
定义了循环控制变量每循环一次后按什么方式变化,该表达式也可以为空,这时不产生任何计算效果。
<初始化语句>
可以是表达式语句或声明语句,应该以 “;” 结束。
<条件表达式>
和
<增量表达式>
之间用 “;” 分开。
<语句>
是
for
语句的循环体。
for
语句的功能是:首先计算
<初始化语句>
,然后计算
<条件表达式>
的值,如果该值为
false
,则结束循环,跳过循环体的
<语句>
,转到整个
for
语句的后继语句继续执行;如果该值为
true
,则执行循环体的
<语句>
,执行完循环体后,紧接着执行
<增量表达式>
,再计算
<条件表达式>
的值,如果该值为
true
,则执行循环体的
<语句>
,再执行
<增量表达式>
,再计算
<条件表达式>
进行测试……,直到
<条件表达式>
的值为
false
,则结束循环,跳过循环体的
<语句>
,继续执行整个
for
语句的后继语句。
编程要求
根据提示,在右侧编辑器补充
main
函数,以实现生成一个小于(包括)
3
位的正整数的对称数的要求,若输入为负数或0,返回-1,若输入大于3位的正整数,只取最后三位生成对称数。
测试说明
平台会对你编写的代码进行测试:
测试输入:
123456
预期输出:
456654
测试输入:
720
预期输出:
720027
开始你的任务吧,祝你成功!
源代码
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int num;
cin>>num;
//请在此添加代码,输入数字,并判断是否为正数,不是则输出“-1”;
//如果是大于3位的正整数,只取最后三位数字,并生成对称数;如果是小于等于三位的正整数,则直接生成对称数;
/**********Program**********/
if(num>0){
int t;
int a;
a=num;
for(t=0;num>0;t++){
num=num/10;
}
num=a;
if(t>3){
cout<<num%1000;
int j=0;
for(;j<3;j++){
cout<<num%10;
num=num/10;
}
}else{
cout<<num;
int j=0;
if(num>=100){
for(;j<3;j++){
cout<<num%10;
num=num/10;
}
}else{
for(;j<2;j++){
cout<<num%10;
num=num/10;
}
}
}
}else{
cout<<"-1";
}
/********** End **********/
return 0;
}