黑马程序员技术交流社区

标题: 挺有意思的一个C题 [打印本页]

作者: 一只小菜鸟    时间: 2014-4-5 22:21
标题: 挺有意思的一个C题
本帖最后由 一只小菜鸟 于 2014-4-6 12:55 编辑

只能增加或是修改其中的一个字符,请你给出三种答案,输出20个减号
  1. <blockquote>int n = 20;
  2. for(int i = 0; i < n; i--){
  3. printf("-");
  4. }
复制代码
  1. //除下面之外基本都是要改2个字符以上的
  2. for(int i=0;-i<n;i--);
  3. for(int i=0;i+n;i--);
  4. for(int i=0;i<n;n--);
复制代码

我只答出两个。。

作者: 董月峰    时间: 2014-4-5 22:58
- -只改一个字符我一种办法也不会,楼主真乃大神也。
改多个字符的我倒是能想出几个来
i--改成i++就是改了2个字符;
或者i<n改成i>-n也是改了2个字符;
同理改2个字符的方法还有:
int n = -20;  
for(int i = 0; i > n; i--){  
    printf("-");
}

作者: haohaoxuexi    时间: 2014-4-5 23:20
  1. int n = 20;  
  2. for(int i = 0; i < n; i++){  
  3.     printf("-");
  4. }
复制代码

作者: haohaoxuexi    时间: 2014-4-5 23:30
哎 。。。就能想起一个
作者: Freedam    时间: 2014-4-5 23:31
第一种方法是i--改成n--
int n = 20;
for(int i = 0; i < n; n--)
{
          printf("-");
}
第二种方法是i--改成i++
int n = 20;
for(int i = 0; i < n; i++)
{
          printf("-");
}
第三种方法是i < n修改成-i < n
int n = 20;
for(int i = 0; -i < n; i--)
{
          printf("-");
}
还有一种就是把 i < n修改成 i + n
int n = 20;
for(int i = 0; i + n; i--)
{
          printf("-");
}

作者: haohaoxuexi    时间: 2014-4-5 23:46
Freedam 发表于 2014-4-5 23:31
第一种方法是i--改成n--
int n = 20;
for(int i = 0; i < n; n--)

大神啊,佩服佩服,
还有一种就是把 i < n修改成 i + n
int n = 20;
for(int i = 0; i + n; i--)
{
          printf("-");
}
i+n 不是判断条件么,这个该怎么说呢,求解答
作者: 张海龙重新起航    时间: 2014-4-5 23:56
haohaoxuexi 发表于 2014-4-5 23:46
大神啊,佩服佩服,
还有一种就是把 i < n修改成 i + n
int n = 20;

插楼一起膜拜大神~~
因为i+n最终为0,结束循环
作者: haohaoxuexi    时间: 2014-4-6 00:04
张海龙重新起航 发表于 2014-4-5 23:56
插楼一起膜拜大神~~
因为i+n最终为0,结束循环

明白明白:lol
作者: Freedam    时间: 2014-4-6 00:05
这个我也不敢说解释的对不对。就是说即便是条件表达式也是有值的,如果是比较运算符这种表达式如 i > n; i < n; i != n等等,这些表达式在运算后表达式为真,最后的表达式的值就为1,要是为假,表达式的值就为0。有了这个条件,因为i+n也是一个表达式,而且运算之后也有相应的值,只不过它的取值是0或是非0的数,所以,它即使没有比较运算符,但是它的表达式的值可以作为条件判断的依据。因为C语言中表达式的值不是0就为真,是0就为假。
作者: 帅哥哥    时间: 2014-4-6 02:09
都是大神,I 服了 YOU!!!
作者: 星河鹭起    时间: 2014-4-6 11:58
Freedam 发表于 2014-4-5 23:31
第一种方法是i--改成n--
int n = 20;
for(int i = 0; i < n; n--)

第三个方法还真没想到,第二个方法是改了两个字符吧。还有你说的附加方法,i+n 这个会运行吗? 这个应该是判断条件,但是这个条件不会为真的把?? 求解释下。。。谢谢了。。
作者: 一只小菜鸟    时间: 2014-4-6 12:57
星河鹭起 发表于 2014-4-6 11:58
第三个方法还真没想到,第二个方法是改了两个字符吧。还有你说的附加方法,i+n 这个会运行吗? 这个应该 ...

for(;i+n;)基本等于while(0==i+n)  c中0的时候,就是false跳出的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2