注册 登录
编程论坛 C++教室

萌新遇到的迷之问题

xy2436462759 发布于 2018-02-02 20:22, 1757 次点击
#include <stdio.h>
#include <stdlib.h>
main()
{
    int x,n=0;
    printf("请输入:");
    scanf("%d",&x);
    for(n=0;x!=1;n++){
        if(x%2==1)
        {
            x=(3*x+1)/2;
        }
        else
        {
            x=x/2;
        }
    }
    printf("输出:%d",n);
    return 0;
}
c++上这个程序可以运行,那为什么下面的这个程序就不能运行了呢?直接运行结束了。
#include <stdio.h>
#include <stdlib.h>
main()
{
    int x,n=0;
    scanf("%d",&x);
    for(n=0;x!=1;n++){
        if(x%2==1)
        {
            x=(3*x+1)/2;
        }
        else
        {
            x=x/2;
        }
    }
    printf("%d",n);
    return 0;
}
5 回复
#2
stop12042018-02-03 08:40
你这个情况 无限循环.,

自己测试  n=0;n < 100;n++
输出


#3
xy24364627592018-02-03 18:55
回复 2楼 stop1204
下面的程序运行后连循环都没进去,scanf的输入 没输就直接程序运行结束了,程序框出来就是运行结束,而上面的那个程序是可以正常运行的。我觉得应该不是循环语句的问题。
#4
Jonny02012018-02-04 19:21
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

你看,C 起码还能过编译,顶多报个警告
C++ 连编译都过不了
很多 C 的习惯都不应该带到 C++
程序代码:
#include <iostream>

int main() {

}


[此贴子已经被作者于2018-2-4 19:22编辑过]

#5
stop12042018-02-05 08:37
回复 3楼 xy2436462759
没问题 .
网页也测试了没问题

https://code.

只有本站会员才能查看附件,请 登录
#6
stop12042018-02-05 08:38
回复 楼主 xy2436462759
你还是开调试模式看看到哪里出错
1