第一种类
#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; }
写出和总结出这些真的很不容易,希望大家以后多多支持我这个编程小白哦,希望在以后的创作中再给大家带来惊喜!