c语言字母金字塔怎么输出如下图

我的代码#include"stdio.h"voidmain(){charzm[36]={'A','B','C','D','E','F','G','H','I','J','... 我 的代码
#include "stdio.h"
void main()
{
char zm[36]={'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'};
int i,j,k;
for(i=0;i<10;i++)
{
for(k=10-i;k>=0;k--)
printf(" ");
for(j=0;j<i+1;j++)
{
printf("%c",zm[j]);
if(j<i)
printf(" ");
}
printf("\n");
}
}
输出为

总是不对
展开
 我来答
pen245760036
2013-08-14 · TA获得超过158个赞
知道答主
回答量:81
采纳率:0%
帮助的人:78.9万
展开全部

先用楼主的思路走一遍

#include "stdio.h"

void main()

{

 char zm[36]={'A','B','C','D','E','F','G','H','I','J','K','L','M',

              'N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'};

 int i,j=0,k,z;                  //记住赋初始值

 for(i=0;i<8;i++)                 //不是10

 {          

  for(k=6-i;k>=0;k--)           //改为6

        printf(" ");

  for(z=0;z<i+1;z++)     //用Z来循环 ,j自主加就行,之前方法会自动归零

  {

   printf("%c",zm[j]);

   if(z<i)

   printf(" ");

   j++;                               //自主累加就行

  }

  printf("\n");

 }


}

这个程序还有很多改进方式 

1,数组可以去掉,直接用char输出,j初始值等于 65,判断j>90时j=48,

#include "stdio.h"

void main()

{

 char j=65;

 int i,k,z;

 for(i=0;i<8;i++)

 {

  for(k=6-i;k>=0;k--)

        printf(" ");

  for(z=0;z<i+1;z++)

  {

   printf("%c",j);

   if(z<i)

   printf(" ");


    if(j<90)

   j++;

   else

   j=48;

  }

  printf("\n");

 }

}

2,用j作主循环会好点,根据j判断i 会减少一层循环

#include "stdio.h"

void main()

{

 char j=1;

 int i=1,k=1,s=1;

while(i<=8)

{

if(k<9-i)

 {

 printf(" ");

  k++;

 }

 else

  {

   if(j<=s)

   { if(j<=26)

      printf("%c ",j+64);

      else printf("%c ",j+21);

     j++;

   }

   else

   {printf("\n");

    i=i+1;

    s=s+i;

    k=1;

    }

  }


}


}

tattackor
推荐于2017-09-03 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:891万
展开全部
  1. 原理很简单,就是循环语句嵌套。最外侧的循环是控制行数。在循环内有4个小循环,分别输出空格,字符增,字符减,空格。

  2. 例程:

    #include<stdio.h>
    void main()
    {
        int i,j;
        char c;
        scanf("%c",&c);
        for(i=0;i<5;i++)
        {
            for(j=4-i;j>0;j--)
                printf(" ");
            for(j=0;j<=i;j++)
                printf("%c",c+j);
            for(j=i;j>0;j--)
                printf("%c",c+j-1);
            for(j=4-i;j>0;j--)
                printf(" ");
            printf("\n");
        }
    }
  3. 输出:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龍__鳳
2013-08-14 · TA获得超过2346个赞
知道小有建树答主
回答量:948
采纳率:0%
帮助的人:1406万
展开全部
#include "stdio.h"
void main()
{
char zm[36]={'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'};
int i,j,k,t=0;//定义一个变量t,初始化为0
for(i=0;t<36;i++)//循环结束的条件是输出了所有的字符
{
for(k=10-i;k>=0;k--)
printf(" ");
for(j=0;j<i+1;j++)
{
printf("%c",zm[t++]);//输出zm[t++]
if(j<i)
printf(" ");
if(t>=36)//结束输出
break;
}
printf("\n");
}
}

 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
推荐于2017-09-28 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3484万
展开全部
/*
           A
          B C
         D E F
        G H I J
       K L M N O
      P Q R S T U
     V W X Y Z 0 1
    2 3 4 5 6 7 8 9
Press any key to continue
*/
#include <stdio.h>

void main() {
char zm[]={'A','B','C','D','E','F','G','H','I',
'J','K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z','0','1','2','3','4',
'5','6','7','8','9'
};
int i,j,k,cnt = 0;
for(i = 0;i < 8;i++) {
for(k = 10 - i;k >= 0;k--) printf(" ");
for(j = 0;j < i + 1;j++)
printf("%c ",zm[cnt++]);
printf("\n");
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lab364564324
2013-08-14 · TA获得超过850个赞
知道小有建树答主
回答量:606
采纳率:50%
帮助的人:380万
展开全部
J不用循环了啊,一直就J++就可以了啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式