A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一只小菜鸟 中级黑马   /  2014-4-5 22:21  /  1354 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 一只小菜鸟 于 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--);
复制代码

我只答出两个。。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

11 个回复

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

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
  1. int n = 20;  
  2. for(int i = 0; i < n; i++){  
  3.     printf("-");
  4. }
复制代码
回复 使用道具 举报
哎 。。。就能想起一个
回复 使用道具 举报
第一种方法是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("-");
}

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
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 不是判断条件么,这个该怎么说呢,求解答
回复 使用道具 举报
haohaoxuexi 发表于 2014-4-5 23:46
大神啊,佩服佩服,
还有一种就是把 i < n修改成 i + n
int n = 20;

插楼一起膜拜大神~~
因为i+n最终为0,结束循环
回复 使用道具 举报
张海龙重新起航 发表于 2014-4-5 23:56
插楼一起膜拜大神~~
因为i+n最终为0,结束循环

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

第三个方法还真没想到,第二个方法是改了两个字符吧。还有你说的附加方法,i+n 这个会运行吗? 这个应该是判断条件,但是这个条件不会为真的把?? 求解释下。。。谢谢了。。
回复 使用道具 举报
星河鹭起 发表于 2014-4-6 11:58
第三个方法还真没想到,第二个方法是改了两个字符吧。还有你说的附加方法,i+n 这个会运行吗? 这个应该 ...

for(;i+n;)基本等于while(0==i+n)  c中0的时候,就是false跳出的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马