PTA-练习8

目录

实验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.rhkb.cn/news/286998.html

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

相关文章

练习4-权重衰减(李沐函数简要解析)

环境:练习1的环境 代码详解 0.导入库 import torch from torch import nn from d2l import torch as d2l1.初始化数据 这里初始化出train_iter test_iter 可以查一下之前的获取Fashion数据集后的数据格式与此对应 n_train, n_test, num_inputs, batch_size 20, 100, 200, …

【数据结构与算法】java有向带权图最短路径算法-Dijkstra算法(通俗易懂)

目录 一、什么是Dijkstra算法二、算法基本步骤三、java代码四、拓展&#xff08;无向图的Dijkstra算法&#xff09; 一、什么是Dijkstra算法 Dijkstra算法的核心思想是通过逐步逼近的方式&#xff0c;找出从起点到图中其他所有节点的最短路径。算法的基本步骤如下&#xff1a;…

无货源违规又现,现在还能做抖音小店吗?无货源商家该怎么调整?

大家好&#xff0c;我是电商花花。 最近好像又有很多人的店铺被查无货源违规&#xff0c;店铺还被扣12分&#xff0c;也申诉不了。 如果想要长期的做下去&#xff0c;就不要秀那些花里胡哨的操作&#xff0c;也不要为了短暂的自然流量而进行违规操作&#xff0c;为什么你的店…

【Java程序设计】【C00351】基于Springboot的疫情居家办公系统(有论文)

基于Springboot的疫情居家办公系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以及i…

后端常见面经之MySQL

MySQL字段类型 数值类型 整型经常被用到&#xff0c;比如 tinyint、int、bigint 。默认是有符号的&#xff0c;若只需存储无符号值&#xff0c;可增加 unsigned 属性。 int(M)中的 M 代表最大显示宽度&#xff0c;并不是说 int(1) 就不能存储数值10了&#xff0c;不管设定了显…

docker容器下部署hbase并在springboot中通过jdbc连接

我在windows的docker中部署了一个hbase服务&#xff0c;然后用springboot连接到此服务并访问数据。 详情可参考项目中的README.md。项目中提供了用于构建镜像的dockerfile&#xff0c;以及测试代码。 项目连接&#xff1a; https://gitee.com/forgot940629/hbase_phoenix_sprin…

java常用IO流功能——字符流和缓冲流概述

前言&#xff1a; 整理下学习笔记&#xff0c;打好基础&#xff0c;daydayup! 之前说了下了IO流的概念&#xff0c;并整理了字节流&#xff0c;有需要的可以看这篇 java常用应用程序编程接口&#xff08;API&#xff09;——IO流概述及字节流的使用 字符流 FileReader(文件字…

文件一键加水印的软件下载

文件一键加水印的软件通常具有强大的功能特点。 首先&#xff0c;它们支持多种文件格式&#xff0c;无论是常见的图片、文档&#xff0c;还是视频、音频文件&#xff0c;都能轻松应对。这极大地提高了软件的适用性和实用性。 其次&#xff0c;这些软件通常提供多种水印样式和…

【动态规划】【卡特兰数】Leetcode 96. 不同的二叉搜索树

【动态规划】【卡特兰数】Leetcode 96. 不同的二叉搜索树 动态规划卡特兰数 ---------------&#x1f388;&#x1f388;96. 不同的二叉搜索树 题目链接&#x1f388;&#x1f388;------------------- 动态规划 &#x1f612;: 我的代码实现> 动规五部曲 ✒️确定dp数组…

一款不错的开源的 Linux 服务器运维管理面板:1Panel

适用于非运维人员的环境搭建、部署、监控等 一、1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。1Panel 的功能和优势包括&#xff1a; 快速建站&#xff1a;深度集成 Wordpress 和 Halo&#xff0c;域名绑定、SSL 证书配置等一键搞定&#xff1b; 高效管理&#xf…

QT作业day3

1、使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是…

常见端口及对应服务

6379 redis未授权 7001、7002 weblogic默认弱口令、反序列化 9200、9300 elasticsearch 参考乌云&#xff1a;多玩某服务器ElasticSearch命令执行漏洞 11211 memcache未授权访问 50000 SAP命令执行 50070、50030 hadoop默认端口未授权访问

创建数组的时候,数组大小是确定数值和变量的不同情况

概要&#xff1a; 1、创将数组的时候&#xff0c;如果数组大小是确定数值 &#xff08;1&#xff09;数组所有元素默认是0 &#xff08;2&#xff09;可以通过大括号对元素进行赋值 int arr[3]{1,2,3}; int arr[10]{1}; //只将第一个元素赋值为1,其他元素依然是0 2、…

【机器学习】无监督学习算法之:K均值聚类

K均值聚类 1、引言2、K均值聚类2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.4.1 距离计算公式2.4.1 中心点计算公式 2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; K均值聚类 我不懂&#xff0c;能不能给我讲一讲&#xff1f; 小鱼&#xff1a;行&#xf…

距离AI PC起飞,还差了点什么?

作者 | 张未 来源 | 洞见新研社 PC行业也没有逃过万物皆可AI的真香定律。 英伟达在前喊出AI PC的口号后&#xff0c;一众PC厂商纷纷加码这一最新概念&#xff0c;有关AI PC的讨论点燃了PC市场。 最直观的变化就是&#xff0c;全球PC市场终于止住了颓势&#xff0c;打破了七连…

雪里温柔,水边明秀,不及Java 抽象类 和 Object类

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

【测试开发学习历程】认识Python + 安装Python

目录 1 认识 Python 1.1 Python 的起源 1.2 Python的组成 1.2.1 解释器 1.1.2 Python 的设计目标 1.1.3 Python 的设计哲学 1.2 为什么选择 Python 测试人员选择Python的理由 1.3 Python 特点 面向对象的思维方式 1.4 Python 的优缺点 1.4.1 优点 1.4.2 缺点 3. 安…

哈希冲突解决的几种方式

目录 哈希冲突 哈希冲突-避免方式1-哈希函数的设计 1. 直接定制法--(常用) 2. 除留余数法--(常用) 3. 平方取中法--(了解) 哈希冲突-避免方式2-负载因子调节 哈希冲突-解决方式1-闭散列 1.线性探测 2.二次探测 哈希冲突-解决方式2-开散列(哈希桶) 哈希冲突 在上文中…

es bulk批量操作简单实例

&#xff08;1&#xff09;定义 bulk允许在单个步骤中进行多次create、index、update或delete请求。 bulk与其他的请求体格式稍有不同&#xff0c;如下所示&#xff1a; { action: { metadata }}\n { request body }\n { action: { metadata }}\n { request body …

智慧医疗包括哪些方面?智慧医疗发展前景如何?

近年来&#xff0c;随着云计算、物联网&#xff08;internet of things&#xff0c;IOT&#xff09;、移动互联网、大数据、人工智能&#xff08;artificial intelligence&#xff0c;AI&#xff09;、5G网络、区块链等新一代信息技术的逐步成熟和广泛应用&#xff0c;信息化已…