可能重复:
Help with C puzzle
该计划的目的是打印一个减号20次,但它不起作用。
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; i < n; i-- )
printf("-");
return 0;
}
答案 0 :(得分:26)
这是一个经典的谜题!
我看到它的方式是
“您只能更改/插入/删除代码中的一个字符,以便 - 打印20次”。
有些答案(如果我没记错的话)
1)
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; -i < n; i-- )
printf("-");
return 0;
}
您可以在此处将i < n
更改为-i < n
2)
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; i < n; n-- )
printf("-");
return 0;
}
您可以在此处将i--
更改为n--
3)
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; i + n; i-- )
printf("-");
return 0;
}
您将i < n
更改为i+n
。
对于挑战,请尝试更改/插入/删除一个字符,使其打印 - 21 次。 (如果您想尝试,请不要阅读此答案的评论!)
答案 1 :(得分:24)
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; i < n; i++ )
printf("-");
return 0;
}
您有--
而不是++
答案 2 :(得分:10)
用i ++替换i--。
答案 3 :(得分:4)
int main() {
int i;
int n = 20;
for( i = 0; i < n; i++)
printf("-");
return 0;
}
你减少而不是增量。
答案 4 :(得分:2)
您是否尝试过更改
i--
到
i++
只要“i”小于20,就有循环打印出“ - ”。 每次循环后,您将i的值减1,它将继续打印 很长一段时间将for循环的最后部分更改为“i ++”意味着它将在每个循环中执行一次迭代,并在第二十次迭代完成后停止。
答案 5 :(得分:2)
将i--改为i ++。 i--减少开始时的值为0,随后的减少量不会达到20(或+20)。
答案 6 :(得分:1)
你也可以
int n = -20;
for( i = 0; i > n; i-- )
但这是糟糕的编码习惯
答案 7 :(得分:1)
你究竟想要解决这个问题??? 在这里,你试图减少变量的值......一个变量的值,它的值永远不会达到你提供的条件(i <20)...因此它将继续打印' - ',直到指定了什么,即{ {1}}。它会成为+ ve。我刚试过这个程序。
i= -2^31
根据您提出的问题,#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; i < n; i-- )
printf("-");
return 0;
}
应该递增,即i
而不是i++
。
@jamie wong:thanx man..learnt关于环绕的新事物....
答案 8 :(得分:-1)
你不会打印破折号。你可以选择Jaime Wong的解决方案,也可以这样做:
for (i = n; i >= 0; i--)