ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PAT乙级1001 用C语言进行编程

2021-06-04 00:01:29  阅读:173  来源: 互联网

标签:count PAT 流程图 除以 C语言 计数 输入 1001 1000


最近想学一学C语言,然后找来了PAT里的题目来练一练。

不积跬步,无以至千里,不积小流,无以成江海。

先从乙级开始,一题一题做会了,也就能提升自己实力了。

首先来看一下题目。

一个著名的卡拉兹猜想,对于任意给定的正整数n,如果是偶数,就除以一半,如果是奇数,那么就把这个奇数变成3n+1,然后再除以一半,最后求给定的任意一个不超过1000的正整数n,用C语言来求需要多少步才能得到n=1。

输入的形式:输入正整数n的值,比方说2、3。

输出的形式:就是从n计算到1的步骤。

我一直有这样一个想法,在拿到一道编程题的时候。

最为重要的,就是要理清楚这道编程题的逻辑。

现在,我就来理一理这道题的逻辑,用流程图来理顺编程题的逻辑最好了。

理顺逻辑,流程图是极好的办法

1、我们要求最后得到的结果是n=1,那么只要当n!=1的时候,那就应该一直在除以2,而当n==1的时候,那就应该把总的计数给输出出来。

2、之后,我们要输入的正整数n不超过1000,所以说,这里也要做个判断,也就是n<1000的话,就进行下一步,而如果n>1000的话,那就再重新进行输入。

3、之后就要进行奇偶数判断。

4、如果是奇数的话,也就是余数为1,那就要在3n+1的基础来除以2。

如果是偶数的话,也就是余数为0,那就直接在n的基础上除以2。

5、然后进行计数,每进行一次这样的步骤就多计数1次。

6、进行总计数。

如下图所示,这就是一张流程图,看起来就更顺了。

代码的实现

如果要实现功能的话,正如这张流程图所示。

首先要定义一个n,这个n就是我们要输入的值来进行一定的判断,直到最后n的值为1的时候,那就输出最终的结果,也就是得到最终计数的值。

那么,这里就可以写一个while循环语句,判断条件就是n!=1的时候,就一直在这个循环内。

之后,是不是还要再进行一个判断,如果n>1000的话,那就要重新输入,那这里就可以写一个if条件语句。

如果n<1000,就继续下一步,同时,这里也要写一个if条件语句,进行判断,我们这里用到的是除以2,然后判断余数是0还是1,若是0,则为偶数,若是1,则为奇数,之后3n+1再进行下一步。

很明显,写到这里应该这个代码逻辑就理顺了,也就变得很简单了。

不需要多讲,直接放出代码即可。

#include <stdio.h>
int main() {
    int n;
    int count = 0;
    scanf("%d",&n);
    while(n!=1){
        if(n>1000){
            scanf("%d",&n);
        }
        if(n%2==0){
            n = n/2;
            count = count + 1;
        }
        else if(n%2==1){
            n = (3*n + 1)/2;
            count = count + 1;
        }
    }
    printf("%d\n",count);
}

在写完之后,再放到PAT练习网站上测一测,看一看最终效果。

总的来说,难度不大,只是要理清逻辑,一步步理顺即可,就能做出这道题。

标签:count,PAT,流程图,除以,C语言,计数,输入,1001,1000
来源: https://blog.csdn.net/qq_42615643/article/details/117536274

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有