牛客BC68,X型图案
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。
示例1
输入:
5
复制输出:
* ** * * * * * *
复制
示例2
输入:
6
复制输出:
* ** * ** ** * * * *
代码
#include <stdio.h>int main()
{int n = 0;while (~scanf("%d", &n)){//n*n的数组,对角线初始化为*,其余初始化为‘ ’,最后打印这个二维数组char arr[20][20];int i = 0, j = 0;for (i = 0; i < n; i++){for (j = 0; j < n; j++){//主对角线if (i == j){arr[i][j] = '*';}//反对角线else if ((i + j) == (n - 1)){arr[i][j] = '*';}else{arr[i][j] = ' ';}printf("%c", arr[i][j]);}printf("\n");}}return 0;
}
// 这么牛逼的代码是谁写的
理解
while (~scanf("%d", &n))
在此处使用~
目的是循环输入数字,当无法识别到数字时
返回值为EOF即-1
~此操作符为取反操作符
对一个数的二进制按位取反。
对整个数,包括符号位都可以按位取反。
-1即取反为0
即为假停止循环
后对对角线进行打印