做题思路:
这里表示输入的第一个数字N为N*N的方阵,后面的数字表示连续输入几个1或者0,定义result表示实际输出的数字0或1(result输出0或1,可以用绝对值abs我们初始化result为0,我们将它-1后再取绝对值就可以了,result为1时,我们-1直接变为0),num表示输出的数,sum表示输出的第几个数字,当sum除N的余数为0时,换行。变量的用处我们想好后,接下来就是要怎么处理,这时我们可以参考do-while循环,先录入num输出result再判断是否需要换行。
Java代码:
import java.util.Scanner;
import static java.lang.Math.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
//result表示实际写上去的数字0或1
int result = 0;
//sum表示这一行第几个数字
int sum = 0;
do {
//num表示录入的数字
int num = sc.nextInt();
for (int i = 0; i < num; i++) {
System.out.print(result);
sum++;
if(sum % N == 0){
System.out.println();
}
}
result = abs(result - 1);
}while(sum != N*N);
}
}
C语言代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main() {
int N = 0;
int num = 0;
int result = 0;
int sum = 0;
scanf("%d", &N);
do
{
scanf("%d", &num);
for (int i = 0; i < num; i++) {
printf("%d", result);
sum++;
if (sum % N == 0) {
printf("\n");
}
}
result = abs(result - 1);
} while (sum != N * N);
return 0;
}