C语言语言基础练习——图案输出(双重循环,经典)

如题所述

# include <stdio.h>
# include <stdlib.h>
int main(void)
{
 int a,w = 0, b = 0;
 printf("请输入一个数:");
 scanf_s("%d", &a);  
 for (int i = 0; i < a; i++)       //控制循环次数
 {
  for (int q = a; q > i; q--)   //每排前面的空格数量
  {
   printf(" ");
  }
  printf("*");                  //输出一个星星
  for (int x = 0; x < i + b; x++)   //星星输出完后再输出一个空格, 第二次就是三个, 五个,七个这样输出下去,要不然会不对称
  {
   printf(" ");
  }
  if (w != 0)                     //这一行的意思就是让第一排只输出一个星星,第二排开始都输出两个星星
  {
   printf("*");
      b++;                        //第一次输出只有一个星星,星星之间的空格要 1 3 5 7 9这样奇数递增,也就是从第二排开始才能递增,第二排i就变成1了,所以b要从第三行开始增加
  }
     printf("\n");
  w++;
 }
 for (int i = a; i >= 0; i--)         //下半部分相反输出就好了
 {
  for (int q = i; q < a ; q++)
  {
   printf(" ");
  }
  printf("*");
  for (int v = 0; v < i + b; v++)
  {
   printf(" ");
  }
  if (w > 0)
  {
   printf("*");
   b--;
  }
  printf("\n");
  w--;
 }
 system("pause");
 return 0;
}
//你还是自己试下数 ,动动脑筋,毕竟是为了自己好,我给你这个程序主要是要你自己看懂 
//才行,要是你直接拿去交作业什么的,那我是在害你!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-18
很简单~~自己好好琢磨吧~~对循环嵌套很有训练价值~~加油~别偷懒~都这么过来的~~靠自己!

C语言语言基础练习——图案输出(双重循环,经典)
} printf("*"); \/\/输出一个星星 for (int x = 0; x < i + b; x++) \/\/星星输出完后再输出一个空格, 第二次就是三个, 五个,七个这样输出下去,要不然会不对称 { printf(" "); } if (w != 0) \/\/这一行的意思就是让第一排只输出一个星星,第二排开...

用C语言双重循环输出图形
int max=7;int step = 2;int i,j;i=1;while(i>0){ if (i>=max) step = -2;for(j=0;j

C语言:利用双重循环输出以下图案: * *** *** *** *** *** *
int main(){ int i,j,k;for(i = 1; i <= 4; ++i){ for(j = 1; j <= 4 - i; ++j)printf(" ");for(k = 1; k <= 2 * i - 1; ++k)printf("*");printf("\\n");} for(i = 3; i >= 1; --i){ for(k = 3 - i; k >= 0; --k)printf(" ");for...

用C语言的双重for循环语句怎么输出如下图形 * * * * * * * * * *...
void main(){ int i,j,k;for(i=0;i<=3;i++) \/\/输出上面四行*号 { for(j=0;j<=2-i;j++)printf(" "); \/\/输出*号前面的空格 for(k=0;k<=2*i;k++)printf("*"); \/\/输出*号 printf("\\n");} for(i=0;i<=2;i++) \/\/输出下面三行*号 { for(j=0;j...

用c语言编写18, 用双重循环打印如下图形. * *** *** *** *** ***...
int main(){ int i,j;for(i=0;i<=n;i++){ for(j=1;j<=n-i;j++)printf(" ");for(j=1;j<=2*i+1;j++)printf("*");printf("\\n");} for(i=n-1;i>=0;i--){ for(j=1;j<=n-i;j++)printf(" ");for(j=1;j<=2*i+1;j++)printf("*");printf("\\n");}...

C语言问题: 图中为什么总是输出了2次printf值呢? 如果要他每次循环只...
你这个其实是因为你输入“1回车”scanf读取“1”的时候执行了一次循环,再读取“\\n”(即回车)的时候又会执行一次循环,你可以试试只输入回车来看看是不是有输出来验证这个问题。解决这个问题的方法就是在scanf后面加一个getchar()来吸收你输入的回车。

c语言 循环
双重循环,嵌套结构。我给你画了一个图,程序按照1--2--3--4--5---的顺序执行,黑色的细线表示一个执行路径;红色的勾表示条件满足;红色的叉表示条件不满足;可能画的有些草,见谅。。如图所示:

求大神,C语言编写程序,使用二重循环输出下列图形,换行时延时1m。 12...
include <stdio.h>#include <windows.h>void main(){int i,j,k;for (i=0;i<4;i++){for(j=0;j<i+1;j++)printf(" ");for(k=1;k<=7-2*i;k++)printf("%d",k);Sleep(1000);printf("\\n");}}

打印下列图案(用C语言编写程序 12345 1234 123 12 1
呵呵,这个问题跟打印“*”号的问题差不多,双重for()循环就可以了 代码如下:include "stdio.h"main(){ int i,j;for(i=5;i>=1;i++) \/\/这里i的值取5,4,3,2,1 { for(j=1;j<=i;j++) \/\/这里j的值取1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 printf(...

如何用C语言输出以下图案 ___* __*** _*** *** _*** __*** ___*...
用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误。

相似回答