多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
针对每行输入,输出用“*”组成的X形图案。
5
* * * * * * * * *
6
* * * * ** ** * * * *
#include <cstdio>
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=0;i<n;++i)//看成二维数组
{
for(int j=0;j<n;++j)
{
if(i==j||j==n-i-1)//对角线与逆对角线
printf("*");
else
printf(" ");//其余
}
printf("\n");
}
}
return 0;
} import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
boolean flag = true;
String str = String.join("",Collections.nCopies(n," "));
for (int i = 0; i < n; i++) {
char[] temp = str.toCharArray();
temp[i] = '*';
temp[n-i-1] = '*';
System.out.println(new String(temp));
}
}
}
} #include <stdio.h>
int main()
{
int n = 0;
while ((scanf("%d", &n)) != EOF)
{
int arr[] = { 0 };
int i = 0;
for (i = 0; i < n; i++)
{
arr[i] = '*';
}
int left = 0;
int right = n - 1;
while (right != -1)
{
for (i = 0; i < n; i++)
{
if (i != left && i != right)
{
printf(" ");
}
else
{
printf("%c", arr[i]);
}
}
printf("\n");
left++;
right--;
}
}
return 0;
} #include <stdio.h>
int main() {
int n;
while (scanf("%d", &n) != EOF)
{
int num;
if (n % 2 == 0)
{
num = (n - 2) / 2;
for (int i = 1; i <= num; i++)
{
for (int j = 1; j <= i - 1; j++) //输出首部i-1个空格
{
printf(" ");
}
printf("*");
for (int k = 1; k <=n - 2-2*(i-1);k++) //输出中间n-2个空格
{
printf(" ");
}
printf("*");
for (int j = 1; j <= i - 1; j++) //输出尾部i-1个空格
{
printf(" ");
}
printf("\n");
}
for(int count =1;count<=2;count++)
{
for(int l=1;l<=num;l++)
{
printf(" ");
}
printf("**");
for(int l=1;l<=num;l++)
{
printf(" ");
}
printf("\n");
}
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num - i; j++) //第i行首部输出num-i个空格
{
printf(" ");
}
printf("*");
for (int k = 1; k <= n-2-2*(num-i);k++) //输出中间n-2-2*(num-i)个空格
{
printf(" ");
}
printf("*");
for (int j = 1; j <= num - i; j++) //第i行尾部输出num-i个空格
{
printf(" ");
}
printf("\n");
}
}
else
{
num = (n - 1) / 2;
for (int i = 1; i <= num; i++)
{
for (int j = 1; j <= i - 1; j++)
{ //输出首部i-1个空格
printf(" ");
}
printf("*");
for (int k = 1; k <= n - 2-2*(i-1);k++)
{ //输出中间n-2*i个空格
printf(" ");
}
printf("*");
for (int j = 1; j <= i - 1; j++)
{ //输出尾部i-1个空格
printf(" ");
}
printf("\n");
}
for(int l=1;l<=num;l++)
{
printf(" ");
}
printf("*");
for(int l=1;l<=num;l++)
{
printf(" ");
}
printf("\n");
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num - i; j++)
{ //第i行输出首部num-i个空格
printf(" ");
}
printf("*");
for (int k = 1; k <= n-2-2*(num-i);k++)
{ //输出中间2*i个空格
printf(" ");
}
printf("*");
for (int j = 1; j <= num - i; j++)
{ //第i行输出尾部num-i个空格
printf(" ");
}
printf("\n");
}
}
}
} #include<stdio.h>
int main()
{
int i, j, k, n;
while (scanf("%d", &n) != EOF)
{
for (i = 0; i < n; i++)
{
k = (n - i) - 1; //(n-i):与i相反
for (j = 0; j < n; j++)
{
if (j == i)
printf("*");
else if (j == k)
printf("*");
else
printf(" ");
}
printf("\n");
}
}
return 0;
} import java.util.Scanner;
public class printX {
public static void main(String[] args) {
// 创建一个 Scanner 对象,用于读取用户输入
Scanner in = new Scanner(System.in);
// 使用 hasNextInt() 来判断是否有整数输入,多组输入
while (in.hasNextInt()) {
// 读取输入的行数 row
int row = in.nextInt();
// 外层循环控制行数 i,从 0 到 row-1
for (int i = 0; i < row; i++) {
// 内层循环控制列数 j,从 0 到 row-1
for (int j = 0; j < row; j++) {
// 如果当前行和列相等,则打印反斜线部分 "*"
if (i == j || i + j == row - 1) {
System.out.print("*");
} else {
// 否则打印空格
System.out.print(" ");
}
}
// 每打印完一行需要换行
System.out.println();
}
}
}
} /*思路 可以借鉴二维数组的方式来打印 星星和空格
看成i行 j列
由题目输出示例可以看出
当i==j的时候 打印一个斜列
当i+j==n-1的时候 再打印一个斜列
*/
# include <stdio.h>
int main ()
{
int n = 0;
while(scanf("%d",&n)!=EOF)
{
int i = 0;
//控制行
for(i = 0; i < n; i++)
{
int j = 0;
//控制列
//for(j = 0; j < i; j++) error
//这里 j<i 是错误的 因为这里要根据n的值来进行判断 而不是根据i
for(j = 0; j < n; j++)
{
//使用if判断 条件如下
//当i==j的时候 打印一个斜列
//当i+j==n-1的时候 再打印一个斜列
if (i==j||i+j==n-1)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
return 0;
} #define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 0;
int i = 0;
int j = 0;
while (scanf("%d", &n) != EOF)
{
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
//正反对角线为*,其余为空格
if (i == j || i + j == n - 1)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
return 0;
}