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

初学者,麻烦哪位大大指引下#include"stdio.h"intmain(void){inti,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i... 初学者,麻烦哪位大大指引下
#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;
}
展开
 我来答
dzmcobk
推荐于2017-09-25 · TA获得超过748个赞
知道小有建树答主
回答量:431
采纳率:76%
帮助的人:123万
展开全部
#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
廖宝马
2017-10-14
知道答主
回答量:12
采纳率:0%
帮助的人:5万
展开全部
#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;

}

最后输出:

   *
  ***
 *****
*******
 *****
  ***
   *
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老师去了baby
2014-08-13 · 超过19用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:47.6万
展开全部
一些基本的语句你应该懂的吧。for是循环语句,printf是输出显示语句。如果你想显示一个m*n大小的菱形,你就自己看看那个地方该输出*,那个地方该输出空格,然后循环打印就行了。慢慢来,入门了就感觉简单多了
追问
流程看了半天,脑子快成浆糊了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hjzqc0
2014-08-13 · TA获得超过114个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:84.7万
展开全部
在第二个for(i=0;i<=3;i++)
改为or(i=1;i<=3;i++)试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2014-08-13 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6435万
展开全部
两个循环,输出一个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
根据规律,确定变量的变化就可以得到图形了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式