有没有办法用单行逻辑代码打印金字塔星形图案?面试官向我的朋友问了这个问题

Is there any way to print pyramid star pattern with single line of logic code ? Interviewer asked this Question to my friend

本文关键字:面试 我的朋友 问题 单行逻 代码 金字塔 打印 有没有      更新时间:2023-10-16

我的一个朋友被面试官要求使用单行逻辑代码打印金字塔模式。 如果可能,请为我提供解决方案。

如果可能的话...

是的,这是可能的。

必须手动作弊,将声明从头文件中添加。 并且通过使用"所有内容都在一行上"难以阅读的格式,而不是可维护的格式。

不过,这些都是愚蠢的限制。 未在实际项目中使用。

。那么请为我提供解决方案。

extern "C" int puts(const char *s); int main() { puts("     *n    * *n   *   *n  *     *n *       *n***********n"); }

有一种方法可以在一行代码中C++完成。 在main()函数中打印"金字塔"(或星形(图案所需的唯一语句是:

for (std::string s = "*"; s.size() < 11; s.append("*")) std::cout << s << std::endl;

输出是:ld 被设置为"一行长";只需将每个语句一个接一个地分组即可。另外,如果

*                                                                                                                                                                                                                                                
**                                                                                                                                                                                                                                               
***                                                                                                                                                                                                                                              
****                                                                                                                                                                                                                                             
*****                                                                                                                                                                                                                                            
******                                                                                                                                                                                                                                           
*******                                                                                                                                                                                                                                          
********                                                                                                                                                                                                                                         
*********                                                                                                                                                                                                                                        
**********

OBS:如果你想自己编译它,你应该包括正确的标题。当然,这将使您的源代码文件超过一行长(它不可能不同,对吧(,但main()函数仍然由一行组成。另外,请注意,停止条件是任意的(在本例中,我将其设置为 10(。

完整代码为:

#include <iostream>
#include <string>
int main() {
for (std::string s = "*"; s.size() < 11; s.append("*")) std::cout << s << std::endl;
}

免責聲明

我假设"一行代码"实际上意味着"一个语句",这是唯一有意义的问题。"一行代码"是非常主观的。C++ 不关心空格/返回,因此,每个代码都可以"一行长";只需将每个语句一个接一个地分组即可。另外,如果我对"行"的定义(可能是"60 个字符的长序列"(与经理的定义不同,可能是"40 个字符的长序列"怎么办?那么在我的"单行"视图上工作的代码在"经理的单行"中可能不起作用。因此,由于这种定义的主观性,唯一正确的问题就是在单个陈述(或表达(中做到这一点,这就是这个答案所要完成的。

现在关于形状。就我而言,"金字塔模式",也称为"星形图案",并不完全是金字塔。每次看到这种拼图,它都会关注这个"直角三角形",我很确定这就是采访中提出的问题。事实上,绘制一个真正的"金字塔"是相当困难的,因为它是一个需要 4 个三角形和一个正方形的 3D 几何形状。因此,关于定义,我的回答和另一个都没有画一个真正的金字塔(实际上,两者都打印了一个三角形(。考虑到编程世界的经验,这个谜题是关于打印"星形图案"的,它更像上面的直角三角形。