vc-询问简单的问题 。

以下这段C代码在VC下运行,实现的是从键盘输入一个0-10000的整数,然后验证是否属于这个范围,最后从个位开始依次输出每一位的数字 。

#include <stdio.h>
main(){
 int a;
 do{
  printf("print a number(0-10000):");
  scanf("%d",&a);
  printf("\n");
 }while(a>=10000 || a<=0);
 do{
  printf("%d\n",a%10);
  a/=10;
 }while(a>0);
}

 

小弟初学C语言,这是书上的例题。还望前辈不吝指教! 在此先谢过!!

想问下 :1)当输入一个非整数(小数或字母)的时候,并不能出现正确的结果;当输入字母的时候,会出现无限次的循环刷屏现象。 ?

                   2)如何控制程序仅接受整数输入 ?

                   3)如何让这段程序 从最高位往个位 依次输出每一位数字。(想知道scanf接收的一次性输入数字可否按这种方式打印输出。)

请知道的前辈帮忙分析指导下 ,感谢!!

 

===============================

在论坛发帖后得到前辈的解答,现分享如下:

#include <stdio.h>
int main()
{
    int a;
    int b = 0;
    int t = 1;
    do
    {
        printf("print a number(0-10000):");
        while(scanf("%d",&a) != 1 )
            fflush(stdin);
        printf("\n");
    }while(a>=10000 || a<=0);
    b = a;
    while(a>0)
    {
        //printf("%d ",a%10);
        a/=10;
        t *= 10;
    }
 printf("t=%d",t);
    printf("\n");
    t /= 10;
 printf("t=%d",t);
    while( b > 0 )
    {
        printf("%d ", b / t );       //t和b用的太好了 。构造算法真的挺难。。
         b %= t;
        t /= 10;
    }
    printf("\n");
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值