C语言实现N×N特殊规则正方形绘制的技术求助
C语言实现三个N×N正方形的解决方案
没问题,我来帮你搞定这个需求!其实核心就是用嵌套循环和简单的条件判断来控制每个位置输出的字符,下面直接上代码,再给你拆解细节:
完整代码实现
#include <stdio.h> int main() { int N, K; // 输入N和K的值 printf("请输入N和K的值(用空格分隔):"); scanf("%d %d", &N, &K); // 第一个正方形:全#填充 printf("第一个正方形:\n"); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { printf("#"); } printf("\n"); } printf("\n"); // 正方形之间换行分隔 // 第二个正方形:每第K行替换为#,其余为. printf("第二个正方形:\n"); for (int i = 1; i <= N; i++) { // 用1开始计数方便判断第K行 if (i % K == 0) { // 输出一行# for (int j = 0; j < N; j++) { printf("#"); } } else { // 输出一行. for (int j = 0; j < N; j++) { printf("."); } } printf("\n"); } printf("\n"); // 第三个正方形:每第K列替换为#,其余为. printf("第三个正方形:\n"); for (int i = 0; i < N; i++) { for (int j = 1; j <= N; j++) { // 1开始计数方便判断第K列 if (j % K == 0) { printf("#"); } else { printf("."); } } printf("\n"); } return 0; }
代码细节解释
- 第一个正方形:最直接的双层循环,外层控制行数,内层控制每行的字符,直接输出N个
#即可。 - 第二个正方形:外层循环从1开始计数(这样判断第K行更直观,比如K=2时,第2、4行都会触发条件),如果当前行数是K的倍数,就输出一行
#,否则输出一行.。 - 第三个正方形:外层循环控制行数,内层循环从1开始计数列数,每遇到K的倍数的列,就输出
#,其余列输出.,每行结束后换行。 - 每个正方形输出完成后用
printf("\n");来分隔,符合题目要求的换行。
你可以直接编译运行这段代码,输入正整数N和K就能看到效果啦~比如输入N=5,K=2,输出会是:
第一个正方形:
第二个正方形:
..........
.....
第三个正方形:
.#.#.
.#.#.
.#.#.
.#.#.
.#.#.
内容的提问来源于stack exchange,提问作者Maz Diaz




