|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- int main()
- {
- int n,i;
- i=0;
-
- printf ("请输入一个小于1000的正整数n:");
- scanf ("%d",&n);
- if (n>=1000&&n>0){
- do {
- if (!(n%2)){
- n/=2;
- i++;
- }
- else {
- n=(3*n+1)/2;
- i++;
- }
- }while (n==1);
- }
- printf ("%d",i);
- return 0;
- }
复制代码
求助啊,为什么答案老是1
本帖最后由 bin554385863 于 2019-10-24 21:02 编辑
#include <stdio.h>
int main()
{
int n,i;
i=0;
printf ("请输入一个小于1000的正整数n:");
scanf ("%d",&n);
if (n>=1000&&n>0)// n > 1000还能出现小于0的情况么
{
do {
if (!(n%2)){
n/=2;
i++;
}
else {
n=(3*n+1)/2;
i++;
}
}while (n==1);// 你的循环逻辑有问题啊,n/2不管n能不能被2整除n/2==1都成立,所以循环只进行一次,i= 1不是很正常么?
}
printf ("%d",i);
return 0;
}
|
|