我没有为我的C程序获得所需的输出任何人都可以查看代码并帮我纠正错误吗?
我的代码的所需输出和实际输出是:
我的代码是:
#include <stdio.h>
#include <conio.h>
void main()
{
int i,j,k;
int blank=0;
int lines = 6;
char symbol='A';
int temp ;
int diff[7]= {0,1,3,5,7,9,11};
k=0;
for(i=lines;i>=0;i--)
{
printf("\n");
symbol = 'A';
for(j=i;j>=0;j--)
printf("%c ",symbol++);
blank = diff[k++];
for(j=0;j<blank;j++)
printf(" ");
symbol = 'F' - (blank/2);
if (blank== 0)
temp = i-1;
else
temp = i;
for(j=0;j<=temp;j++)
printf("%c ",symbol--);
}
getch();
}
答案 0 :(得分:2)
首先,您正在打印错误数量的空白。你需要的数字可以通过一小段算术来计算出来。
其次,你不需要那么混乱的计算就可以计算出第一个符号,以便在空白之后打印出来,因为你已经完成了它。
(编辑所以downvote可以撤回)
答案 1 :(得分:2)
您已经以正确的方式编写了代码。你必须改变行
for(j=0;j<blank;j++)
printf(" ");
到
for(j=0;j<blank;j++)
printf(" "); // increase one more space
并尝试避免使用void main()
。这是您编辑过的代码;
#include <math.h>
#include <stdio.h>
int main()
{
int i,j,k;
int blank=0;
int lines = 6;
char symbol='A';
int temp ;
int diff[7]= {0,1,3,5,7,9,11};
k=0;
for(i=lines;i>=0;i--)
{
printf("\n");
symbol = 'A';
for(j=i;j>=0;j--)
printf("%c ",symbol++);
blank = diff[k++];
for(j=0;j<blank;j++)
printf(" ");
symbol = 'F' - (blank/2);
if (blank== 0)
temp = i-1;
else
temp = i;
for(j=0;j<=temp;j++)
printf("%c ",symbol--);
}
return 0;
}
不要忘记包含标题。
答案 2 :(得分:2)
问题出在这里
for(j=0;j<blank;j++)
printf(" ");
^
A
您只打印一个空格,应该两个。因此,一个空格对应于字母,另一个对应于实际空间
printf(" ");
^^
A(space)
答案 3 :(得分:0)
您需要使用更多空格
使用0,2,6 ......等等
答案 4 :(得分:-1)
你的“diff”数组太小了。您要考虑图案左侧缺少的字符,而不是右侧。尝试制作前三个元素{0, 2, 6...}
并查看是否有效,然后从那里开始推断出正确的模式