鱼C论坛

 找回密码
 立即注册
查看: 1357|回复: 2

[已解决]C语言输出演算过程

[复制链接]
发表于 2020-2-17 22:12:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
〖c 语言训练〗角谷猜想
问题描述
角谷猜想的内容是奇数则乘3 加1 , 得到一^ 新的自然数后按照上面的法则继续演算, 若十次后得到的结果必然为1 。编程验证。
任给一个自然数, 若为偶数除以2 , 若为
输入
任一正整数
输出
演算的过程


大佬们,演算过程怎么办?
最佳答案
2020-2-17 22:45:53
#include <stdio.h>

int main(void)
{
        size_t n;
        printf("请输入任意一个正整数: ");
        scanf("%lu", &n);
        while(n != 1)
        {
                if(n % 2 != 0)
                {
                        printf("%lu * 3 + 1 = %lu\n", n, n * 3 + 1);
                        n = n * 3 + 1;
                }
                else
                {
                        printf("%lu / 2 = %lu\n", n, n / 2);
                        n = n / 2;
                }
        }
        printf("%lu\n", n);
        return 0;
}
请输入任意一个正整数: 7
7 * 3 + 1 = 22
22 / 2 = 11
11 * 3 + 1 = 34
34 / 2 = 17
17 * 3 + 1 = 52
52 / 2 = 26
26 / 2 = 13
13 * 3 + 1 = 40
40 / 2 = 20
20 / 2 = 10
10 / 2 = 5
5 * 3 + 1 = 16
16 / 2 = 8
8 / 2 = 4
4 / 2 = 2
2 / 2 = 1
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-17 22:45:53 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>

int main(void)
{
        size_t n;
        printf("请输入任意一个正整数: ");
        scanf("%lu", &n);
        while(n != 1)
        {
                if(n % 2 != 0)
                {
                        printf("%lu * 3 + 1 = %lu\n", n, n * 3 + 1);
                        n = n * 3 + 1;
                }
                else
                {
                        printf("%lu / 2 = %lu\n", n, n / 2);
                        n = n / 2;
                }
        }
        printf("%lu\n", n);
        return 0;
}
请输入任意一个正整数: 7
7 * 3 + 1 = 22
22 / 2 = 11
11 * 3 + 1 = 34
34 / 2 = 17
17 * 3 + 1 = 52
52 / 2 = 26
26 / 2 = 13
13 * 3 + 1 = 40
40 / 2 = 20
20 / 2 = 10
10 / 2 = 5
5 * 3 + 1 = 16
16 / 2 = 8
8 / 2 = 4
4 / 2 = 2
2 / 2 = 1
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-17 22:51:54 | 显示全部楼层
int test() {
        
        int i,n;
        scanf("%d", &i);
        n = 0;
        printf("-----------------------\n");
        while (i != 1) {
                if (i % 2 == 0) {
                        i = i / 2;
                }
                else {
                        i = 3 * i + 1;
                }
                n++;
                printf("第%d次的数是%d\n", n, i);
        }
        printf("-----------------------\n");
        return 0;
}
这个意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 01:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表