第一种类
#include<stdio.h
int main()
{
int n, k;
int i;
scanf("%d", &n);
//i是代表行数
for (i = 1; i <= n; i++)
{
//k代表空格数,因为刚开始的数在居中位置,所以输出的空格应该是输入的数n-行数i
for (k = 1; k <=n-i; k++)
{
printf(" ");
}
//j代表输出相同数的个数,很显然j是以2i-1往下递增的,并且每打一行,j++,直到j大于2*i-1,跳出循环
for (int j=0;j<2*i-1;j++)
{
//最后输出的结果为(i-1)%10是因为最大的数是9,当输入的n大于9时,取n对10的余数
printf("%d", (i-1)%10);
}
printf("\n");
}
return 0;
}
第二种类
#include<stdio.h>
int main()
{
int i, a, b, c;
scanf("%d", &a);
//b代表输出的行数;
for (b = 1; b <= a; b++)
{
//i代表每行输出的空格数
for (i = 1; i <= a - b; i++)printf(" ");
//c代表每行输出的个数,(b-1)代表首项的数,(((b - 1) % 10) + c - 1) % 10);代表的是输出最大的数,且在最大的数两旁依次递减
for (c = 1; c <= 2 * b - 1; c++) printf("%d", (((b - 1) % 10) + c -
1) % 10);
printf("\n");
}
return 0;
}
第三种类
需特别注意当输入的值大于26时,输出需返回值为A,而且输出是字符串类型的
int main()
{
int n;
int b, c, i, d;
scanf("%d", &n);
d = 'A';
for (b = 1; b <= n; b++)
{
for (i = 1; i <= n - b; i++)
{
printf(" ");
}
输出的值,因为是字符串类型的,所以要%c,且d是代表字符串'A',所以要把d放外面(( b - 1)%26))则是因为当输入的n大于26时,输出要重新为A
for (c = 0; c < 2 * b - 1; c++)
{
printf("%c", d+(( b - 1)%26));
}
printf("\n");
}
return 0;
}
第四种类
#include<stdio.h>
int main()
{
int n ;
int b, c, i, d, e;
scanf("%d", &n);
d = 'A';
for (b = 1; b <=n; b++)
{
for (i = 1; i <= n - b; i++)
{
printf(" ");
}
for (c = 0; c < b; c++)
{
printf("%c", d + c);
}
if (b > 1)
{
//当行数大于一时,字符A加e的值
for (e = b - 2; e >= 0; e--)
printf("%c", d + e);
}
printf("\n");
}
return 0;
}
写出和总结出这些真的很不容易,希望大家以后多多支持我这个编程小白哦,希望在以后的创作中再给大家带来惊喜!