PTA基础题考点汇总

2024-06-24 09:52
文章标签 基础 汇总 考点 pta

本文主要是介绍PTA基础题考点汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一:字符串(数组)的逆序,栈的方法

**字符串数组的逆序 : **

标准容器库的知识:定义stack容器于字符串:stackv; string s;

//这里用到了c++中stl(标准容器库的知识)stack;
//用的时候要声明头文件;定义stack容器和string;stack<string>v; string s;
了解几个函数,
v.top( );//让最后一个元素出栈;(v是定义的变量名)
v.pop( );  //删除栈顶元素;
v.empty();//判断栈是否为空 ,返回一个整数...是空返回1;不为空返回0;
v.push( s);//把元素放入栈中;// 实现字符串数组的逆向输出;
while(cin> >s )v.push(s);//把元素放入栈中;
//我就想问这你这for语句什么时候停z
cout<<v.top();v.pop();
while(!v.empty){cout<<" "<<v.top(); v.pop();}//输出栈中内容,这里内容是字符串.

注意:若输出用printf,方法如下”

//如果想⽤printf输出string,得加⼀ 个(字符串变量名).c_str() //printf("%s",s.c_str());/*如何在Dev-Cpp中使⽤C++11中的函数:
如果想要在 Dev-Cpp ⾥⾯使⽤C++11特性的函数,⽐如刷算法中常⽤的stoi 、 to_string 、 unordered_map 、 unordered_set 、 auto 这些,需要在设置⾥⾯让dev⽀持C++11。
~需要这样做~
在菜单栏中⼯具-编译选项-编译器-编译时加⼊ -std=c++11 这句命令即可~
*/

二:f(x)=∑(i=0->i=n)=(a[ix^i) 在x点的值。

//此处x是一个常数
/*
假如n=2,x=2, f(x)=a[0]x(2^0)+ a[1]x(2^1)+a[2]x(2^2);
从上式子中我们看到a【2】的2成了2次,a【1】一次,a【0】零次。
此时式子可以用下面的循环表式:for(int i = 2; i > =0; i--){add = add * 2 + a[i];}
*/ 
double f( int n, double a[], double x )
{double add = 0;for(int i = n; i > -1; i--){add = add * x + a[i];}return add;
}

三:统计给定数中某个数的个数

这种题首先要得到数字的每一位(除10和余10的语句),利用while循环来判定所给的数是否和题目中所给定的相同,相同就把它放到数组中,所以定义一个数组 a【10】来统计0-9出现的次数。

//例如a=4589145;要统计某位数 **或者** 统计出现最多的次的那位数;int arr[10]={0};
int m
int n=4589145;//给定的数字;while(n)
{
m=n%10;
arr[m]++;
n/=10;
}
//如果要求给定的数字N;就按照要求输出 arr【N】;不是自定义函数就用printf输出,是的话一般return a【N】;
//如果要返回出现最多的就循环遍历查找最大的那个数字,如下:int  max=0int temp;
for(int i=0;i<10;i++)
{if(a[max]<a[i]){temp=a[i];a[i]=a[max];a[max]=a[i]];}
}
//最后按要求输出。

四:阶乘运算

不在整数范围内的比较难,多看看吧!

//阶乘一般运算( 在整数范围内的);
//给定一个数(如n=10),然后求阶乘,用for循环解决
int n=10;//给定的数;
int sum=1;//求和喽;for(int i=1;i<10;i++){sum=sum*(i+1);}
//还有就是有种不在整数范围内的,这种需要用到数组;
//例如计算1000的阶乘
int num=1000;//给定的数
int  k=1; // 位数
int   n=0; // 进位
int ar[3000]=0;ar[0]=1;//给定足够大的数组,使能够存放下结果;
int temp;//暂时计数;
int i,j;//循环遍历用到
for( i=2;i<=num;i++)
{for(j=0;j<k;j++){temp=ar[j]*i+n; // 相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)ar[j]=temp%10; // 更新临时结果的该位上的信息n=temp/10; // 看是否有进位}while(n)  //看是否进位{ar[k++]=n%10; // 新加一位,添加信息。位数+1n/=10; /  }
}

五:计算中位数

//数组里的中位数
//考题好像不分奇数偶数   如果是奇数个,像ar【5】,就返回ar【2】
//					如果偶数个,像ar【4】,就返回那个叫大的ar【2】
//及返回的是ar【n/2】;
//这里考察的是排序算法(这个例题给了个希尔排序),主要考察时间复杂度,所以像冒泡,选择,直接排序都通过不了;
int N;//给定
for(d = N/2; d >= 1; d/=2){for(i=d;i < N; i++){for(j=i-d;j>=0&&A[j]>A[j+d];j-=d){temp = A[j];A[j] = A[j+d];A[j+d] = temp;  }}}

六 :计算a+aa+aaa+…+

#include<stdio.h>
#define N 100001
int s[N]= {0};int main()
{int a,n;int i,j,index,t;scanf("%d %d",&a,&n);index=n;if(n==0)printf("0");else{for(i=0,j=n; i<n; i++,j--){t=s[i]+j*a;s[i]=t%10;if(t/10)s[i+1]=t/10;}}if(s[n]>0)index=n+1;for(i=index-1; i>=0; i--)printf("%d",s[i]);return 0;}

七:排序

冒泡排序

for(int i=0;i<n-1;i++)for(int j=0;j<n-i-1;j++)if(a[j]>a[j+1])int temp;{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}

选择排序

for(int i=0;i<n-1;i++)for(int j=i+1;j<n;j++)if(a[i]>a[j+1])int temp;{temp=a[j];a[j]=a[i];a[i]=temp;}

直接排序

 for(int i=1;i<n;i++)int key=a[i];j=i-1;while(j>=0&&a[j]>key){a[j+1]=a[j];j--;     } a[j+1]=key;

希尔排序

for(d = N/2; d >= 1; d/=2){for(i=d;i < N; i++){for(j=i-d;j>=0&&A[j]>A[j+d];j-=d){temp = A[j];A[j] = A[j+d];A[j+d] = temp;  }}}

八:查找

折半查找

binarySearch(int a[], int n, int key){int low = 0;      //low表示指向最小的元素int high = n - 1; //high表示指向最大的元素while(low<= high){int mid = (low + high)/2;//mid表示指向最中间的元素(奇数指向最中间,偶数指向较大的那个数字)int midVal = a[mid]; //最中间的那个值;//比较最中间的值与目标值的大小,如果key大说明要让low修改if(midVal<key)    low = mid + 1;else if(midVal>key)high = mid - 1;elsereturn mid;//找到该元素}return -1;//没有找到;
}

小知识

1cm=30.48foot(英尺)

1foot=12inch(英寸)

圆周率

给定精度k,计算圆周率的值:

在这里插入图片描述

//计算圆周率
#include<stdio.h>
int main()
{
float temp=1;//temp用于记录每项式的值;temp=n/d;
float n=1,d=3,sum=1;//n表示分子的值, d表示分母的值, sum表示和;
float i=2, k;//提供 给定的精度;
scanf("%f",&k);//没有&都运行没结果了.........
while (temp>=k){temp=n/d;sum+=temp;n=n*i;//下一项分子d=d*(2*i+1);//下一项分母;i++ ;}printf("%.6f",sum*2);return 0;}

最大公约数

//1.
int a,b;
int temp
scanf("%d %d",&a,&b);
if(a>b)
{temp=a;a=b;b=temp;
}
for(i=a;i>0;i--)
{if( a%i==0&&b%i==0) break;
}
printf("%d",i);
//2.
int a,b;
int temp=1;
scanf("%d %d",&a,&b);
if(a>b)
{temp=a;a=b;b=temp;
}
while(temp!=0)
{temp=b%a;b=a;a=temp;
}
cout<<b;

素数

int i,n;
//1.0
for(i=2;i<n;i++)
{if(n%i==0)break;
}
if(i=n)cout<<"sushu";
else   cout<<"bushi";
//2.0
for(i=2;i<=sqrt(n);i++)
{if(n%i==0)break;
}
if(i>sqrt(n)) cout<<"sushu";
else cout<<"bushi"

c++保留小数方法

这篇关于PTA基础题考点汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1089819

相关文章

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

PTA求一批整数中出现最多的个位数字

作者 徐镜春 单位 浙江大学 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

c++基础版

c++基础版 Windows环境搭建第一个C++程序c++程序运行原理注释常亮字面常亮符号常亮 变量数据类型整型实型常量类型确定char类型字符串布尔类型 控制台输入随机数产生枚举定义数组数组便利 指针基础野指针空指针指针运算动态内存分配 结构体结构体默认值结构体数组结构体指针结构体指针数组函数无返回值函数和void类型地址传递函数传递数组 引用函数引用传参返回指针的正确写法函数返回数组

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(