以下这段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;
}