【问题标题】:How to print a X with two letters inside a square如何在正方形内打印带有两个字母的 X
【发布时间】:2022-02-09 18:56:14
【问题描述】:

我正在尝试制作这个形状但卡在了这里。我尝试了不止一个计数器,但又失败了。

P p p p p p Q
p P p p p Q q
p p P p Q q q
p p p Q q q q
p p Q q Q q q
p Q q q q Q q
Q q q q q q Q
int main()
{  
    int loopLimit = 7;
    int upperCharacter = 0;
    
    do {
        int loopCounter = 0;

        do {
            if (loopCounter == upperCharacter) std::cout << "P ";
            else std::cout << "p ";
            loopCounter = loopCounter + 1;
        } while (loopCounter < loopLimit);

        upperCharacter = upperCharacter + 1;
        loopLimit = loopLimit - 1;
        std::cout << "\n";
    } while (loopLimit > 0);
}

我的代码当前输出:

P p p p p p p 
p P p p p p 
p p P p p 
p p p P 
p p p 
p p 
p 

【问题讨论】:

  • 你试过调试了吗? (甚至可以用笔和纸)。你的发现是什么?
  • 我建议使用for 循环数固定7个循环,并考虑哪些字符位置应该逐行大写
  • 我建议尝试以下方法,以免您将自己编程到角落。使用两个嵌套循环(我更喜欢for,但如果您对do while 更有信心,请继续使用)输出所有相同字母的正方形。之后不要更改这些循环。然后使用if-else 在两个字母之间进行选择。然后使用if-elseif-else 在三个之间进行选择。然后四个。我相信你应该在这里学习的技巧是创造条件。相互依赖的循环的复杂结构是另一种选择,但我猜它会让你的事情变得更难。

标签: c++ algorithm shapes square


【解决方案1】:

牢记How do I ask and answer homework questions?
我建议尝试以下方法,以避免您将自己编程到角落。

使用两个嵌套循环(我更喜欢for,但如果您对do while 更有信心,请继续使用)输出所有相同字母的正方形。之后不要更改这些循环。

然后使用if-else 在两个字母之间进行选择。
然后使用if-elseif-else 在三个之间进行选择。
然后是四个。

我相信你应该在这里学习的技巧是创造条件。相互依赖的循环的复杂结构是另一种选择,但我猜它会让你的事情变得更难。

我认为合适的字母顺序是:

  • p
  • 第一条对角线上的 Q
  • q
  • P 在完整的另一个对角线上,但之后检查第一个对角线
  • Q 在第二条对角线的另一半

请注意,获得正确的条件顺序很重要,例如对角线交叉点。

【讨论】:

  • 感谢您的建议。我在没有三个或更多循环的情况下解决了这个问题。
  • 您可以使用最终解决方案创建自己的答案。然后决定你要接受哪一个。 “没有三个或更多循环”,即两个,正是我的建议。很高兴知道它有帮助。
【解决方案2】:

一支笔和一张纸解决了这个问题。

解决办法如下:

for (int satirSayaci = 1; satirSayaci < 8; satirSayaci++) {
        for (int karakterSayaci = 1; karakterSayaci < 8; karakterSayaci++)
        {
            if (karakterSayaci >= 8 - satirSayaci) {
                if (karakterSayaci == 8 - satirSayaci || karakterSayaci == satirSayaci) std::cout << "X ";
                else std::cout << "x ";
            } else {
                if (karakterSayaci == satirSayaci) std::cout << "P ";
                else std::cout << "p ";
            }
        }

        // Yeni bir satir yazdir
        std::cout << std::endl;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-24
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多