1

我没有得到我的 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();
}
4

5 回答 5

2

首先,您打印的空白数量错误。你需要的数字可以用一小部分算术计算出来。

其次,您不需要那种凌乱的计算来计算出空格后要打印的第一个符号,因为您已经计算出来了。

(编辑所以downvote可以撤回)

于 2013-08-15T11:46:04.153 回答
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;
}

并且不要忘记包含标题。

于 2013-08-15T11:46:47.290 回答
2

问题就在这里

for(j=0;j<blank;j++)
    printf(" ");    
            ^
            A

您只打印一个空格,应该是两个空格。所以一个空格对应字母表,另一个空格对应实际空格

   printf("  "); 
           ^^
           A(space)
于 2013-08-15T11:47:42.740 回答
0

你需要使用更多的空格

使用 0, 2, 6... 以此类推

于 2013-08-15T11:47:19.117 回答
-1

你的“差异”数组太小了。您正在考虑模式左侧的缺失字符,而不是右侧的缺失字符。尝试制作前三个元素{0, 2, 6...},看看是否可行,然后从那里推断出正确的模式

于 2013-08-15T11:45:59.570 回答