思路:
总体思路:
实际打印的是 n*n 的图案,
只不过是当 行等于列(正斜线) 、行+列=行数-1(反斜线)打印 * 号
创建变量:
int n = 0; -- 输出的行数、正斜线、反斜线 的长度
使用 while循环 进行 多组输入
定义行 和 列 :
int i = 0; -- 行
int j = 0; -- 列
使用 for循环 循环打印行:i < n
再 内嵌for循环 循环打印列:j < n
内嵌for循环 中 如果
行等于列(正斜线)-- i == j
或
行+列 = 行数-1(反斜线)-- i+j == n-1
则打印 * 号
否则打印 空格
打印完一列就进行换行
比较简单,直接一步到位:
(1).
创建变量:
int n = 0; -- 输出的行数、正斜线、反斜线 的长度
(2).
使用 while循环 进行 多组输入
(3).
定义行 和 列 :
int i = 0; -- 行
int j = 0; -- 列
(4).
使用 for循环 循环打印行:i < n
再 内嵌for循环 循环打印列:j < n
(5).
内嵌for循环 中 如果
行等于列(正斜线)-- i == j
或
行+列 = 行数-1(反斜线)-- i+j == n-1
则打印 * 号
否则打印 空格
(6).
打印完一列就进行换行
实现代码:
#include <stdio.h> int main() { //创建变量: int n = 0; //输出的行数、正斜线、反斜线 的长度 //多组输入,打印 x图案: while (scanf("%d", &n) == 1) //使用 while循环 进行多组输入 { //定义 行和列: int i = 0; //行 int j = 0; //列 //使用 for循环 循环打印行: for (i = 0; i < n; i++) { //内嵌for循环 循环打印列: for (j = 0; j < n; j++) { //当 行等于列 或 行+列=行数-1 时打印 *号: if (i == j || (i+j == n-1)) //i == j:x图像的正斜线 //i+j == n-1:x图像的反斜线 { printf("*"); //打印 *号 } else { printf(" "); //打印空格 } } //打印完一列后换行: printf("\n"); } } return 0; }
实现图片:
最终代码和实现效果
最终代码:
#include <stdio.h> int main() { //创建变量: int n = 0; //输出的行数、正斜线、反斜线 的长度 //多组输入,打印 x图案: while (scanf("%d", &n) == 1) //使用 while循环 进行多组输入 { //定义 行和列: int i = 0; //行 int j = 0; //列 //使用 for循环 循环打印行: for (i = 0; i < n; i++) { //内嵌for循环 循环打印列: for (j = 0; j < n; j++) { //当 行等于列 或 行+列=行数-1 时打印 *号: if (i == j || (i+j == n-1)) //i == j:x图像的正斜线 //i+j == n-1:x图像的反斜线 { printf("*"); //打印 *号 } else { printf(" "); //打印空格 } } //打印完一列后换行: printf("\n"); } } return 0; }
实现效果: