c语言 The 3n + 1 problem ,可以通过样例,但依然错误。

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

请考虑以下算法以生成数字序列。以整数 n 开头。如果 n 为偶数,则除以 2。如果 n 为奇数,则乘以 3 并加 1。使用新值 n 重复此过程,并在 n = 1 时终止。例如,将为 n = 22 生成以下数字序列: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 推测(但尚未证明)对于每个整数 n,此算法将终止于 n = 1。尽管如此,这个猜想仍然适用于至少1, 000, 000的所有整数。对于输入 n,n 的循环长度是生成的数量,最多包括 1。在上面的示例中,循环长度 22 为 16。给定任意两个数字 i 和 j,您将确定 i 和 j 之间所有数字(包括两个端点)的最大循环长度。
输入将由一系列整数对 i 和 j 组成,每行一对整数。所有整数将小于 1,000,000 且大于 0。
对于每对输入整数 i 和 j,输出 i、j 的顺序与它们在输入中出现的顺序相同,然后是 i 和 j 之间整数的最大循环长度。这三个数字应用一个空格分隔,所有三个数字都在一行上,每行输入都有一行输出。
样例输入
1 10
100 200
201 210
900 1000
样例输出
1 10 20
100 200 125
201 210 89
900 1000 174

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int shzi(int x, int y);
int main()
{
    int i, j = 0;
    while (~scanf("%d %d", &i, &j))//while (scanf("%d%d",&n,&m)!=EOF)也是为了没有输入时跳出循环。
    {
        shzi(i, j);
        printf("%d %d %d", i, j, shzi(i, j));
    }
    return 0;
}
int shzi(int x, int y)
{
    int i = 0;
    int count = 0;
    int maxcount = 0;
    if (y < x)
    {
        int temp = 0;
        temp = x;
        x = y;
        y = temp;
    }
    for (i = x; i <= y; i++)
    {
        int p = i;//保存i变量,不然后面i值变化了就没办法正常for循环了
        if (i == 1)//当i=1时不进入循环所以没办法算一次
        {
            count++;
        }
        else
        {
            while (i != 1)
            {
                if (i % 2 == 0)
                {
                    i = i / 2;
                }
                else
                {
                    i = i * 3 + 1;
                }
                count++;
            }
            count++;//i也算一次,但是while循环会忽略i
        }
        if (maxcount < count)
        {
            maxcount = count;
        }
        i = p;//赋值给i,继续正常循环
        count = 0;//清零,避免count一直加。才可以准确计算每个i的count
    }
    return maxcount;
}

printf("%d %d %d", i, j, shzi(i, j));这里,需要加一个\n

printf("%d %d %d\n", i, j, shzi(i, j));//加上\n回车,否则,所有输出都在一行了

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632