C语言谜题[关闭]

Posted

技术标签:

【中文标题】C语言谜题[关闭]【英文标题】:C language puzzle [closed] 【发布时间】:2021-11-27 17:58:54 【问题描述】:

我不确定这类问题在这里是否合适,但是... 通过更改(或添加)一个字符,使该程序打印 '*' 正好 20 次

void main()
   int i, n=20;
   for (i=0; i<n; i--)
      printf("*");

有什么想法吗?

【问题讨论】:

你有什么问题?这将打印 '*' 远远超过 20 次。更改为 i++ 使其打印 20 次。 只能更改一个字符,将i--更改为i++需要两个字符 提供的源代码调用 UB。在我的 Klingon 模拟器上,在 Waxing Crescent Thursdays(今天)上,它会打印 '*' 正好 20 次。 我相信这样的问题比 Stack Overflow 更适合Code Golf。 我投票结束这个问题,因为它在任何地方都属于 Code Golf。这似乎不是 OP 面临的实际问题,只是他们为娱乐而发布的一个谜题。 【参考方案1】:

您的意思似乎是以下更改

for (i=0; i<n; i--)
              ^^^ 

for (i=0; i<n; n--)
              ^^^

这里将一个字符 i 替换为一个字符 n

另一种方法(如果拼图允许的话)是添加一个字符'-'like

for (i=0; -i<n; i--)
         ^^^

注意:顺便注意,根据 C 标准,不带参数的函数 main 应声明为:)

int main( void )

【讨论】:

@Gendozz 如果您对答案感到满意,那么您可以选择它作为最佳答案,您的声誉将会增加。:)【参考方案2】:

i++ 或 (i-- & n-=2 或任何其他大于 1 的正数)

【讨论】:

这不满足单字符要求。请参阅 Vlad 的答案以了解该难题的正确解决方案。【参考方案3】:

这很简单,只需将i-- 更改为n--

也许下一次更难的谜题? ;)

【讨论】:

在问题和我的答案出现 4 天后发布的答案的含义是什么?与我的答案相比,这并没有增加任何新内容?!

以上是关于C语言谜题[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

建议网站练习 C/C++ 算法/谜题 [关闭]

C语言指针学习总结

关于C语言关闭窗口的问题

C语言消息处理的问题,WM_PAINT自动关闭窗口

C或C++.NET语言中,想实现点击按钮后关闭当前窗口和所有窗口?

各位大虾 vs2010 编译c语言程序 运行时窗口自动关闭 怎么回事?