多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
针对每行输入,输出用“*”组成的X形图案。
5
* * * * * * * * *
6
* * * * ** ** * * * *
#include <stdio.h> int main() { int a = 0; while (scanf("%d", &a) != EOF) { if (a % 2 == 0) //偶数 X { int i = 0; for ( i = 0; i < a / 2; i++) //上倒空梯形 { int j = i; for ( j = i; j > 0; j--) { printf(" "); } printf("*"); int k = 0; for ( k = 0; k < a - 2 *( i + 1); k++) { printf(" "); } printf("*"); printf("\n"); } for ( i = 0; i < a / 2; i++) //下空梯形 { int k = 0; for ( k = a / 2 - i - 1; k > 0; k--) { printf(" "); } printf("*"); int j = 2 * i; for ( j = 2 * i; j > 0; j--) { printf(" "); } printf("*"); printf("\n"); } // printf("\n"); } else //奇数 X { int m = 0; for ( m = 0; m < (a + 1) / 2; m++) //上倒三角 { int n = 0; for (n = 0; n < m; n++) { printf(" "); } printf("*"); if (m < (a + 1) / 2 - 1) { int p = 0; for (int p = a - 2 - m * 2 ; p > 0; p--) { printf(" "); } printf("*"); } printf("\n"); } for ( m = 0; m < a / 2; m++) //下梯形 { int n = 0; for (n = 0; n < a / 2 - 1 - m; n++) { printf(" "); } printf("*"); int p = 0; for ( p = 0; p < m * 2 + 1; p++) { printf(" "); } printf("*"); printf("\n"); } // printf("\n"); } } return 0; }
/*思路 可以借鉴二维数组的方式来打印 星星和空格 看成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; }
public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { // 注意 while 处理多个 case int a = in.nextInt(); for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { if (i == j || i+j == a-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; }
int main() { int a = 0; printf("请输入你要打印x的值:"); scanf("%d",&a); for (int i = 0; i < a; i++)//行 { //列 for (int j = 0; j < a; j++) { if (i + j == a - 1 || i == j) { printf("*"); } else { printf(" "); } } printf("\n"); } return 0; }