C语言空心字符菱形

输入:

菱型起始字母和菱形的高度。

输出:

参看测试用例,打印空心的由字符组成的菱形。

输入
C 4
输出

C
D D
E E
F F
E E
D D
C

#include<stdio.h>

main()

{

 int n=0,i=0,j=0;char c='\0';

 scanf("%c%d",&c,&n);

 for(i=1;i<n+1;i++)

 {

  for(j=0;j<n-i;j++) printf(" ");

  printf("%c",c+i-1);

  for(j=1;i-1>0>0&&j<=2*i-3;j++) printf(" ");

  if(i-1>0) printf("%c",c+i-1);

  printf("\n");

 }

 for(i=n-1;i>0;i--)

 {

  for(j=0;j<n-i;j++) printf(" ");

  printf("%c",c+i-1);

  for(j=1;i-1>0>0&&j<=2*i-3;j++) printf(" ");

  if(i-1>0) printf("%c",c+i-1);

  printf("\n");

 }

}

我是用的小写,给你看看结果:

正确的!! 

发现 爱脱臼之后 的答案好像不行啊。。。。 

二楼的答案是对的,和我相比多了一个库,也用了指针,感觉要麻烦一点点。。。(不要骂我啊) 

注释我发给你了,楼主注意看消息啊。。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-09

#include<stdio.h>
main()
{
 int n=0,i=0,j=0;char c='\0';
 scanf("%c%d",&c,&n);
 for(i=1;i<n+1;i++)
 {
  for(j=0;j<n-i;j++) printf(" ");
  printf("%c",c+i-1);
  for(j=1;i-1>0>0&&j<=2*i-3;j++) printf(" ");
  if(i-1>0) printf("%c",c+i-1);
  printf("\n");
 }
 for(i=n-1;i>0;i--)
 {
  for(j=0;j<n-i;j++) printf(" ");
  printf("%c",c+i-1);
  for(j=1;i-1>0>0&&j<=2*i-3;j++) printf(" ");
  if(i-1>0) printf("%c",c+i-1);
  printf("\n");
 }
}
我是用的小写,给你看看结果:
正确的!! 
发现 爱脱臼之后 的答案好像不行啊。。。。 
二楼的答案是对的,和我相比多了一个库,也用了指针,感觉要麻烦一点点。。。(不要骂我啊) 
注释我发给你了,楼主注意看消息啊。。。。

第2个回答  2009-11-29
#include<stdio.h>
main()
{
int i,n,j,k;
char zi;
scanf("%d\n",&n);
zi=getchar();
for(i=1;i<=n;i++)
{
for(k=1;k<=n-i;k++) printf(" ");printf("%c",(zi+i-1));
if(i!=1)
{
for(k=1;k<=2*(i-1)-1;k++) printf(" ");printf("%c",(zi+i-1));
}
printf("\n");
}
for(i=n-1;i>=1;i--)
{
for(k=1;k<=n-i;k++) printf(" ");printf("%c",zi+i-1);
if(i!=1)
{
for(k=1;k<=2*(i-1)-1;k++) printf(" ");printf("%c",(zi+i-1));
}
printf("\n");
}
}
已通过验证
第3个回答  2009-11-29
#include "stdio.h"
#include "stdlib.h"

int main (void)
{
char start;
int high,i,j;
printf ("请输入起始字母和菱形高度:\n");
scanf ("%c%d",&start,&high);
/*上半部分*/
for (i=0;i<high;i++)
{
for (j=1;j<high-i;j++)
printf (" ");
printf ("%c",start+i);
for (j=0;j<2*i-1;j++)
printf (" ");
if (i)
printf ("%c",start+i);
printf ("\n");
}
/*下半部分*/
for (i--;i>0;i--)
/*i==high-1*/
{
for (j=0;j<high-i;j++)
printf (" ");
printf ("%c",start+i-1);
for (j=0;j<2*i-3;j++)
printf (" ");
if (i-1)
printf ("%c",start+i-1);
printf ("\n");
}
system ("pause");
return 0;
}
第4个回答  2009-11-29
没时间写 给你个建议吧 用枚举 或者数组 来放字符