从语言的整数分割

吕小果 2013-10-16 04:46:53
Description

从键盘输入一个长整数(不超过10位),从高位开始逐位分割并输出。


Input

正整数n,不含前导零。

Output

分割的整数序列,各整数之间用空格格开。
注意,最后一个数字后面没有空格!


Sample Input


654321

Sample Output


6 5 4 3 2 1

Source

#include <stdio.h>
int main()
{
int n, c[10], k, i;
scanf("%d", &n);
k = 0;
while (n){
c[k++] = (n%10)+'0';
n /= 10;
}
for (i=k-1; i>0; i--)
printf("%c ", c[i]);
printf("%c\n", c[0]);
return 0;
}
这是我从网上搜的关于整数分割的问题,其中 c[k++] = (n%10)+'0','0'是什么意思,
...全文
230 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-10-17
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
    int n, c[10], k, i;
    scanf("%d", &n);
    k = 0;
    while (n){
        c[k++] = n%10;
        n /= 10;
    }
    for (i=k-1; i>0; i--)
        printf("%d ", c[i]);
    printf("%d\n", c[0]);
    return 0;
}
愤怒的呆鱼 2013-10-16
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
说错了。 是让整数转换成字符。 ascii中0~9字符是连续排列的。 因此 '0' + 0 = '0' '0' + 1 = '1' ...
小白求解:为何不能直接用整型输出,要用字符型输出呢?
AnYidan 2013-10-16
  • 打赏
  • 举报
回复
看 ASCII 码表
做或不做 2013-10-16
  • 打赏
  • 举报
回复
我说错了 ‘0’是字符 是char型的 你加上‘0’ 相对于ASCII 48 在加上取余的 那个 用char输出就是 int ASCII 0 48 1 。。。 49 2 。。。 50 3 。。。 51 4 。。。 52 5 。。。 53 6 。。。 54 7 。。。 55 。。。。。。
threenewbee 2013-10-16
  • 打赏
  • 举报
回复
说错了。 是让整数转换成字符。 ascii中0~9字符是连续排列的。 因此 '0' + 0 = '0' '0' + 1 = '1' ...
做或不做 2013-10-16
  • 打赏
  • 举报
回复
c[k++] = (n%10)+'0'; '0' 是字符串啊 你把整数和‘0’ 相加 等于加上‘0’的ASCII码 就是整形数48 你输出的时候是用char输出的 所有的加上相对的偏移量
threenewbee 2013-10-16
  • 打赏
  • 举报
回复
C语言规定,用字符数组保存字符串,必须以'0'作为结尾。 表示这是数组的结尾。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧