问题如下:1.从键盘上输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“not exit”
代码:
运行结果:
这是为什么呢?
呃……你没发现有个地方有错吗?
两个等号是判等,一个等号是赋值。
虽然不是很记得C的语法,但是应该是 break 的问题没跑。
if((p=q+9)&&(*p%7!=0))
两个问题:
1)这个if是在for循环内,所以数字1的时候就输出了 not exit.
2)(p=q+9)
一个等号是赋值啊,你把指针强行指向了数字10,然后for再来个p++
,结束。
又:英语都不通顺,应该是 not exists.
问题出在第二个if里面,不应该用 = ,要改为 ==
否则p = a + 9输出永远为真,而第一个*p % 7 != 0 也为真,所以输出not exit
代码如下
if((p == a + 9) && (*p % 7 != 0)) {
printf("not exit\n");
}
第一次进入第二个for循环的时候, 会进入第二个if进行判断,两个条件,第一个是赋值,第二个是不是7的倍数,两个都是true,赋值自然是true
C语言长范的问题,判断的时候用了=,应该是==,经常会bug出在这里。还有你为什么不这么写
for(i=0;i<10;i++)
scanf("%d",&a[i]);
能不用指针就不要用,很容易出错