这样一道入门题目,本来可以用for循环直接操作,但作者异想天开(xian de dan teng)地把所有数据登记在一个数组里面,然后再统一按格式输出。也就是定义一个数组Map,大小为n成n,然后按照输入数据,把Map中每一个点改为0或者是1,然后根据题目要求的格式输出。比较简单,就直接贴代码了。
#include<stdio.h>
// 引入标准输入输出头文件
int main()
{
int n, a, b, i, arr[50000], k = 0, j = 0;
// 定义多个整型变量,n 可能代表某个规模,a 和 b 用于接收输入,i 用于循环控制,arr 是一个数组,k 和 j 也用于循环控制
scanf("%d", &n);
// 从用户输入读取一个整数存入 n
while (k<n*n)
// 外层循环,循环条件是 k 小于 n*n,可能是为了处理 n*n 个元素
{
scanf("%d%d", &a, &b);
// 接收两个整数 a 和 b
for (j = 0; j < a; j++)
// 内层第一个循环,根据输入的 a 值,将数组的一部分元素赋值为 0
{
arr[k] = 0;
k++;
// 给数组元素赋值并更新 k 的值
}
for (j = 0; j < b; j++)
// 内层第二个循环,根据输入的 b 值,将数组的另一部分元素赋值为 1
{
arr[k] = 1;
k++;
// 给数组元素赋值并更新 k 的值
}
}
i = 0;
while (i<n*n)
// 另一个循环,用于输出处理后的数组
{
printf("%d", arr[i]);
// 输出数组中的元素
if ((i + 1) % n == 0)
printf("\n");
// 如果当前元素的下标加 1 是 n 的倍数,说明一行输出完毕,换行
i++;
// 更新 i 的值
}
return 0;
}
😊😊😊这道题的思路如下:
1. 首先从用户输入获取一个整数 n ,这个 n 可能代表着某种规模或维度。
2. 接着进入一个循环,循环条件是变量 k 小于 n*n 。这个循环的目的是处理一定数量的数据,这里的数量是 n*n ,可能代表一个二维结构的元素总数。
3. 在这个循环中,每次从用户输入读取两个整数 a 和 b 。
- 第一个内层循环根据 a 的值,向数组 arr 中连续存入 a 个 0 ,同时更新变量 k 以指向下一个要存入数据的位置。
- 第二个内层循环根据 b 的值,向数组 arr 中连续存入 b 个 1 ,同样更新变量 k 。
4. 当上述循环结束后,数组 arr 中已经按照输入的 a 和 b 的值填充了相应数量的 0 和 1 。
5. 最后一个循环用于输出数组 arr 的内容。循环条件是变量 i 小于 n*n 。每次输出一个数组元素,如果当前元素的下标加 1 是 n 的倍数,说明一行输出完毕,进行换行操作。
总体来说,这段代码的作用是根据用户输入的一系列 a 和 b 的值,将 0 和 1 填充到数组中,然后以特定的格式输出这个数组。