帮助进行简单的C编程练习

Cor*_*rey 0 c

我是C编程的新手,编程练习有点困难,我相信对于那些了解C的人来说这很简单,不幸的是你必须遵守练习规则.

这是练习:

让程序请求用户输入大写字母.使用嵌套循环生成如下金字塔图案:

    A 

   ABA

  ABCBA

 ABCDCBA

ABCDEDCBA
Run Code Online (Sandbox Code Playgroud)

模式应扩展到输入的字符.例如,前面的模式将由输入值E产生.提示:使用外部循环来处理行.连续使用三个内循环,一个用于处理空格,一个用于按升序打印字母,另一个用于按降序打印字母.

所以我到目前为止:

#include <stdio.h>

int main(void) {

 int rows;
 int spaces;

 char asc;
 char desc;
 char input;

 printf("Please enter an uppercase letter: ");
 scanf("%c", &input);

 for (rows = 'A'; rows <= input; rows++) {
  for (spaces = input; spaces > rows; spaces--) {
   printf(" ");
  }
  for (asc = 'A'; asc <= rows; asc++) {
   printf("%c", asc);
  }
  for (desc = asc - 2; desc >= rows; desc--) {
   printf("%c", desc);
  }
  printf("\n");
 }
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*hen 5

你非常接近:

for (desc = asc - 2; desc >= 'A'; desc--) {
Run Code Online (Sandbox Code Playgroud)

注意,在第二个内循环后,ascrows + 1.然后你初始化descrows - 1.你应该能够看到为什么>= rows是错误的,并且不会导致迭代.

正确的条件很简单>= 'A'.