C++编程基础实训-第1关:对称数生成

  • Post author:
  • Post category:其他


第1关:对称数生成

100

  • 任务要求
  • 参考答案
  • 评论

任务描述

本关任务:生成一个小于(包括)3位的正整数的对称数:如由123生成123321, 若输入为负数或0,返回-1,若输入大于3位的正整数,只取最后三位生成对称数。

相关知识

为了完成本关任务,你需要掌握:1.if 分支结构;2.for 循环结构。

if 分支结构

程序中有时需要根据某些特定的条件决定对数据进行不同的操作,这就需要一种判断和选择的机制。 C++提供 if 选择语句。其一般形式为:



  1. if (<条件表达式>) <语句>

此结构表示: 如果

<条件表达式>

的值为非

0

(

true

),即“真”,则执行指定的

<语句>

,然后按顺序执行 if 语句的后继语句。如果

<条件表达式>

的值为

0

(

false

),即 “假”,则忽略

<语句>

,按顺序执行 if 语句的后继语句。 if 选择结构只有在条件为真时才执行指定的动作;否则就跳过这个动作。实际应用中,我们经常需要根据测试条件的真假分别执行不同的处理,这种情况下 if 选择结构用起来就不自然了。为此,C++ 提供了一种双分支选择结构—— if-else 选择结构,可以在条件为真或假时分别执行指定的不同动作。C++ 的 if-else 语句的一般形式为:



  1. 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 循环语句,也称计数循环。它的一般形式为:



  1. 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;
}



版权声明:本文为weixin_71890898原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。