在下面的代码中,只更改/添加一个字符并打印 '*' 正好 20 次。
解决方案:
1. 将 for 循环第三个表达式中的 i 替换为 n
2. 在 for 循环的第二个表达式中,将“-”放在 i 之前
3.将for循环的第二个表达式中的<替换为+
让我们稍微扩展一下这个问题。
仅更改/添加一个字符并打印 '*' 正好 21 次。
解决方案:在 for 循环的第二个表达式中,将否定运算符放在 i 之前。
说明: 否定运算符将数字转换为它的补码。
int main()
{
int i, n = 20;
for (i = 0; i < n; i--)
printf("*");
getchar();
return 0;
}
#include <stdio.h>
int main()
{
int i, n = 20;
for (i = 0; i < n; n--)
printf("*");
getchar();
return 0;
}
#include <stdio.h>
int main()
{
int i, n = 20;
for (i = 0; -i < n; i--)
printf("*");
getchar();
return 0;
}
#include <stdio.h>
int main()
{
int i, n = 20;
for (i = 0; i + n; i--)
printf("*");
getchar();
return 0;
}
No. One's complement 0 (00000..00) -1 (1111..11) -1 (11..1111) 0 (00..0000) -2 (11..1110) 1 (00..0001) -3 (11..1101) 2 (00..0010) ............................................... -20 (11..01100) 19 (00..10011)
#include <stdio.h>
int main()
{
int i, n = 20;
for (i = 0; ~i < n; i--)
printf("*");
getchar();
return 0;
}