什么';这个C程序有什么问题
可能重复:什么';这个C程序有什么问题,c,for-loop,C,For Loop,可能重复: 该程序的目的是打印负号20次,但它不起作用 #include <stdio.h> int main() { int i; int n = 20; for( i = 0; i < n; i-- ) printf("-"); return 0; } #包括 int main() { int i; int n=20; 对于(i=0;i
该程序的目的是打印负号20次,但它不起作用
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; i < n; i-- )
printf("-");
return 0;
}
#包括
int main()
{
int i;
int n=20;
对于(i=0;i
#包括
int main()
{
int i;
int n=20;
对于(i=0;i
您使用了--
而不是++将i--替换为i++。intmain(){
int main() {
int i;
int n = 20;
for( i = 0; i < n; i++)
printf("-");
return 0;
}
int i;
int n=20;
对于(i=0;i
您使用的是递减而不是递增。您是否尝试过更改
i--
到
只要“i”小于20,就可以循环打印“-”。
每次循环将i的值减少1后,它将继续打印
很长一段时间。将for循环的最后一部分更改为“i++”,意味着它将对每个循环执行一次迭代,并在第二十次迭代完成后停止。i--需要是i++
你也可以这样做
int n = -20;
for( i = 0; i > n; i-- )
但这是糟糕的编码实践您不会打印破折号。您可以选择Jaime Wong的解决方案,也可以这样做:
用于(i=n;i>=0;i--)
将i--更改为i++。
i——将开始时为0的值递减,随后的递减将永远不会达到20(或+20)。这是一个经典的难题
我看到的是
“您只能更改/插入/删除代码中的一个字符,以使-打印20次”
有些答案是(如果我没记错的话)
(一)
您可以将i
更改为i+n
对于挑战,请尝试更改/插入/删除一个字符,使其打印-21次。(如果您想尝试,请不要阅读此答案的注释!)您到底想如何解决此问题???
这里您试图减少一个变量的值。一个其值永远不会达到条件的变量(iit给出无限负号…@SurajRk它实际上不会给出无限。当i=-2^31时,当你尝试递减时,它最终将被包装为正。标准只定义了无符号算术进行包装;有符号溢出是未定义的行为。因此编译器允许在此处发出真正的无限循环。比较gc例如,C4.4使用-S-O2
和-S-O2-fwrapv
对该程序进行了修改。@Zack+1不知道这一点-非常适合know@Zack:在实践中,大多数通用计算机系统都会自动循环。你不能指望它。根据标准,无限循环是完全可以的,就像任何其他行为一样。是的,that循环将永远运行,因为i
从0
开始并不断变小。它将永远不会大于n,因此循环的退出条件将永远不会达到。当整数结束时,它肯定会大于n?循环将只运行比预期稍长的时间。您将打印这么多的破折号。还有,那就是这是一种很糟糕的方式。非常不规范,而且毫无意义地有点模糊。正如其他人解释的那样,这不会打印出虚线。而且,你拼写错了我的名字。哎哟,你是对的。很抱歉,这两方面都很糟糕。为什么建议一个答案是糟糕的编码实践?因为在其他情况下,你确实想减少你的co计数器。在这种情况下,计数器的递减是没有意义的。@Jamie Creativity;)一个人甚至可以从不应该以特定方式完成的事情中学习。创造力有它的位置——向显然是c语言初学者的人建议一个行动过程不是其中之一。此外,我同意计数器递减有时更有用——所以在更有用的时候建议它。同样,这里不是这样的情况。+1代表makin这是一个谜题。回答得很好。这个挑战很有趣;)很高兴我在回答之前没有看评论。
i++
int n = -20;
for( i = 0; i > n; i-- )
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; -i < n; i-- )
printf("-");
return 0;
}
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; i < n; n-- )
printf("-");
return 0;
}
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; i + n; i-- )
printf("-");
return 0;
}
#include <stdio.h>
int main()
{
int i;
int n = 20;
for( i = 0; i < n; i-- )
printf("-");
return 0;
}