牛客网刷题 | BC94 反向输出一个四位数

目前主要分为三个专栏,后续还会添加:

        专栏如下:                 C语言刷题解析       C语言系列文章       我的成长经历

感谢阅读!

初来乍到,如有错误请指出,感谢!


 描述

将一个四位数,反向输出。

输入描述:

一行,输入一个整数n(1000 <= n <= 9999)。

输出描述:

针对每组输入,反向输出对应四位数。

示例1


解题思路 : 

存放这几个数字

然后取模的方式来实现

1234 % 10 = 4

(1234/10) % 10 = 3

(1234/100) % 10 = 2

1234/1000= 1


理解题目要求: 题目要求我们输入一个四位数,并将其每一位数字反向输出。这意味着如果输入是1234,输出应该是4321。

输入处理: 首先,我们需要从用户那里获取输入。在C语言中,我们可以使用scanf函数来实现这一点。我们需要确保输入是一个四位数,即1000到9999之间的整数。

分离每一位数字: 为了反向输出数字,我们需要先获取每一位数字。在C语言中,我们可以使用模运算符%来获取个位数,然后通过整除运算符/来去掉已经处理过的位数。

构建反向数字: 接下来,我们需要构建反向的数字。我们可以通过将每一位数字乘以它们在反向数字中的位置对应的10的幂次来实现这一点。例如,个位数乘以1000(因为它现在是千位),十位数乘以100,百位数乘以10。

输出结果: 一旦我们构建了反向数字,我们就可以将其输出。在C语言中,我们可以使用printf函数来输出结果。

考虑边界条件: 虽然题目已经限定了输入是一个四位数,但在实际编程中,我们可能需要考虑其他边界条件,比如输入的验证,确保用户输入的是一个有效的整数。


代码 1:

/*  解题思路 :  用数组存放这几个数字 
                然后取模的方式来实现
                1234 % 10 = 4
                (1234/10) % 10 = 3
                (1234/100) % 10 = 2
                 1234/1000= 1  
*/
//笨方法...请各位大佬见谅

# include <stdio.h>
int main ()

{
    int n = 0;
    scanf("%d",&n);//用户输入

    if (n <= 9999 && n >= 1000) //数据范围
    {
        int a = n%10;//千位
        int b = (n/10)%10;//百位
        int c = (n/100)%10;//十位
        int d = n/1000;//个位

        printf("%d%d%d%d\n",a,b,c,d);//按照从后往前顺序打印
    }

    return 0;
}

 代码 2:

这代码.......我竟无言以对

天才!

#include<stdio.h>
int main()
{
    int a,b,c,d;
    scanf("%1d%1d%1d%1d",&a,&b,&c,&d);
    printf("%d%d%d%d\n",d,c,b,a);
    
    
    return 0;
}

代码 3 :

#include<stdio.h>

int main()

{
int a;
scanf("%d",&a);
int i,b;
for(i=1;i<=4;i++)
{
    b=a%10; 
    a=a/10;
    printf("%d",b);
}
return 0;
}

#include<stdio.h> // 包含标准输入输出库,用于进行输入输出操作

int main() // 定义主函数
{
    int a; // 定义一个整型变量a,用于存储用户输入的四位数
    scanf("%d", &a); // 使用scanf函数从标准输入读取一个整数并存储到变量a中

    int i, b; // 定义两个整型变量i和b,其中i用于循环计数,b用于存储每轮循环中的个位数数字
    for(i = 1; i <= 4; i++) // 定义一个for循环,循环4次,因为我们需要输出四位数的每一位
    {
        b = a % 10; // 计算a的个位数,即将a与10取模,结果赋值给b
        a = a / 10; // 将a除以10,去掉个位数,为下一次循环做准备
        printf("%d", b); // 输出变量b,即当前的个位数
    }

    return 0; // 程序正常结束并返回0
}

代码 4:

#include<stdio.h> // 包含标准输入输出库,用于进行输入输出操作

int main() // 主函数入口
{
    int a = 0; // 定义一个整型变量a并初始化为0,用于存储输入的四位数
    scanf("%d", &a); // 使用scanf函数从标准输入读取一个整数并存储到变量a中

    while (a) // 当变量a非0时,进入循环
    {
        printf("%d",a%10); // 使用printf函数输出a除以10的余数,即个位数
        a = a / 10; // 将a除以10并赋值给a自身,实现去掉个位的效果
    }

    return 0; // 程序正常结束并返回0
}

知识点 : 

头文件包含: #include<stdio.h>

这个预处理指令告诉编译器包含标准输入输出库,它是进行输入输出操作所必需的。

主函数定义: int main()

这是C语言程序的入口点,每个C程序都从main函数开始执行。

变量声明: int a; int i, b;

int是整型数据的声明,表示这些变量将存储整数。

a用来存储用户输入的四位数。

i用作for循环的计数器。

b用来存储每次循环中提取的数字。

输入函数: scanf("%d", &a);

scanf是一个标准库函数,用于从标准输入(通常是键盘)读取数据。

"%d"是一个格式字符串,指定要读取的数据类型是整数。

&a是变量a的地址,告诉scanf函数在哪里存储读取的数据。

for循环: for(i = 1; i <= 4; i++)

for循环是一种控制流语句,用于重复执行一段代码直到满足特定条件。

初始化表达式i = 1设置循环计数器的初始值。

循环条件i <= 4决定循环何时继续执行。

迭代表达式i++在每次循环结束时更新计数器的值。

取模运算: b = a % 10;

%是取模运算符,用于获取两个数相除的余数。

这里用来获取a的个位数。

整数除法: a = a / 10;

/是整数除法运算符,用于计算两个数相除的整数结果。

这里用来去掉a的个位数,为输出下一个位做准备。

输出函数: printf("%d", b);

printf是一个标准库函数,用于将数据输出到标准输出(通常是屏幕)。

"%d"是一个格式字符串,指定要输出的数据类型是整数。

b是要输出的变量。

程序结束: return 0;

return语句用于从main函数返回一个值。

返回值0通常表示程序正常结束。

  

  • 30
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 逆序数的定义是正向和反向读写数字顺序一样的数,因此四位数的逆序数只有两种情况: 1)形如abba的数,例如1221、2332等; 2)形如abdc的数,且ad=bc,例如1031、4284等。 下面是完整的Python代码实现: count = 0 # 统计逆序数的总数 for i in range(1000, 10000): s = str(i) if s[0] == s[3] and s[1] == s[2]: # 情况1 print(i, end=' ') count += 1 elif s[0] != s[3] and s[1] != s[2] and s[0] == s[2] and s[1] == s[3]: # 情况2 print(i, end=' ') count += 1 if count % 6 == 0: # 每行输出六个 print() print("总共有%d个逆序数。" % count) 输出结果: 1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 2002 2112 2222 2332 2442 2552 2662 2772 2882 2992 3003 3113 3223 3333 3443 3553 3663 3773 3883 3993 4004 4114 4224 4334 4444 4554 4664 4774 4884 4994 5005 5115 5225 5335 5445 5555 5665 5775 5885 5995 6006 6116 6226 6336 6446 6556 6666 6776 6886 6996 7007 7117 7227 7337 7447 7557 7667 7777 7887 7997 8008 8118 8228 8338 8448 8558 8668 8778 8888 8998 9009 9119 9229 9339 9449 9559 9669 9779 9889 9999 总共有90个逆序数。 ### 回答2: 逆序数是正向和反向读写数字顺序一样的数。要找出四位数中所有的逆序数,可以从1000开始逐个判断是否是逆序数。逆序数的定义要求数字顺序一样,因此需要判断该四位数的个位和千位是否相同,十位和百位是否相同,如果两对位数都相同,则说明该四位数是逆序数。 以下是四位数中所有逆序数的示例,并统计逆序数的总数: 1001, 1111, 1221, 1331, 1441, 1551 1661, 1771, 1881, 1991, 2002, 2112 2222, 2332, 2442, 2552, 2662, 2772 2882, 2992, 3003, 3113, 3223, 3333 3443, 3553, 3663, 3773, 3883, 3993 4004, 4114, 4224, 4334, 4444, 4554 4664, 4774, 4884, 4994, 5005, 5115 5225, 5335, 5445, 5555, 5665, 5775 5885, 5995, 6006, 6116, 6226, 6336 6446, 6556, 6666, 6776, 6886, 6996 7007, 7117, 7227, 7337, 7447, 7557 7667, 7777, 7887, 7997, 8008, 8118 8228, 8338, 8448, 8558, 8668, 8778 8888, 8998, 9009, 9119, 9229, 9339 9449, 9559, 9669, 9779, 9889, 9999 逆序数的总数为90。 ### 回答3: 逆序数是正向和反向读写数字顺序一样的数。四位数的逆序数主要包括1001、1111、1221、1331、1441、1551、1661、1771、1881、1991、2002、2112、2222、2332、2442、2552、2662、2772、2882、2992、3003、··· 依此类推,四位数的逆序数共有90个。下面是其完整的列表,并每行输出六个。 1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 2002 2112 2222 2332 2442 2552 2662 2772 2882 2992 3003 3113 3223 3333 3443 3553 3663 3773 3883 3993 4004 4114 4224 4334 4444 4554 4664 4774 4884 4994 5005 5115 5225 5335 5445 5555 5665 5775 5885 5995 6006 6116 6226 6336 6446 6556 6666 6776 6886 6996 7007 7117 7227 7337 7447 7557 7667 7777 7887 7997 8008 8118 8228 8338 8448 8558 8668 8778 8888 8998 9009 9119 9229 9339 9449 9559 9669 9779 9889 9999 总共找到了90个四位数的逆序数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值