divfish
2016-12-28 08:46
采纳率: 100%
浏览 1.4k
已采纳

一个简单的C语言问题,求解答

问题如下:1.从键盘上输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“not exit”
代码:
图片说明

运行结果:

图片说明

这是为什么呢?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 企鹅爱吃方便面 2016-12-28 09:07
    已采纳

    呃……你没发现有个地方有错吗?
    两个等号是判等,一个等号是赋值。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 新人后台选手 2016-12-28 08:56

    虽然不是很记得C的语法,但是应该是 break 的问题没跑。

    评论
    解决 无用
    打赏 举报
  • Tiger_Zhao 2016-12-28 09:10

    if((p=q+9)&&(*p%7!=0))
    两个问题:
    1)这个if是在for循环内,所以数字1的时候就输出了 not exit.
    2)(p=q+9) 一个等号是赋值啊,你把指针强行指向了数字10,然后for再来个p++,结束。

    又:英语都不通顺,应该是 not exists.

    评论
    解决 无用
    打赏 举报
  • Xefvan 2016-12-28 09:14

    问题出在第二个if里面,不应该用 = ,要改为 ==

    否则p = a + 9输出永远为真,而第一个*p % 7 != 0 也为真,所以输出not exit

    代码如下

    if((p == a + 9) && (*p % 7 != 0)) {
                printf("not exit\n");
    }
    
    评论
    解决 无用
    打赏 举报
  • no输给现实 2016-12-28 09:25

    可以断点调试一下啊,调试过程就是一个发现问题,不断提升coding水平的过程啊

    评论
    解决 无用
    打赏 举报
  • mis花舞 2016-12-28 09:54

    第一次进入第二个for循环的时候, 会进入第二个if进行判断,两个条件,第一个是赋值,第二个是不是7的倍数,两个都是true,赋值自然是true

    评论
    解决 无用
    打赏 举报
  • Charlie818 2016-12-28 12:06

    C语言长范的问题,判断的时候用了=,应该是==,经常会bug出在这里。还有你为什么不这么写

    for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    能不用指针就不要用,很容易出错

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题