给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123

这篇博客探讨了两种不同的C语言程序实现,用于输入一个整数并反向打印其数字。第一种方法使用了除法和模运算,而第二种方法利用了getche()函数的无缓冲特性,直接读取用户输入的字符并转换为数字。博客还介绍了<conio.h>和<stdlib.h>头文件的作用,并提供了关于ASCII码和输入处理的细节。
摘要由CSDN通过智能技术生成

这一道题我最一开始我自己的代码是这样的:
#include<stdio.h>
int main()
{
int n, x=0, a, b, c, d, e;
scanf("%d",&n);
a=n/10000;
b=((n%10000)/1000);
c=(((n%10000)%1000)/100);
d=((((n%10000)%1000)%100)/10);
e=((((n%10000)%1000)%100)%10);
for(x=0;n>0;x++)
{
n=n/10;
}
printf("%d\n",x);
printf("%d %d %d %d %d\n",a,b,c,d,e);
printf("%d%d%d%d%d",e,d,c,b,a);
return 0;
}
在这里插入图片描述
但是感觉有点太过于简单, 于是我在网上找其他人对于这道题做出的解答,看到了这样一个代码:
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
int main() {

int n = 0;                                //设置n为位数。
int x[6];                    //设置x[6]为每个位数的数字。
for (int i = 1; i <= 6;i++)
{
    int a = 0;
    a = getche();                   //输入给a的数字是字符形式,所以后面需要减48。
    if (a=='\r')                      //因为不大于5,需要最后一位\r来判断输入结束。
    {
        printf("     \b\b\b\b\b");//由于getche()的特性,需要将回显清空。
        printf("%d\n", n);        //回显位数。
        break;
    }
    n++;
    x[i] = a-48;                    
}
printf("%d  %d  %d  %d  %d\n",x[1],x[2],x[3],x[4],x[5]);//回显每个位数的数字。
printf("%d%d%d%d%d\n",x[5],x[4],x[3],x[2],x[1]);        //反向回显数字。
system("pause");
return 0;

}
这个程序说白了就是利用getche()没有缓冲区的特性。当gerche()读到数字时,他并不回显在屏幕上,也不会把数据存入缓冲区,而是直接运行后面的程序,这导致用户每输入一个数字,就会循环一次。
注: 1.C语言只识别ASCII码,getche()函数只能读取字母,当你输入数字1时,它会转换成ASCII码49。
2.由于getche()的回显特性,你需要在最终的出结果前将屏幕清空,也就是“空格”然后“退格”。
还有代码中的两个新的头文件分别是<stdlib.h>、<stdio.h> 。
<stdlib.h>是一些常用的函数,但是又不知道把它们放到哪里合适,因此就都放到了stdlib.h这个头文件中。
<<conio.h>> 预处理命令,表示程序包含conio.h库文件conio.h库文件定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,代码中的getche函数就是在这个头文件中。
如果想要继续了解这两个头文件的话可以点击下方传送门。
<stdlib.h>传送门1
<conio.h>传送门2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

起个名字真的难啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值