PTA第六章作业详解

在这里插入图片描述

🚀write in front🚀
📝个人主页:认真写博客的夏目浅石.
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏:夏目的作业
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊
✉️如果无聊的话,就来逛逛我的博客栈吧stack-frame.cn

文章目录

  • 前言
  • 6-1 不一样的A-B
  • 6-2 不一样的斐波那契数列
  • 6-3 反素数
  • 6-4 范围水仙花数
  • 6-5 公约数和公倍数
  • 6-6 进制转换
  • 6-7 绝对值排序
  • 6-8 连接字符串
  • 6-9 求次方
  • 6-10 求阶乘
  • 6-11 求母牛数
  • 6-12 求素数
  • 6-13 求最大值
  • 6-14 数字求和
  • 6-15 数字转换
  • 6-16 巫妖王的愤怒
  • 6-17 字符串逆序
  • 6-18 字母统计
  • 结语


前言

我是夏目浅石,本次作业将由我来给大家讲解第六章作业,希望大家可以吃透这些题目,遇见更好的自己


6-1 不一样的A-B

题目描述:
在这里插入图片描述

/*
大致题意:给定两个数字n,m,然后从 a数组 里面找 b数组 一样的数字进行删除
如果 不一样的 就直接从小到大输出 若全部被删除 就输出NULL
*/

void cn(int n,int m)
{
    int a[110],b[110],c[110];
    int k=0;
    
    //输入部分
    for(int i=0;i<n;i++) scanf("%d",&a[i]);
    for(int j=0;j<m;j++) scanf("%d",&b[j]);
    
    //算法设计部分
    /*
    写下我的思路:
    1.遍历 数组a 
    2.把不一样的 存放到新数组 c数组 里面 方法:flag标记法
    3.排序输出 c数组 里面的内容
    */
    
    //遍历+存放
    for(int i=0;i<n;i++)
    {
        int flag=0;
        for(int j=0;j<m;j++)
        {
            if(a[i]==b[j])
            {
                flag=1;
                break;
            }
        }
        if(flag==0) c[k++]=a[i];
    }
    
    //判断是否为NULL
    if(k==0) printf("NULL\n");
    else
    {
        //显然对于 c数组 进行排序
        //冒泡排序
        for(int i=0;i<k-1;i++)
        {
            int j=0;
            for(j=0;j<k-1-i;j++)
            {
                if(c[j]>c[j+1])
                {
                    int tmp=c[j];
                    c[j]=c[j+1];
                    c[j+1]=tmp;
                }
            }
        }
        
        //输出部分
        for(int i=0;i<k;i++) printf("%d ",c[i]);
    }
}

6-2 不一样的斐波那契数列

题目描述:
在这里插入图片描述

/*
大致题意:类似于 斐波那契数列 考察你的递归 but 变化了f1,f2.
*/

int cn(int n)
{
    //设置新的起始值
    int f1=7,f2=11,f;
    //讨论情况
    if(n==0)
        return f1;
    if(n==1)
        return f2;
    else
        f=cn(n-1)+cn(n-2);
    return f;
}

6-3 反素数

在这里插入图片描述

/*
基础知识:
1.素数的定义:素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
2.反素数的定义:在一个区间内,因子最多的数(并且因子个数相同的时候值最小),
  所以反素数是相对于一个集合来说的。

题目意思:就是在一个区间里面 找到 谁的因子 最多 然后不断迭代。
*/

int cn(int a,int b)
{
    //定义 + 初始化
    int ans=0,max=a;
    
    //遍历区间 [a,b]
    for(int i=a;i<=b;i++)
    {
        int cnt=0; //记录 因子个数 
        
        for(int j=2;j<=i;j++) //暴力 遍历求因子
        {                     //优化 j<=i/2
            if(i%j==0) cnt++;
        }
        //这里 ans 表示 我所记录的上一个 因子个数的最大值
        if(cnt>ans)
        {
            ans=cnt;
            max=i;
        }
    }
    return max;//返回 这个满足因子个数 最多的数。
}
//---------------------手动分界线-------------------------------
//求素数 函数---暴力
void isprime(int n)
{
    for(int i=2;i*i<=n;i++)
    {
        int j=0;
        for(j=2;j<i;j++)
        {
            if(i%j==0) break;
        }
        if(j==i) printf("%d ",i);
        else continue;
    }
}

6-4 范围水仙花数

在这里插入图片描述

//考察 水仙花数
int cn(int n,int m)
{
    int s,k=0;
    int book[1000];
    
    for(int i=n;i<=m;i++)
    {
        int j=i,s=0;
        while(j)
        {
            s+=(j%10)*(j%10)*(j%10);
            j/=10;
        }
        if(i==s) book[k++]=i;
    }
    
    if(k)
    {
        printf("%d",book[0]);
        for(int i=1;i<k;i++) printf(" %d",book[i]);
        return 1;
    }
    else return 0;
}

6-5 公约数和公倍数

在这里插入图片描述

/*
题目意思:求出来 公约数 + 公倍数
*/
//方法:辗转相除法---课本 P148 例 4-21
long long cn(long long a,long long b)
{
    long long r,t;
    while(r=a%b)
        a=b,b=r;
    return b;
}

//-----------------------手动分割线----------------------
/*
知识总结:二种方法求解此类问题
*/
//递归实现
int gcd(int a,int b)//计算最大公约数---递归法
{
    if (b==0)
        return a;
    int r = a%b;
    return gcd(b,r); //当然这一种可以写成 逗号表达式的 形式。
}
//辗转相除实现
int gcd(int a,int b)  //计算最大公约数---辗转相除法
{
    int t;
    while(b > 0)
    {
        t = a % b;
        a = b;
        b = t;
    }
    return a;
}

6-6 进制转换

在这里插入图片描述

/*
题目大意:对于一个数字n 进行 转换成 r进制数
*/

int cn(int n,int r)
{
    int k=0;
    
    if(r>=1&&r<10)
    {
        while(n)
        {
            s[k++]=n%r+48;//int类型-->char类型 需要 +’0‘ 或者 +48
            n/=r;
        }
    }
    else
    {
        while(n)
        {
            int j=n%r;
            n/=r;
            if(j>9) s[k++]=j+55; //对于大于9的 就要 从十开始 变成 字母了
                                 //然后 9到16 差了7 所以要在 +48基础上 多+ 7
            else s[k++]=j+48;
        }
    }
    return k;
}

6-7 绝对值排序

在这里插入图片描述

/*
题目大意:在有 绝对值的前提下 进行从大到小 排序
*/

void cn(int a[],int n)
{
    //输入
    for(int i=0;i<n;i++) scanf("%d",&a[i]);
    //冒泡排序+abs函数的使用
    for(int i=0;i<n-1;++i)
    {
        int j=0;
        for(j=0;j<n-1-i;++j)
        {
            if(abs(a[j])<abs(a[j+1]))
            {
                int tmp=a[j];
                a[j]=a[j+1];
                a[j+1]=tmp;
            }
        }
    }
    //输出
    for(int i=0;i<n;i++)
    {
        if(i!=n-1)
            printf("%d ",a[i]);
        else printf("%d",a[i]);
    }
}

6-8 连接字符串

在这里插入图片描述

/*
题目大意:将 两个字符串 进行链接
*/

void cn(char s[],char b[])
{
    int i=0,j=0;
    
    while(s[i]) i++;//先把 s数组本身的字符 走到末尾
    
    while(b[j]) s[i++]=b[j++]; //加入新的字符
    //下面这个 ’\0‘ 一定要重视 printf函数以 %s 打印是以 \0 进行停止的
    s[i]='\0';
}

6-9 求次方

在这里插入图片描述

/*
题目大意:求一个数字n的m次方
*/
long long cn(long long x,long long y)
{
    long long sum=1;
    //暴力叠乘
    for(int i=1;i<=y;++i)
    {
        sum*=x;
    }
    return sum;
}

6-10 求阶乘

在这里插入图片描述

/*
题目大意:用递归的方法求整数x的阶乘。
*/
//暴力方法
long long cn(int x)
{
    long long sum=1;
    for(int i=1;i<=x;++i) 
    {
        sum*=i;
    }
    return sum;
}
//递归方法
long long cn(int x)
{
    if(x<=1)
        return 1;
    return x*cn(x-1);
}

6-11 求母牛数

在这里插入图片描述

//思维题一道
void cn(int a[])
{
    //类似于斐波那契,但是要找规律
    a[1]=1,a[2]=2,a[3]=3;
    
    for(int i=4;i<55;++i)
    {
        a[i]=a[i-3]+a[i-1];
    }
}

6-12 求素数

在这里插入图片描述

//暴力 求素数
int cn(long long x)
{
    if(x==1) return 0;
    for(int i=2;i*i<=x;i++)
        if(x%i==0) return 0;
    return 1;
}

6-13 求最大值

在这里插入图片描述

//暴力求最大值
int cn(int a[],int n)
{
    int mx=a[0],i;
    for(i=1;i<n;i++)
        mx=a[i]>mx?a[i]:mx;
    return mx;
}

//递归求最大值
int cn(int a[],int n)
{
    int m;
    if(n<=1) return a[0];//结束递归条件
    else
    {
        m=cn(a,n-1);//继续递归
        return a[n-1]>=m?a[n-1]:m;//返回最大值
    }
}

6-14 数字求和

在这里插入图片描述


//暴力求解数字和
void cn(int n,int ans)
{
    while(n)
        ans += n %10,n/=10;
    printf("%d\n",ans);
}

//递归求解数字和

void cn(int n,int ans)
{
    if(n<10)
    {
        ans+=n;
        printf("%d\n",ans);
    }
    else
    {
        ans+=(n%10);
        cn(n/10,ans);
    }
}

6-15 数字转换

在这里插入图片描述

//其实就是对 偶数 和 奇数的 不同操作
void cn(long long x)
{
    while(x!=1)
    {
        printf("%lld ",x);
        if(x%2) x=x*3+1;
        else x/=2;
    }
    printf("%lld ",x);
}

6-16 巫妖王的愤怒

在这里插入图片描述

void cn(int n)
{
    int mn;
    //% 之后余下的越多 就说明不行 所以就换一种商品购买
    if(n<300) mn=n%150>n%200?n%200:n%150;
    else mn=n%50;
    printf("%d\n",mn);
    return 0;
}

6-17 字符串逆序

在这里插入图片描述

void cn(char s[])
{
    int left=0,right=strlen(s)-1;
    
    while(left<right)
    {
        char tmp=s[left];
        s[left]=s[right];
        s[right]=tmp;
        right--;
        left++;
    }
    return;
}

6-18 字母统计

在这里插入图片描述

void cn(char s[])
{
    for(int i=0;s[i];++i)
    {
        if(s[i]>='A'&&s[i]<='Z')
        {
            num1++;
        }
        else if(s[i]>='a'&&s[i]<='z')
        {
            num2++;
        }
    }
}

结语

我是夏目浅石,希望和你一起学习进步,刷题无数!!!希望各位大佬能一键三连支持一下博主,hhhh~我们下期见喽

在这里插入图片描述
如果无聊的话,就来逛逛我的博客栈吧stack-frame.cn

原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \textcolor{9c81c1}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{ed7976}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{98c091}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/153.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA进阶 —— Stream流

目录 一、 引言 二、 Stream流概述 三、Stream流的使用步骤 1. 获取Stream流 1.1 单列集合 1.2 双列集合 1.3 数组 1.4 零散数据 2. Stream流的中间方法 3. Stream流的终结方法 四、 练习 1. 数据过滤 2. 数据操作 - 按年龄筛选 3. 数据操作 - 演员信息要求…

蓝桥杯第十四届蓝桥杯模拟赛第三期考场应对攻略(C/C++)

这里把我的想法和思路写出来&#xff0c;恳请批评指正&#xff01; 目录 考前准备 试题1&#xff1a; 试题2&#xff1a; 试题3&#xff1a; 试题4&#xff1a; 试题5&#xff1a; 试题6&#xff1a; 试题7&#xff1a; 试题8&#xff1a; 试题9&#xff1a; 试题1…

第十六章 Java为什么使用序列化

为何要指定serialVersionUID的值如果不指定显示serialVersionUID的值&#xff0c;jvm在序列化时会自动生成一个serialVersionUID&#xff0c;跟属性一起序列化&#xff0c;再进行持久化或者网络传输&#xff0c;在反序列化时&#xff0c;jvm会根据属性自动生成一个新版的serial…

【Jetpack】Lifecycle 架构组件 ( 系统组件与普通组件解耦 | Lifecycle 解耦系统组件与普通组件 | 解耦服务组件与普通组件 | 监听应用程序生命周期 )

文章目录一、系统组件与普通组件解耦二、Lifecycle 解耦 Activity 系统组件与 UI 组件1、传统实现方式① Activity 系统组件② 布局文件③ 执行效果2、LifeCycle 实现方式① 自定义 UI 组件② Activity 系统组件③ 布局组件④ 执行效果三、LifecycleService 解耦 Service 与 UI…

为什么北欧的顶级程序员数量远超中国?

说起北欧&#xff0c;很多人会想到寒冷的冬天&#xff0c;漫长的极夜&#xff0c;童话王国和圣诞老人&#xff0c;但是如果我罗列下诞生于北欧的计算机技术&#xff0c;恐怕你会惊掉下巴。Linux&#xff1a;世界上最流行的开源操作系统&#xff0c;最早的内核由Linus Torvalds开…

2022济南大学acm新生赛题解

通过答题情况的难度系数&#xff1a; 签到&#xff1a;ABL 简单&#xff1a;DGKQ 中等&#xff1a;CMN 困难&#xff1a;EFHIJOPRST A-和 算出n个数的和判断正负性即可&#xff01;&#xff01;&#xff01; 发现很多同学的代码错误&#xff1a;要么sum未赋初值&#xf…

DDOS攻击

注&#xff1a;本博客只是为了自己的学习&#xff0c;记录自己的学习&#xff0c;请勿用于其他途径、1、winR-->cmd2、ping 网站3、替换IP1 import java.io.BufferedInputStream;2 import java.io.IOException;3 import java.net.MalformedURLException;4 import java.net.U…

Vue3做出B站【bilibili】 Vue3+TypeScript+ant-design-vue【快速入门一篇文章精通系列(一)前端项目案例】

本项目分为二部分 1、后台管理系统&#xff08;用户管理&#xff0c;角色管理&#xff0c;视频管理等&#xff09; 2、客户端&#xff08;登录注册、发布视频&#xff09; Vue3做出B站【bilibili】 Vue3TypeScriptant-design-vue【快速入门一篇文章精通系列&#xff08;一&…

【C++】STL简介 及 string的使用

文章目录1. STL简介1.1 什么是STL1.2 STL的版本1.3 STL的六大组件2. string类的使用2.1 C语言中的字符串2.2 标准库中的string类2.3 string类的常用接口说明1. string类对象的常见构造2. string类对象的容量操作3. string类对象的修改操作4. resize和reserve5. 认识迭代器&…

产品研发项目进度管理软件工具有哪些推荐?整理10款最佳进度管理软件

项目进度管理是确保项目按时完成的关键过程&#xff0c;使用合适的项目进度管理工具能确保帮助项目管理者实时了解和控制项目的进展情况&#xff0c;及时发现和解决问题&#xff0c;减少项目风险&#xff0c;提高项目效率和管理水平。这里将整理出国内外最受欢迎的10款项目进度…

ASEMI低压MOS管SI2301参数,SI2301体积,SI2301尺寸

编辑-Z ASEMI低压MOS管SI2301参数&#xff1a; 型号&#xff1a;SI2301 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;20V 栅源电压&#xff08;VGS&#xff09;&#xff1a;8V 漏极电流&#xff08;ID&#xff09;&#xff1a;2.3A 功耗&#xff08;PD&#xf…

Simulink壁咚(一)——What and How

目录 一、前言 二、Simulink 知多少 三、滤波算法 四、Model Verification 五、Model Coverage 六、Simulink测试实例 七、Simulink Test 八、Test Manager 九、Test Harness 十、 学习 一、前言 Simulink从2017b以后更加工程化和实用化&#xff0c;基于MBD的功能日趋…

MATLAB绘制ROC曲线

ROC曲线(Receiver Operating Characteristic Curve) 1 简介 ROC曲线是用于评估二元分类模型&#xff08;如Logistic回归&#xff09;表现优劣的一种工具&#xff0c;其横轴表示假阳性率&#xff08;false positive rate&#xff0c;FPR&#xff09;&#xff0c;即实际为负例但…

MySQL事务详解

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;Spring事务和MySQL事务详解 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入: …

vue3 构建属于自己的组件库dxui

文章目录前言第一步&#xff0c;通过vue-cli搭建vue3框架第二步&#xff0c;构建一个入口&#xff0c;将所有的组件统一管理第三步 修改package.json &#xff0c;对组件进行单独打包第四步输入命令行开始打包第五步&#xff0c;修改package.json文件&#xff0c;为npm 发布做准…

[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-1 通关详解 (附靶机搭建教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

Python 基础教程【1】:Python介绍、变量和数据类型、输入输出、运算符

本文已收录于专栏&#x1f33b;《Python 基础》文章目录1、Python 介绍2、变量和数据类型2.1 注释的使用2.2 变量以及数据类型2.2.1 什么是变量&#xff1f;2.2.2 怎么给变量起名&#xff1f;2.2.3 变量的类型&#x1f3a8; 整数 int&#x1f3a8; 浮点数&#xff08;小数&…

教你成为比卡卡西还牛逼的全能忍者,全拷贝与分割函数

如何成为一个集雷切&#xff0c;写轮眼侦查和拷贝与一身的卡卡西&#xff0c;下面教你&#xff01; 目录 第一式——雷切&#xff01; strtok 第二式——写轮眼侦查&#xff01; strerror函数 第三式——写轮眼拷贝&#xff01; memcpy 模拟实现memcpy函数 &#x1f60e;…

Hadoop集群搭建

文章目录一、运行环境配置(所有节点)1、基础配置2、配置Host二、依赖软件安装(101节点)1、安装JDK2、安装Hadoop(root)3、Hadoop目录结构三、本地运行模式&#xff08;官方WordCount&#xff09;1、简介2、本地运行模式&#xff08;官方WordCount&#xff09;四、完全分布式运行…

多线程的风险 --- 线程安全

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; ✨每日一语&#xff1a;低头赶路&#xff0c;敬事如仪&#xff1b;自知自心&#xff0c;其路则明。 目 录&#x1f378;一. 线程不安全&#x1f379;二. 线程不安全的原因&#x1f…