重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
小弟有这么一种做法,我觉得这个比较快一点。写得不是很好,你看下先啦!
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、网站设计、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的哈巴河网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
#includestdio.h
#includestring.h
#includewindows.h
int main()
{
char a[30];
int i,l;
printf("请输入一整型数字:");
gets(a);
printf("数字拆分如下:\n");
l=strlen(a);
for(i=0;il;i++)
printf("%d ",a[i]-'0');//将数字字符转为数字值
printf("\n");
}
你看一下,还可以的话,麻烦你采纳我,Thank you。
最简单的方式方式:
#include"stdio.h"
void
main()
{
int
i,n[8];
char
num[9];
printf("Input
Number:");
gets(num);
//gets()
字符串接受
这时候
num[0]等
于你第一个输入的数
num[1]等于第二个...(依此类推)
printf("These
is
you
have
putted
in
:")
for(i=0;i8;i++)
{
n[i]=(int)num[i];
printf("%d",n[i]);
}
}
你的方式改正后:
#includestdio.h
void
main()
{
long
int
a;
int
b,i;
int
in[8];
scanf("%ld",a);
for(i=7;i=0;i--)
{
b=a%10;
a=(a-b)/10;
in[i]=b;
}
for(i=0;i8;i++)
{
printf("%d
",in[i]);
}
}
//此方法比较麻烦的方式
将一个整数的各个位分离出来的最简单方法就是模10,取个位数,直到该变为0。
参考代码:
#include stdio.h
void main()
{
int n=0;
scanf("%d", n );
do {
printf("%d\n", n%10 ); //每次输出个位
n/=10 ; //缩小10倍,去除原来的个位。
}while(n);
}
但这整拆分的特点是从后向前输出每一位数。
如果仅是为了输出,还想正向输出每一位数,则可用递归函数来解决。(也可以实现逆向输出)
参考代码:
#include stdio.h
void split_int( int n )
{
if ( n0 )
{
//printf("%d\n", n%10 );//逆向输出,放开这里,关闭下面的printf().即:先输出当前个位,再去高位的数
split_int( n/10 );//先去输出高位的数
printf("%d\n", n%10 ); //再输出当前的个位数
}
}
void main()
{
int n;
scanf("%d", n);
split_int(n);
}
如果想把分离开的数据存储到数组中,则最简单的方法是将整数用sprintf()存储到字符数组中,然后,遍历数组,逐位取出。
参考代码:
#include stdio.h
void main()
{
int n,i;
char str[20];
scanf("%d", n);
sprintf(str,"%d", n);
for( i=0;str[i];i++ ) //正向输出
printf("%c\n", str[i] );
for( i--;i=0;i-- ) //逆向输出
printf("%c\n", str[i] );
}
pow函数学过吧? 就是平方pow(a,b) a的b次方
我暂时想不到什么简单的算法 先给个复杂的
#includestdio.h
#includemath.h
int main()
{ int n,s=-1,d,m;
scanf("%d",n);
m=n;
while(m)
{
m/=10;
s++;
}
while(s-1)
{
d=n/pow(10,s);
n-=d*pow(10,s);
printf("%d",d);
s--;
}
}