在c ++中将数字打印为带有嵌套for循环的矩形

时间:2014-10-25 22:15:00

标签: c++ loops shape

我是编程的初学者。

我目前正在编写一个代码,该代码从用户那里获取1到9行和列。对于单个数字,应该有一个“0”

输出应如下所示:

Type a row number between 1 and 9: 3
Type a column number between 1 and 9:7
01 02 03 04 05 06 07
08 09 10 11 12 13 14
15 16 17 18 19 20 21

这是我目前的代码:

#include <iostream>


int main() {
    int r,c,i,j,n,k;
    cout<<"Type a row number between 1 and 9: ";
    cin>>r;
    while (r<1 || r>9){
        cout << "Please enter a number between 1 and 9.";
        cin>>r;
    }
    cout<< "Type a column number between 1 and 9: ";
    cin>>c;
    while (c<1 || c>9){
        cout << "Please enter a number between 1 and 9.";
        cin>>c;
    }

    n=r*c;

    for(k=0; k<n; k++){
    }

    for(i=0; i<r; i++)
    {
        for(j=0; j<c; j++)
        {
            cout<<i<<" ";
        }       
        cout << endl;
    }

    return 0;
}

我已为用户添加了有效性声明。

输出:

Type a row number between 1 and 9: 3
Type a column number between 1 and 9:7
0 0 0 0 0 0 0
1 1 1 1 1 1 1
2 2 2 2 2 2 2 

我无法弄清楚0以及如何将数字实现到矩形中。

请帮忙。

1 个答案:

答案 0 :(得分:0)

您已关闭,只需将输出循环更改为:

int counter = 1;

for (i = 0; i < r; i++)
{
    for (j = 0; j < c; j++)
    {
        cout << counter << " ";
        ++counter;
    }       
    cout << endl;
}

如果您想避免额外的局部变量,您也可以这样做:

cout << (i*c + j + 1) << " ";

我更喜欢使用counter的显式版本,因为它可以让您明白您正在做的事情,并且您可以根据需要轻松切换循环/输出的顺序。