1. 主页
  2. 文档
  3. C语言教程
  4. C语言案例实战
  5. C语言仅更改/添加一个字符并打印 ‘*’ 正好 20 次

C语言仅更改/添加一个字符并打印 ‘*’ 正好 20 次

在下面的代码中,只更改/添加一个字符并打印 ‘*’ 正好 20 次。 

int main()
{
int i, n = 20;
for (i = 0; i < n; i--)
printf("*"); 
getchar();
return 0;
}

解决方案:
1. 将 for 循环第三个表达式中的 i 替换为 n  

#include <stdio.h>
int main()
{
int i, n = 20;
for (i = 0; i < n; n--)
printf("*");
getchar(); 
return 0;
}

2. 在 for 循环的第二个表达式中,将“-”放在 i 之前

#include <stdio.h>
int main()
{
int i, n = 20;
for (i = 0; -i < n; i--)
printf("*"); 
getchar(); 
return 0;
}

3.将for循环的第二个表达式中的<替换为+  

#include <stdio.h>
int main()
{
int i, n = 20;
for (i = 0; i + n; i--)
printf("*");
getchar();
return 0;
}

让我们稍微扩展一下这个问题。
仅更改/添加一个字符并打印 ‘*’ 正好 21 次。
解决方案:在 for 循环的第二个表达式中,将否定运算符放在 i 之前。
说明: 否定运算符将数字转换为它的补码。  

   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;
}
这篇文章对您有用吗?