在C中需要有关方法的帮助

时间:2014-11-30 23:52:31

标签: c function

我想问一下是否有人可以帮助我使用一个函数。我想给我的函数输入一个输入(例如4),该函数将生成以下数字:

1-222-33333-44444444

我不想只打印它们我想制作它们以便我可以将这些数字保存到表格中。

for(r=1; r<=num; r++)
{
   for(sp=num-r; sp>0; sp--)
      printf(" ");
   for(c=1; c<=r; c++)
      printf("%d", r);
   for(k=2; k<=r; k++)
      printf("%d", r);
   printf("\n");
}

2 个答案:

答案 0 :(得分:0)

这对我有用。

#include <stdio.h>

int main() {
    int i, j;

    for (i = 1; i <= 4; i++) {
        for (j = 2*i; j > 1; j--)
            printf("%d", i);
        printf("-");
    }

    return 0;
}

答案 1 :(得分:0)

从问题中你想要完成的事情并不完全清楚。假设您要生成C-string为"1-222-33333-44444444",这里有一个解决方案:

#include <stdio.h>
#include <stdlib.h>

char *produce_char_sequence(int n);

int main(void)
{
    char* str = produce_char_sequence(4);

    printf("%s\n", str);

    free(str);
    return 0;
}

char *produce_char_sequence(int n)
{
    int i, j, idx;

    char *str = malloc(n * (n + 1)); // n**2 + n - 1 + 1
    if (str == NULL) {
        fprintf(stderr, "cannot allocate memory by malloc\n");
        exit(EXIT_FAILURE);
    }

    idx = 0;
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= 2*i - 1; j++)
            str[idx++] = '0' + i;
        if (i != n) // unless within last iteration
            str[idx++] = '-';
    }
    str[idx] = '\0';

    return str;
}

字符数来自1 + 3 + 5 + .. + 2n-1 arithmetic progression,总计n 2 。那么你还需要n-1 '-'个字符的空格和一个用于结束 null字符的空格。

请注意,n可能会被限制为9。请参阅http://ideone.com/Gi7KxG上的示例。