用C语言输出一个字母菱形

想的头都大了
这个怎么做啊...

给出一个字母,输出以下菱形,该菱形中间一行由此字母组成,其相邻的上下两行由它前面的字母组成,按此规律直到字母A
A
BBB
CCCCC
DDDDDDD
CCCCC
BBB
A
A、B等都是居中的啊

// 程序大体上都差不多,我这是在VC上运行过的,TC上应该也没问题,有错的话欢迎留言指教
#include <stdio.h>
int main()
{
char c;
int n=0,i,j,k;
printf("Please input a letter:");
scanf("%c",&c);
if(c<'A'||c>'Z')
{
printf("Error Input!\n");
return 0;
}
n=c-'A'+1;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)/* 输出每行的空格*/
printf(" ");
for(k=0;k<2*i+1;k++)
printf("%c",(char)('A'+i));
printf("\n");
}
for(i=n-2;i>=0;i--)
{
for(j=0;j<n-i-1;j++)/* 输出每行的空格*/
printf(" ");
for(k=0;k<2*i+1;k++)
printf("%c",(char)('A'+i));
printf("\n");
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-04
# include <stdio.h>

void main()
{
int i, j, k;
/* 变量i从0到3,表示所画菱形图的第一至第四行 */
for(i = 0; i <= 3; i++)
{
/* 当行数为i时,空格数是i的函数,为2-i个 */
for(j = 0; j <= 2-i; j++)
printf(" ");
/* 字母数也是i的函数,为2i+1个 */
for(k = 0; k <= 2*i; k++)
putchar('A'+i); /* 输出字母 */
printf("\n");
}
/* 变量i从0到2,表示所画菱形图的第五至第七行 */
for(i = 0; i <= 2; i++)
{
/* 当行数为i时,空格数是i的函数,此时为i个 */
for(j = 0; j <= i; j++)
printf(" ");
/* 字母数也是i的函数,此时为4-2*i个 */
for(k = 0; k <= 4-2*i; k++)
putchar('C'-i); /* 输出字母 */
printf("\n");
}
}
第2个回答  2008-11-04
#include "stdio.h"

void main()
{
int k=65,i;
printf("请输入A~Z中任意一个字符,必须大写:\n");
char c=getchar();
while(k<=(int)c)
{
for(i=0;i<(k-65)*2+1;i++)
printf("%c",k);
printf("\n");
k++;

}
k=k-2;
while(k>=65)
{
for(i=0;i<(k-65)*2+1;i++)
printf("%c",k);
printf("\n");
k--;

}

}

//刚才试过了,可以的,只是注意输入的必须是大写。
第3个回答  2008-11-04
#include "iostream.h"

void main()
{
char ch[4]={'A','B','C','D'};
int i,j,k;
for(i=0;i<7;i++)
{
if(i<4)
{
k=2*i+1;
for(j=0;j<k;j++)
cout<<ch[i];
cout<<endl;
}
if(i>=4)
{
k=(-2)*i+13;
for(j=0;j<k;j++)
cout<<ch[6-i];
cout<<endl;
}
}
}
第4个回答  2008-11-04
#include <stdio.h>
void main()
{
printf("Please input a letter:");
char c;
scanf("%c",&c);
for(int i='A';i<=c;i++)
{
for(int j='A';j<=i;j++)
printf("%c",i);
printf("\n");
}
for(int i=c-1;i>='A';i--)
{
for(int j=i;j>='A';j--)
printf("%c",i);
printf("\n");
}

}