Вывести числовой квадрат заданного размера
Что-то не так, можно подсказку?) Выводит правильно, только если ввожу 2.
Пример ввода
2
Пример вывода
1 2
3 4
Условие задачи:
Вывести числовой квадрат заданного размера. Выведенные числа начинаются с единицы и постоянно увеличиваются. В каждой строке числа разделены пробелами. Размер считать с клавиатуры.
#include <stdio.h>
int main() {
int total;
int temp = 1;
scanf("%d", &total);
printf("%d ", 1);
for ( int i = 0; i < total; i++ ) {
for ( int j = 0; j < i; j++ ) {
temp += 1;
printf("%d ", temp);
}
temp += 1;
printf("%d\n", temp);
}
return 0;
}
Ответы (4 шт):
Попробуйте заменить
for ( int i = 0; i < total; i++ ) {
for ( int j = 0; j < i; j++ ) {
temp += 1;
printf("%d ", temp);
}
temp += 1;
printf("%d\n", temp);
}
на
for ( int i = 0; i < total; i++ ) {
for ( int j = 0; j < i; j++ ) {
temp += 1;
printf("%d ", temp);
}
printf("\n");
}
Внутренний цикл тоже до total (границы обоих циклов д.б. одинаковые, тогда получится квадрат).
Должно быть
...
for ( int i = 0; i < total; i++ )
{
for ( int j = 0; j < total; j++ )
{
temp++;
printf("%d ", temp);
}
printf("\n");
}
Тогда будет выведено total
чисел в строчку и total
строчек. Итого - total
*total
элементов, что и требовалось.
Либо легко можно отделаться одним циклом:
for (int i = 0; i < total * total; i++)
{
printf("%d ", i + 1);
if (((i + 1) % total) == 0) printf("\n");
// если вывели total элементов - перевод строки
}
P.S. printf("%d ", 1);
перед циклами необходимо убрать. Это заведомо лишнее действие.
Кому интересно конечное решение вот такое:
#include <stdio.h>
int main() {
int total;
int temp = 0;
scanf("%d", &total);
for ( int i = 0; i < total; i++ ) {
for ( int j = 0; j < total; j++ ) {
temp += 1;
printf("%3d", temp);
}
printf("\n");
}
return 0;
}