2 qq 37130151 qq_37130151 于 2017.01.08 18:28 提问

c语言问题………………

图片

5个回答

dengminghli
dengminghli   2017.01.08 18:32
已采纳

直接编译运行就好了呀。。。

dengminghli
dengminghli 回复qq_37130151: 本来就是没有输出啊,这个不就是程序的结果吗,,,,
11 个月之前 回复
qq_37130151
qq_37130151 我知道,但是i永远不会大于k+1所以永远不会输出啊
11 个月之前 回复
dengminghli
dengminghli 而在后面,因为你最终实现的结果是break,所以直接跳出了for循环,i的值是没有改变的
11 个月之前 回复
dengminghli
dengminghli 01-110之内的srqt()都介于[10-11)之间,也就是每次都为10
11 个月之前 回复
dengminghli
dengminghli 回复qq_37130151: 第一,你要注意的是,m是int类型,所以你用sqrt()方法的话,他应该是返回一个整数,而题目要求的是
11 个月之前 回复
qq_37130151
qq_37130151 点错了给你采纳了
11 个月之前 回复
qq_37130151
qq_37130151 呵呵,我要的过程啊,为啥
11 个月之前 回复
LD0807
LD0807   2017.01.08 18:36

这有什么问题呢?是要结果么?

LD0807
LD0807 回复qq_37130151: 但是第二个判断很奇葩,I>K+1然后打印m,但是循环条件是I<=K,所以根本就不得打印。
11 个月之前 回复
LD0807
LD0807 回复qq_37130151: 然后循环体里面,k是m的平方根取整。然后就进入第二个循环,当m是i的倍数时,跳过此次循环,不进行下面的判断。
11 个月之前 回复
LD0807
LD0807 回复qq_37130151: 第一个for循环,从101到110,然后m每次+2,就是循环5次。101是奇数,后面的也都是奇数。
11 个月之前 回复
LD0807
LD0807 回复qq_37130151: 怎么做?是实现这个程序?还是咋个啊?这是题还是怎么
11 个月之前 回复
qq_37130151
qq_37130151 能不能详细解答下,不知道怎么考虑,
11 个月之前 回复
qq_37130151
qq_37130151 不知道怎么做啊
11 个月之前 回复
dengminghli
dengminghli   2017.01.08 18:38

1.k=sqrt(m) ,k=10
2.i=2;
3.m%i==0 break;没有结果

qq_37130151
qq_37130151 那么i永远<k+1,不会有输出啊,
11 个月之前 回复
dengminghli
dengminghli   2017.01.08 18:52

算了,再开一个吧:
第一次外循环:
m=101
k=sqrt(m),结果为10
第一次内循环
i=2;
k%i==0
break;跳出内循环,i值不变=2
m+2=103
第二次外循环
m=103
k=sqrt(m),结果为10
第二次内循环
k%i==0

break;跳出内循环,i值不变=2

m+2=105

依次类推

dengminghli
dengminghli 看错题目了,以为是k,不过如果是m的话也同样啊,因为你下面的if语句是i>k+1;而你的结束条件是i=k+1(i<=k),也就是说下面的if语句根本就不会实现。而全代码就这么一个输出的地方,所以还是不会有输出。如果你要它输出什么结果的话,最后检查一下题目是否有问题
11 个月之前 回复
qq_37130151
qq_37130151 那岂不是没有值输出了,还有就是101%2不等于0啊,
11 个月之前 回复
dengminghli
dengminghli   2017.01.08 18:56

用java实现的结果,没有输出
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!