数字之间分开

时间:2015-10-20 09:57:31

标签: c

我做了这个编码,但我无法完成。这个想法应该输入数字,并且在屏幕上必须单独显示。例)如果我们输入:1234结果:1 2 3 4.

#include<stdio.h>
int show_digit(int x);
int main(void)
{
    int x;
    printf("Enter the variable:");
    scanf("%d", &x);
    printf("%d ", show_digit(x));
    return 0;
}
int show_digit(int x)
{
        return show_digit(x / 10)%10;
}

3 个答案:

答案 0 :(得分:2)

你似乎试图让func nextPosition() -> [CGPoint] { // Make a separate array for each group of points in each direction let down1 = [p1, p2] let down2 = [p3, p4, p5] let left1 = [p6, p7] let left2 = [p8, p9, p10] let left3 = [p11, p12, p13] let up1 = [p14, p15] let up2 = [p16, p17] let up3 = [p18, p19] let right1 = [p20, p21] let right2 = [p22, p23] let right3 = [p24, p25] let right4 = [p26, p27, p28, p29, p30] // Make separate arrays for each direction which contains the previous arrays let dArray = [down1, down2] let lArray = [left1, left2, left3] let uArray = [up1, up2, up3] let rArray = [right1, right2, right3, right4] // Make an array to group all the directions let array = [dArray, lArray, uArray, rArray] var nextPositions = [CGPoint]() // loop through dArray, lArray etc. for arr in array { // pick random direction array var length = UInt32(arr.count) let random = Int(arc4random_uniform(length)) // pick random point from sub array length = UInt32(arr[random].count) let random2 = Int(arc4random_uniform(length)) // print final random point print(arr[random][random2]) nextPositions.append(arr[random][random2]) } return nextPositions } 递归,但是你仍然坚持如何实际做到这一点。这个重构版本的函数实际上从输入的 last 数字遍历 first (这是基本情况),然后开始打印出间隔数字走出递归。请注意,我将show_digit()的返回类型更改为show_digits(),因为它现在实际上是一个不计算任何内容的实用函数。

void

答案 1 :(得分:0)

在这个答案中,我不会向您显示任何代码,但我会解释您的问题。

我尝试编译你的代码,它编译成功,但是当我运行它时,程序崩溃了,这是你的问题吗?

我知道你的程序崩溃的原因:内存不足!

它是如何发生的?

你的函数int show_digit(int)是一个递归函数,在这个函数中,你没有做一个语句来停止递归,所以,递归将继续,直到函数的堆栈达到最大值允许记忆,然后它最终导致崩溃。

答案 2 :(得分:-1)

非递归版:

int digits[256];
int i = 0;
    do {
       digits[i++]=x%10;
       x /= 10;
    } while (x);

for (i=i-1; i>=0; i--) {
   printf ("%d ", digits[i]);
}

对于正整数,它可以正常工作。