c语言输出菱形星号程序详解

初学者,麻烦哪位大大指引下
#include"stdio.h"
int main(void)
{
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<=i;j++)
printf(" ");
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
return 0;
}

#include"stdio.h"

int main(void){

 int i,j,k;

 for(i=0;i<=3;i++) {   //   循环4次,打出前4行

  for(j=0;j<=2-i;j++)//设定每行*前面的空格,每行都是2-i个

   printf(" "); 

  for(k=0;k<=2*i;k++)//循环打出2*i-1个*号,

   printf("*"); 

  printf("\n"); //打完一行后换行

 }

 for(i=0;i<=2;i++) {//循环3次,打出后3行

  for(j=0;j<=i;j++)//设定每行*前面的空格,每行都是i个

   printf(" "); 

  for(k=0;k<=4-2*i;k++)//循环打出2*(2-i)个*号

   printf("*"); 

  printf("\n"); //打完一行后换行

 } 

 return 0;

追问

上循环的最后一个FOR 为什么这样写

追答

我弄错了,是打出2*i+1个星号,i是从第0号开始的,第一行i=0

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-14
#include <stdio.h>

int main() {
int total = 7;//每行空格 + 星号的总字符数
int x,j,k;//用做循环的变量
int xx,kg;//xx表示*号个数,kg表示空格个数(单边,左边)
xx = 1;//开始的时候,第一行*号个数为1
for(x = 0  ;x < 7;x++){ //一共输出7行

kg = (total - xx) / 2;//空格的个数等于总数 - *号个数,除以2就是单边的个数
for(j=0;j<kg;j++){
printf("%s"," ");//输出计算好的空格
}
 
for(k = 0;k<xx;k++){
printf("%s","*");//输出计算好的*号
}
printf("\n");
 
if(x < 3){
xx  = xx + 2;//前面那3行的*号都是每次多2个
}else{
xx = xx - 2 ;//后面的星号就每次减少2个
}
  
}
return 0;

}

最后输出:

   *
  ***
 *****
*******
 *****
  ***
   *

第2个回答  2014-08-13
一些基本的语句你应该懂的吧。for是循环语句,printf是输出显示语句。如果你想显示一个m*n大小的菱形,你就自己看看那个地方该输出*,那个地方该输出空格,然后循环打印就行了。慢慢来,入门了就感觉简单多了追问

流程看了半天,脑子快成浆糊了

第3个回答  2014-08-13
在第二个for(i=0;i<=3;i++)
改为or(i=1;i<=3;i++)试试
第4个回答  2014-08-13
两个循环,输出一个5*5的菱形,你还要解释什么内容,请有针对性的问追问

算法

追答

你这个程序的算法是先输出一个上三角形,再输出一个下三角形,各用了一个循环

输出上角形:
for(i=0;i<=3;i++) //一、确定循环次数,输出几行
{
for(j=0;j<=2-i;j++) printf(" "); //二、确定每次空格的变化
for(k=0;k<=2*i;k++) printf("*"); //确定每行*的个数
printf("\n");
}
分析输出图可知:每行*的变化是1 3 5 7 前导空格的变化是3 2 1 0
根据规律,确定变量的变化就可以得到图形了

追问

第一个星号后面的换行是怎样输出的,按流程不是应该执行k++了吗?最主要还是流程看不懂,FOR的连续嵌套的流程是怎样的

追答

你按照汉字分析,形成自己的思路,先试着去编写这个三角形,体会一下各语句的实际效果,不要总是读别人的(自己不动手),不能达到学会编程的目的。
看你问换行的输出,可能是你对for循环语句不理解,
for(k=0;k<=2*i;k++)
printf("*");只有这句是循环体内容,即:循环语句只有句

printf("\n"); 这句是循环外的语句,每转一次外循环都会输出一次