C语言关于空心字母等腰梯形输出问题。

假如输入4A的话,输出的结果如下:DEFGCHBIABCDEFGHIJ这是我写的:#include<stdio.h>voidmain(){intn,i,j;charc;s... 假如输入4 A的话,输出的结果如下:

DEFG
C H
B I
ABCDEFGHIJ
这是我写的:
#include <stdio.h>
void main()
{
int n,i,j;
char c;
scanf("%d %c",&n,&c);
for(i=1;i<=n;i++)
{
for(j=1;j<=2*n+i-3;j++)
if(j==n-i+1||j>n-i+1&&(i==1||i==n))
{
if(i==n)
{
if(c+j-1<='Z'&&c+j-1>='A')
{
printf("%c",c+j-1);
}
else
{
printf("%c",c-26+j-1);
}
}
if(j==n-i+1&&i!=1&&i!=n)
{
if(c+n-i<='Z'&&c+n-i>='A')
{
printf("%c",c+n-i);
}
else
{
printf("%c",c-26+n-i);
}
}
if(j==n+i+2&&i!=1&&i!=n)
{
if(c+2*n+2-1-n+i<='Z'&&c+2*n+2-1-n+i>='A')
{
printf("%c",c+2*n+2-1-n+i);
}
else
printf("%c",c+2*n+2-1-n+i-26);
}
if(i==1)
{
if(c+n-1+j-n+i-1<='Z'&&c+n-1+j-n+i-1>='A')
{
printf("%c",c+n-1+j-n+i-1);
}
else
printf("%c",c+n-1+j-n+i-1-26);
}
}
//printf("*");
else
printf(" ");
printf("*\n");
}
}

我先写的星号输出,结果每一行的最后一个改不过来了。。。。。。。。。
而且要求到Z以后下一个字母从A开始。。
只能输入A~Z的大写字母,数字代表梯形的高和两个腰。。。。

谢谢O(∩_∩)O~。。。
饥渴的初学者。。。
展开
 我来答
缘明思
推荐于2017-12-15 · TA获得超过543个赞
知道小有建树答主
回答量:795
采纳率:88%
帮助的人:349万
展开全部

最后一行改下就好了啊。

printf("%c\n",c+i*2);

 另外,你可以把所有关于输出字符的地方都改下,变成你的那个(整体)%26,这样就能循环输出字母了。

追问
那大于Z的问题怎么办( ⊙ o ⊙ )。。。O(∩_∩)O谢谢 !!!!
追答

好吧。稍微思考了下。你按我这个写得了。

#include<stdio.h>

char oPut(char c,int i)
{
if(c>='A'&&c<='Z')
c=(c-'A'+i)%26+'A';
return c;
}
int main()
{
char c,t;
int n,i,j;
printf("输入高和左下角的起始字母(大写,参数之间用空格间隔)\n");
scanf("%d %c",&n,&c);

for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)printf(" ");
for(j=n-1-i;j<2*n-1+i;j++)
{
t=c;
if(i>0&&i<n-1)
{
if(j==n-1-i||j==2*n-2+i);
else
t=' ';
}
printf("%c",oPut(t,j));
}
printf("\n");
}

return 0;
}

 顺便一提,别写特别大的数字,要不然一行显示不开超难看的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式