PTA-练习8

news/2024/4/27 18:03:02/文章来源:https://blog.csdn.net/qq_58602552/article/details/136836141

目录

实验5-3 使用函数求Fibonacci数

实验5-4 输出每个月的天数

实验5-9 使用函数求余弦函数的近似值

实验5-11 空心的数字金字塔

实验6-6 使用函数验证哥德巴赫猜想

实验6-7 使用函数输出一个整数的逆序数

实验6-8 使用函数输出指定范围内的完数

实验8-1-7 数组循环右移

实验8-1-8 报数

实验8-2-4 使用函数实现字符串部分复制

实验8-2-9 长整数转化成16进制字符串


实验5-3 使用函数求Fibonacci数

/*int fib( int n ){if(n<3){return 1;}return fib(n-1)+fib(n-2);
}
*///这个个玩意会超时,
//使用数组试试看
#include <stdlib.h>
int fib( int n ){int *a=(int *)malloc(sizeof(int)*(n+1));a[1]=a[2]=1;for(int i=3;i<=n;i++){a[i]=a[i-1]+a[i-2];}return a[n];
}

实验5-4 输出每个月的天数

int MonthDays(int year, int month){switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;case 4:case 6:case 9:case 11:return 30;default:break;}if(month==2){if((year%4==0&&year%100!=0)||year%400==0){return 29;}return 28;}
}


实验5-9 使用函数求余弦函数的近似值


double funcos( double e, double x ){//pow(x,i)/jiecheng(i)//                                                                                                                                                ;double cosx=0;int i=0;double xiang=1;while(fabs(xiang)>=e){int jiecheng=1;i=i+2;for(int j=1;j<=i;j++){jiecheng=jiecheng*j;}cosx=xiang+cosx;xiang=pow(x,i)/jiecheng*pow(-1,i/2);}cosx=xiang+cosx;return cosx;}

实验5-11 空心的数字金字塔

//n==1,   1
//n==2,   1//222
//n==3,/*12 233333*/
//n==4/*12 23   34444444*///第一行是n-1个空格,+1
//第二行是,n-2空格,非最后一行就是中间2*n-3个空格void hollowPyramid( int n ){for(int i=1;i<=n;i++){//每一行for(int j=1;j<=n-i;j++){printf(" ");}if(i==1){printf("%d",i);}else if(i>1&&i<n){printf("%d",i);for(int k=1;k<=2*i-3;k++){printf(" ");}printf("%d",i);}else if(i==n){for(int k=1;k<=2*i-1;k++){printf("%d",i);}}printf("\n");}
}


实验6-6 使用函数验证哥德巴赫猜想

//素数的判定,在2~~p/2之间如果有可以整除的数就不是
int prime( int p ){if(p==1){return 0;}for(int i=2;i<=p/2;i++){if(p%i==0){return 0;}}return 1;
}void Goldbach( int n ){for(int i=2;i<=n/2;i++){if(prime(i)&&prime(n-i)){printf("%d=%d+%d",n,i,n-i);return ;}}
}


实验6-7 使用函数输出一个整数的逆序数

这题注意如何取数字,填数字,只需要每每得到一个数字,然后就把前面的数字*进制+这个数字。

即:在末尾填数字的方法:原数字*进制+这个数字

十进制:123的末尾加上4,得到1234,

                   只需要123*10+4=1234

二进制:101110在末尾加上1,得到1011101

int reverse( int number ){int sum=0;while(number){int d=number%10;sum=sum*10+d;number/=10;}return sum;
}
//因为负数对10取余余数还是负数,所以这里不用对负数进行特殊操作

实验6-8 使用函数输出指定范围内的完数

#include <stdio.h>int factorsum( int number );
void PrintPN( int m, int n );int main()
{int m, n;scanf("%d %d", &m, &n);if ( factorsum(m) == m ) printf("%d is a perfect number\n", m);if ( factorsum(n) == n ) printf("%d is a perfect number\n", n);PrintPN(m, n);return 0;
}/* 你的代码将被嵌在这里 */

int factorsum( int number ){int sum=0;for(int i=1;i<number;i++){if(number%i==0){sum=sum+i;}}return sum;
}
void PrintPN( int m, int n ){int sum=0;for(int i=m;i<=n;i++){if(factorsum(i)==i){sum++;printf("%d = 1",i);for(int j=2;j<i;j++){if(i%j==0){printf(" + %d",j);}if(j==i-1){printf("\n");}}}//of if输出一个完数的和形式}if(sum==0){printf("No perfect number");}
}

实验6-9 使用函数输出指定范围内的Fibonacci数

int fib( int n ){if(n<3){return 1;}return fib(n-1)+fib(n-2);
}
void PrintFN( int m, int n ){//20 100int sum=0;for(int i=m;i<=n;i++){if(i==1&&n==1){sum++;printf("1 1");break;}if(i==1){sum++;printf("%d ",i);}int x=fib(1);int j=1;while(i>=x){//20>1if(i==x){sum++;if(fib(j+1)>n){printf("%d",i);break;}printf("%d ",i);break;}j++;x=fib(j);}//of while}if(sum==0){printf("No Fibonacci number");}
}

实验8-1-7 数组循环右移

//循环右移:构造一个数组b[m]用来存放最后的m个数,
//然后将0~~n-1-m个元素后移m个,然后把b[m]补全到前面void ArrayShift( int a[], int n, int m ){m=m%n;int b[m+1];for(int i=n-m,j=0;i<=n-1;j++,i++){b[j]=a[i];}for(int i=n-1-m;i>=0;i--){a[i+m]=a[i];}for(int i=0;i<m;i++){a[i]=b[i];}
}
void ArrayShift(int a[], int n, int m) {// 避免 m 过大时重复移动,求模后只移动一次m %= n;int tmp[n];// a[i] 循环右移 m 个位置后下标由 i 变为 (n-m+i)%n,需推导求出for (int i = 0; i < n; i++) {tmp[i] = a[(n - m + i) % n];}// 重新赋值给 a[]for (int i = 0; i < n; i++) {a[i] = tmp[i];}
}

实验8-1-8 报数

这题我真的要无语了,这种找规律的题真的是一点都不想做。。。。。

//out[i]存放的是编号i+1推出的次序
void CountOff( int n, int m, int out[] ){out[n]=0;int x=1;//表示出去的次序int y=0;//表示现在的位置int sum=m;while(1){if(out[y]==0){sum--;y=(y+1)%n;}else{y=(y+1)%n;}if(sum==0){out[(y-1+n)%n]=x;sum=m;x++;}if(x==n+1){return;}}
}

 

实验8-2-4 使用函数实现字符串部分复制

空字符:'\0'

空字符串:""

#include <string.h>
void strmcpy( char *t, int m, char *s ){int n=strlen(t);if(m>n){strcpy(s,"");return;}int i,j;for(i=m-1,j=0;i<n;i++,j++){s[j]=t[i];}s[j]='\0';}

实验8-2-9 长整数转化成16进制字符串

C语言学习--字符串和整型的转换-CSDN博客

//把长整型123456789变成16进制,
//10/2=5'''0
//5/2=2’‘’1
//2/2=1'''0
//1/2=0'''1
//所以十的二进制就是1010
//同理转换成16进制就是每次除以个16,取余数,放入字符串数组a
//然后知道商为零,然后把a逆序给p
//'0'=48,'A'=65,'a'=97#include <stdlib.h>
#include <string.h>void f( long int x, char *p ){/*int j=0;int flag=0;if(x<0){flag=1;x=-1*x;}if(x==0){strcpy(p,"0");return;}char a[10000]="";while(x!=0){int i=x%16;if(i<10){a[j]=i+'0';j++;}else if(i>=10){switch(i){case 10:a[j]='A';break;case 11:a[j]='B';break;case 12:a[j]='C';break;case 13:a[j]='D';break;case 14:a[j]='E';break;case 15:a[j]='F';break;}j++;}x=x/16;}int haha=0;if(flag==1){p[0]='-';haha++;for(int i=1;i<=j;i++){p[i]=a[j-i];}}else{for(int i=haha;i<j;i++){p[i]=a[j-i-1];}}*/int flag=0;if(x<0){x=-1*x;flag=1;}sprintf(p,"%x",x);int n=strlen(p);if(flag){for(int i=n-1;i>=0;i--){p[i+1]=p[i];}p[0]='-';}for(int i=0;i<=n;i++){if(p[i]>='a'&&p[i]<='z'){p[i]=p[i]-32;}}}

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

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

相关文章

Transformer的前世今生 day11(Transformer的流程)

Transformer的流程 在机器翻译任务中&#xff0c;翻译第一个词&#xff0c;Transformer的流程为&#xff1a; 先将要翻译的句子&#xff0c;一个词一个词的转换为词向量送入编码器层&#xff0c;得到优化过的词向量以及K、V&#xff0c;将K、V送入解码器层&#xff0c;并跟解码…

halcon例程学习——ball.hdev

dev_update_window (off) dev_close_window () dev_open_window (0, 0, 728, 512, black, WindowID) read_image (Bond, die/die_03) dev_display (Bond) set_display_font (WindowID, 14, mono, true, false) *自带的 提示继续 disp_continue_message (WindowID, black, true)…

android studio忽略文件

右键文件&#xff0c;然后忽略&#xff0c;就不会出现在commit里面了 然后提交忽略文件即可

Vue3 + Vite + TS + Element-Plus + Pinia项目(5)对axios进行封装

1、在src文件夹下新建config文件夹后&#xff0c;新建baseURL.ts文件&#xff0c;用来配置http主链接 2、在src文件夹下新建http文件夹后&#xff0c;新建request.ts文件&#xff0c;内容如下 import axios from "axios" import { ElMessage } from element-plus im…

【C++的奇迹之旅】C++关键字命名空间使用的三种方式C++输入输出命名空间std的使用惯例

文章目录 &#x1f4dd;前言&#x1f320; C关键字(C98)&#x1f309; 命名空间&#x1f320;命名空间定义&#x1f309;命名空间使用 &#x1f320;命名空间的使用有三种方式&#xff1a;&#x1f309;加命名空间名称及作用域限定符&#x1f320;使用using将命名空间中某个成员…

【JVM】Java类加载器 和 双亲委派机制

1、java类加载器的分类 JDK8及之前 启动类加载器&#xff0c;BootStrap Class Loader,加载核心类,加载jre/lib目录下的类&#xff0c;C实现的拓展类加载器&#xff0c; Extension Class Loader&#xff0c;加载java拓展类库&#xff0c;jre/lib/ext目录下&#xff0c;比如javax…

蓝桥杯 java 凑算式 16年省赛Java组真题

题目 思路&#xff1a; 求有多少种解法 比如:68/3952/714就是一种解法&#xff0c;53/1972/486 是另一种解法 8/3952/714是可以除尽的 但是后面一个不行 所以我们也要通分 代码&#xff1a; public class 凑算式 {static int[] a {1, 2, 3, 4, 5, 6, 7, 8, 9};static int c…

SpringBoot Redis的使用

官方文档&#xff1a; 官方文档&#xff1a;Spring Data Redis :: Spring Data Redis 和jedis一样&#xff0c;SpringBoot Redis 也可以让我在Java代码中使用redis&#xff0c;同样也是通过引入maven依赖的形式。 加速访问github: 使用steam可以免费加速访问github Spring…

鸿蒙OS开发实例:【页面传值跳转】

介绍 本篇主要介绍如何在HarmonyOS中&#xff0c;在页面跳转之间如何传值 HarmonyOS 的页面指的是带有Entry装饰器的文件&#xff0c;其不能独自存在&#xff0c;必须依赖UIAbility这样的组件容器 如下是官方关于State模型开发模式下的应用包结构示意图&#xff0c;Page就是…

设计模式之单例模式精讲

UML图&#xff1a; 静态私有变量&#xff08;即常量&#xff09;保存单例对象&#xff0c;防止使用过程中重新赋值&#xff0c;破坏单例。私有化构造方法&#xff0c;防止外部创建新的对象&#xff0c;破坏单例。静态公共getInstance方法&#xff0c;作为唯一获取单例对象的入口…

ClickHouse 面试题及答案整理,最新面试题

ClickHouse的数据分布式存储机制是如何设计的&#xff1f; ClickHouse的数据分布式存储机制设计包括以下几个方面&#xff1a; 1、分片和复制&#xff1a; ClickHouse通过分片将数据水平划分为多个部分&#xff0c;每个部分存储在不同的节点上。每个分片可以有一个或多个副本…

macOS Sonoma 14.4.1 (23E224) 正式版发布,ISO、IPSW、PKG 下载

macOS Sonoma 14.4.1 (23E224) 正式版发布&#xff0c;ISO、IPSW、PKG 下载 2024 年 3 月 26 日凌晨&#xff0c;macOS Sonoma 14.4.1 更新修复了一个可能导致连接到外部显示器的 USB 集线器无法被识别的问题。它还解决了可能导致 Java 应用程序意外退出的问题&#xff0c;并修…

基于单片机音乐喷泉制作设计资料

**单片机设计介绍&#xff0c;基于单片机音乐喷泉制作设计资料 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机音乐喷泉制作设计资料概要主要包括以下几个关键部分&#xff1a;系统概述、硬件设计、软件设计以及实现过…

JavaScript高级 —— 学习(一)

目录 一、作用域 &#xff08;一&#xff09;局部作用域 1.函数作用域 2.块作用域 &#xff08;二&#xff09;全局作用域 二、垃圾回收机制 GC &#xff08;一&#xff09;生命周期 1.内存分配 2.内存使用 3.内存回收 4.特殊情况——内存泄漏&#xff1a; 注意&…

基于STC12C5A60S2系列1T 8051单片机通过单个按键单击次数实现开关机应用

基于STC12C5A60S2系列1T 8051单片机通过单个按键单击次数实现开关机应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍基于STC12C5A60S2系列1T 8051单片机通过单个按…

使用JMeter进行梯度压测

使用JMeter进行梯度压测 梯度压测配置如下&#xff1a; 使用线程:5&#xff0c;然后循环5000次&#xff0c;共2.5万个样本使用线程:10&#xff0c;然后循环5000次&#xff0c;共5万个样本使用线程:15&#xff0c;然后循环5000次&#xff0c;共7.5万个样本使用线程:20&#xff…

Git版本管理使用手册 - 8 - 合并分支、解决冲突

合并整个开发分支 切换到本地test分支&#xff0c;选择右下角远程开发分支&#xff0c;选择Merge into Current。然后提交到远程test仓库。 合并某次提交的代码 当前工作区切换成test分支&#xff0c;选择远程仓库中的dev开发分支&#xff0c;选择需要合并的提交版本右击&a…

AcWing 4609:火柴棍数字 ← 贪心算法

【题目来源】 https://www.acwing.com/problem/content/4612/【题目描述】 给定 n 个火柴棍&#xff0c;你可以用它们摆出数字 0∼9。 摆出每个数字所需要的具体火柴棍数量如下图所示&#xff1a; 请你用这些火柴棍摆成若干个数字&#xff0c;并把这些数字排成一排组成一个整数…

Git---命令筛选分支,分支过多快速定位分支!(值得收藏)

在Git中&#xff0c;有一些命令可以用来筛选分支&#xff0c;帮助我们找到特定的分支。 下面是一些常用的命令: git branch&#xff1a;列出所有本地分支。默认情况下&#xff0c;当前分支会用*标记。git branch -r&#xff1a;列出所有远程分支。git branch -a&#xff1a;列…

VTK 9.2.6 源码和VTK Examples 编译 Visual Studio 2022

对于编译 VTK 源码和编译详细的说明&#xff1a; VTK 源码编译&#xff1a; 下载源码&#xff1a; 从 VTK 官方网站或者 GitHub 获取源代码。官网目前最近的9.3.0有问题&#xff0c;见VTK 9.3.0 编译问题 Visual Studio 2022去gitlab上选择9.2.6分支进行clone CMake 配置&…