做题思路:
这里表示输入的第一个数字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或1int 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;
}