如何在正方形内打印带有两个字母的 X
How to print a X with two letters inside a square
我正在尝试制作这个形状但卡在了这里。我尝试了不止一个计数器,但又失败了。
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
考虑到How do I ask and answer homework questions?,
我建议尝试以下方法,以避免您将自己编程到角落。
使用两个嵌套循环(我更喜欢 for
,但如果您对 do while
更有信心,请继续使用)输出所有相同字母的正方形。之后不要更改这些循环。
然后在两个字母之间使用if-else
到select。
然后在三个之间使用一个if-elseif-else
到select。
然后四.
我相信你应该在这里学习的技巧是创造条件。相互依赖的循环的复杂结构是一个替代方案,但我的猜测是它会让你的事情变得更难。
我认为合适的字母顺序应该是:
- p
- Q 在完整的第一条对角线上
- q
- P 在完整的其他对角线上,但之后检查第一个对角线
- Q 在第二条对角线的另一半
请注意,正确排列条件的顺序很重要,例如对于对角线交叉点。
一纸一笔解决了这个问题。
解决方法如下:
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;
}
我正在尝试制作这个形状但卡在了这里。我尝试了不止一个计数器,但又失败了。
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
考虑到How do I ask and answer homework questions?,
我建议尝试以下方法,以避免您将自己编程到角落。
使用两个嵌套循环(我更喜欢 for
,但如果您对 do while
更有信心,请继续使用)输出所有相同字母的正方形。之后不要更改这些循环。
然后在两个字母之间使用if-else
到select。
然后在三个之间使用一个if-elseif-else
到select。
然后四.
我相信你应该在这里学习的技巧是创造条件。相互依赖的循环的复杂结构是一个替代方案,但我的猜测是它会让你的事情变得更难。
我认为合适的字母顺序应该是:
- p
- Q 在完整的第一条对角线上
- q
- P 在完整的其他对角线上,但之后检查第一个对角线
- Q 在第二条对角线的另一半
请注意,正确排列条件的顺序很重要,例如对于对角线交叉点。
一纸一笔解决了这个问题。
解决方法如下:
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;
}