我想显示如下的乘法表:

    1       2       3       4       5       6       7       8
1   1x1=1
2   1x2=2   2x2=4
3   1x3=3   2x3=6   3x3=9
4   1x4=4   2x4=8   3x4=12  4x4=16
5   1x5=5   2x5=10  3x5=15  4x5=20  5x5=25
6   1x6=6   2x6=12  3x6=18  4x6=24  5x6=30  6x6=36
7   1x7=7   2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49
8   1x8=8   2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64


到目前为止,我有这样的事情:

#include <stdio.h>

int main()
{
    int n, i;
    scanf("%d", &n);
    int row,col;

       if(n<1 || n>9)
    {
        printf("input error");
        return 0;
    }

    for (row=0; row<=n;row++){
        if(row==0)
        {
            for(i=1; i<=n; i++)
            {
                printf("\t%d", i);
            }
        }

        for(col=0; col<=row;col++)
        {
            if(col==0 && row>0)
            printf("%d\t", row);
            if(row>=1 && col!=0)
            printf("%dx%d=%d\t", col, row, col*row);
        }
        if(row!=n)
        printf("\n");
    }
    return 0;
}


我认为它可以正确显示表格,但是代码看起来很草率,而且我敢肯定,可以用一种更加简洁的方式来完成它。有什么建议么?

最佳答案

我将展开显示行和列标题的每个循环的第一次遍历:

#include <stdio.h>

int main()
{
    int n, i;
    scanf("%d", &n);
    int row,col;

    if(n<1 || n>9)
    {
        printf("input error");
        return 0;
    }


    for(i=1; i<=n; i++)
    {
        printf("\t%d", i);
    }
    printf ("\n");

    for (row=1; row<=n;row++){

        printf("%d\t", row);
        for(col=1; col<=row;col++)
        {
            printf("%dx%d=%d\t", col, row, col*row);
        }

        if (row!=n)
            printf("\n");
    }

    return 0;
}

关于c - 乘法表-C,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46992930/

10-09 07:09