Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        5年前关闭。
                                                                                            
                
        
我想问是否有人可以帮助我完成一个功能,我想给我的功能输入一个信息(例如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");
}

最佳答案

从问题上还不清楚您要完成什么。假设您想将C字符串生成为"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,总计为n2。然后,您还需要n-1个'-'字符的空间和一个用于结束空字符的空间。

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

关于c - 需要帮助的C方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27219754/

10-17 01:36