多组输入,一个整数(2~20),表示翻转金字塔边的长度,即“*”的数量,也表示输出行数。
针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格。
5
* * * * * * * * * * * * * * *
6
* * * * * * * * * * * * * * * * * * * * *
#include<stdio.h> int main() { int n=0; int i=0; int j=0; int k=0; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { for(k=0;k<i;k++) { printf(" "); } for(j=i;j<n;j++) { printf("* "); } printf("\n"); } } return 0; }
#include <stdio.h> int main() { int a; while (scanf("%d", &a) != EOF) { for (int i = 0; i < a; i++) { for (int j = 0; j < i; j++) //打印一个*和一个空格 printf(" "); //a-1-i会随着i变化,当输入5时,第一行打印5-i个“* ” for (int j = 0; j < a - i; j++) //打印一个空格 printf("* "); printf("\n"); //换行 } } return 0; }
/*思路 : 首先要分两个步骤 控制每一行的打印 而每一行又由 空格+* 组成 先打印每一行的的空格 再打印每一行的 星号 把两个分开来 //(j = 0; j<i;j++) //i为0的时候j从0开始 这里一次都不打印 i为1的时候j从0开始 这里打印一次 //i为2的时候j从0开始 这里打印两次 i为3的时候j从0开始 这里打印3次 //...... (j = 0; j<n-i; j++) //第一行 i是0 5减0 等于0 第二行 i等于1 5减1等于4 打印四个*加空格 //第三行 i是2 5减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; //先打印每一行的空格 因为每一行都是由空格和星号组成的 //i为0的时候j从0开始 这里一次都不打印 i为1的时候j从0开始 这里打印一次 //i为2的时候j从0开始 这里打印两次 i为3的时候j从0开始 这里打印3次 //...... for(j = 0; j<i;j++) { printf(" "); } //再打印每一行的星星 每一行都是有空格和星星组成 //再打印*+空格 //第一行 i是0 5减0 等于0 第二行 i等于1 5减1等于4 打印四个*加空格 //第三行 i是2 5减2 等于三 打印三个*加空格 //... for(j = 0; j<n-i; j++) { 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 < i; j++) { putchar(' '); } //输出后面的‘*’ for (j = 0; j < n - i; j++) { putchar('*'); putchar(' '); } //换行输出下一行 putchar('\n'); } } return 0; }
#include <stdio.h> int main() { int n; while (scanf("%d", &n) != EOF) { for (int i = 1; i <= n; i++) //i表示行数,逐行打印 { for (int j = 1; j <= i-1; j++) //打印第i行的i-1个空格 { printf(" "); } for (int k = 1; k <= n+1-i; k++) //打印第i行的n+1-i个* { printf("* "); } printf("\n"); //打印完一行,输出换行符 } } }
#include<stdio.h> int main() { int n; while(~scanf("%d",&n)) { /*自己的错误演示*/ for(int j=1;j<(n+1);j++)//for(int j=0;j<=n;j++)就不行,j=0的话,上一组输出 与 下一组输出 间 会空一行 { for(int i=0;i<j-1;i++)//for(int i=1;i<=j;i++)第一行也会有一个空格。 printf(" "); for(int i=n-j+1;i>0;i--)//for(int i=n-j;i>0;i--)会少掉最上面一行。 printf("* "); printf("\n"); } } return 0; }