#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
char a[30]
int i,l
printf("请输入一整哪旁斗型数字:")
gets(a)
printf("数字李磨拆分如下:\n")
l=strlen(a)
for(i=0i<li++)
printf("%d ",a[i]-'0')//将数字字符转为数字值
printf("\n")
}
你看一启贺下,还可以的话,麻烦你采纳我,Thank you。
将一个整数的各个位分离出来的最简单方法就是模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 ( n>0 )
{
//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=0str[i]i++ ) //正向输出
printf("%c\n", str[i] )
for( i--i>=0i-- ) //逆向输出
printf("%c\n", str[i] )
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)