C语言字母金字塔的问题,新手求修正

发布网友 发布时间:4小时前

我来回答

4个回答

热心网友 时间:4小时前

刚把楼上的代码试了一下,还是有点问题,相信你也发现了吧。
这是我写的一些代码,你看看可不可以。

#include <stdio.h>
int main()
{
char a,b,c;
printf ("请输入一个大写字母:");
a=getchar(); //输入
getchar(); //吸收掉输入大写字母后的回车符'\n'
while(a<'A'||a>'Z')
{
printf ("你输入的不是大写字母,请重新输入:\n");
a=getchar(); //重新输入
getchar(); //吸收掉输入大写字母后的回车符'\n'
}
for(c='A';c<=a;c++) //循环行(需要打几行,就几个循环)
{
for(b=a;b>c;b--) //循环打出前面的空格
printf(" ");
for(b='A';b<c;b++) //循环打出前半三角
printf("%c",b);
for(;b>='A';b--) //循环打出后半三角
printf("%c",b);
printf("\n");
}
return 0;
}

还有,就是因为我觉得你这个结构可读性较差,所以我才帮你写了上面的代码。这个结构较好用,以后遇到同样打图形的题目时可以用这个结构。
我估计你是刚学C语言不久的吧。 以后学习上再有什么问题,只要我能帮上的,我一定帮你。
你看看吧,可以的话就采纳我的答案咯。

热心网友 时间:4小时前

#include <stdio.h>

int main()
{int m,n;
char a,c;
do
{
printf ("请输入一个大写字母:");
scanf ("%c",&a);

if (a==' '||a=='\n') continue;
if (a<65||a>90)
{
printf ("你输入的不是大写字母,请重新输入:");
}
else
{for (m=65;m<=a;m++)
{
c='A';
for(n=m;n<a;n++)
{
printf (" ");
}
for(n=65;n<=m;n++,c++)
{
printf ("%c",c);

}
c-=2;
for (n=65;n<m;n++,c--) //后面多了@ 只要这边去掉=
{
printf("%c",c);
}printf ("\n");

}

}}

while (c!='0');
return 0;
}

热心网友 时间:4小时前

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{int m,n;
char a,c;
do
{
printf ("请输入一个大写字母:");
scanf ("%c",&a);

if (a==' '||a=='\n') continue;
if (a<65||a>90)
{
printf ("你输入的不是大写字母,请重新输入:\n");
}
else
{
for (m=65;m<=a;m++)
{
c='A';
for(n=m;n<a;n++)
{
printf (" ");}
for(n=65;n<=m;n++,c++)
{
printf ("%c",c);}
c-=2;

for (n=65;n<=m;n++,c--)
{
if(c<65) continue; // c--减过头了

printf("%c",c);
}printf ("\n");

}

}}

while (c!='0');
return 0;

}

热心网友 时间:4小时前

#include "stdio.h"
void main()
{
int i,j,n;
i=0;j=0;
printf(" 打印金字塔\n");
printf("请输入要打印的层数: ");
scanf("%d",&n);
while(i<n)
{
i++;
j=0;
while(j<n-i)
{
printf(" ");
j++;
}
j=1;
while(j<2*i)
{
printf("*");
j++;
}
printf("\n");

}

i=0;
while(i<n-1)
{
i++;
j=0;
while(j<i)
{
printf(" ");
j++;
}
j=0;
while(j<=2*(n-1-i))
{
printf("*");
j++;
}
printf("\n");

}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com