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 < n-i ; j++){printf(" ");}//打印 *for (j = 0; j <= i ; j++){printf("* ");}printf("\n");}for (i = 0; i < n + 1; i++){//再打印下面的三角int j=0;//打印空格for (j = 0; j < i; j++){printf(" ");}//打印 *for (j = 0; j < n+1-i; j++){printf("* ");}printf("\n");}}return 0;
}
2. K形图案
解题思路:
这里我们先打印上半部分,再打印下半部分。
解题代码:
#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 < n+1-i ; j++){printf("* ");}//打印空格for (j = 0; j < i; j++){printf(" ");}printf("\n");}//下半部分for (i = 0; i < n + 1; i++){//打印 *int j = 0;for (j = 0; j <=i ; j++){printf("* ");}//打印空格for (j = 0; j < n+1-i; j++){printf(" ");}printf("\n");}}return 0;
}
3.箭形图案
解题思路:
这里也是先打印上半部分,再打印下半部分,这里打印空格的时候我们一组设置两个空格。
解题代码:
#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 < n-i; j++){printf(" ");}//打印*for (j = 0; j<=i; j++){printf("*");}printf("\n");}//下半部分for (i = 0; i < n + 1; i++){int j = 0;//打印空格for (j = 0; j <i ; j++){printf(" ");}//打印*for (j = 0; j < n + 1 - i; j++){printf("*");}printf("\n");}}return 0;
}
4.反斜线形图案
解题思路:
我们先打印空格,让空格递增,再打印*。
解题代码:
#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++){printf(" ");}//打印*printf("*\n");}}return 0;
}
方法2:
这里我们看到,需要打印*的位置的横纵坐标是相等的,问题就好解决了。
解题代码:
#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 < n; j++){if (i == j)printf("*");elseprintf(" ");}printf("\n");}}return 0;
}
5.正斜线形图案
解题思路:
我们先打印空格,让空格递减,再打印*。
解题代码:
#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 < n-1-i; j++){printf(" ");}//打印*printf("*\n");}}return 0;
}
方法2:
这里我们看到,需要打印*的位置的横纵坐标加起来是等于n的,问题就好解决了。
解题代码:
#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 < n; j++){if (i + j == n)printf("*");elseprintf(" ");}printf("\n");}}return 0;
}
6.X形图案
解题思路:
这里我们参考前两题的横纵坐标判断,把相对应的位置打印成*,其他位置打印成空格即可。
解题代码:
#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 < n; j++){if (i == j|| i + j == n - 1)printf("*");elseprintf(" ");}printf("\n");}}return 0;
}