打印一些数字

时间:2018-07-12 02:11:36

标签: c printf

我想根据输入N打印号码。

随着N范围的增加,我会被搞砸了。

有没有比这更容易的解决方案了?

如果有人帮助我,我将非常感激。谢谢!

     if (N == 3) {
        for (int a = 0; a < N; a++) {
            for (int b = 0; b < 3; b++) {
                printf("%03d ",y[a][b]);
            }
            cout << endl;
        }
    }
    else if (N == 4) {
        for (int a = 0; a < N; a++) {
            for (int b = 0; b < 3; b++) {
                printf("%04d ", y[a][b]);
            }
            cout << endl;
        }
    }
    else if (N == 5) {
        for (int a = 0; a < N; a++) {
            for (int b = 0; b < 3; b++) {
                printf("%05d ", y[a][b]);
            }
            cout << endl;
        }
    }
    else if (N == 6) {
        for (int a = 0; a < N; a++) {
            for (int b = 0; b < 3; b++) {
                printf("%06d ", y[a][b]);
            }
            cout << endl;
        }
    }
    else {
        for (int a = 0; a < N; a++) {
            for (int b = 0; b < 3; b++) {
                printf("%07d ", y[a][b]);
            }
            cout << endl;
        }
    }

2 个答案:

答案 0 :(得分:3)

使用Transaction Receipt格式的*宽度参数说明符(假设:N是一个整数)

printf

答案 1 :(得分:0)

尝试

for (int a = 0; a < N; a++) { 
    for (int b = 0; b < 3; b++) { 
        printf("%0*d ",N, y[a][b]); 
    } 
    cout << endl; 
}

我通过电话输入解决方案。当我打开电脑时会对其进行测试

这称为动态宽度说明符。 Reference

  

宽度说明

     

(数字)要打印的最小字符数。   如果要打印的值小于此数字,则结果为   用空白填充。即使该值不会被截断   结果更大。

     

*宽度不是在format字符串中指定的,而是在必须为   格式化。