【问题标题】:Help with a simple C programming exercise帮助一个简单的 C 编程练习
【发布时间】:2010-11-30 05:56:16
【问题描述】:

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

这是练习:

有一个程序请求用户 输入一个大写字母。使用嵌套 循环以产生金字塔图案 像这样:

    A 

   ABA

  ABCBA

 ABCDCBA

ABCDEDCBA

模式应该延伸到 输入的字符。例如, 先前的模式将由 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;
}

【问题讨论】:

    标签: c


    【解决方案1】:

    你很亲密:

    for (desc = asc - 2; desc >= 'A'; desc--) {
    

    请注意,在第二个内部循环之后,ascrows + 1。然后将desc 初始化为rows - 1。您应该能够看到为什么&gt;= rows 是错误的,并且不会导致任何迭代。

    正确的条件就是&gt;= 'A'

    【讨论】:

    • 哇,好痛苦。多谢,伙计。一直盯着那条该死的线大约一个小时。
    • @Corey:如果这回答了您的问题,请单击勾号轮廓将其变为绿色并为 Matthew 点赞。
    • 是的,我早些时候尝试过这样做,但我收到了一些随机的“您必须等待 10 分钟才能将其标记为已回答”消息。现在完成了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2011-09-21
    相关资源
    最近更新 更多