题目:
多组输入一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
=========================================================================
思路:
总体思路:
实际打印的是 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; }
实现效果: