PTA基础编程题目集
-
- 前言
- 6-1 简单输出整数
- 6-2 多项式求值
- 6-3 简单求和
- 6-4 求自定类型元素的平均
- 6-5 求自定类型元素的最大值
- 6-6 求单链表结点的阶乘和
- 6-7 统计某类完全平方数
- 6-8 简单阶乘计算
- 6-9 统计个位数字
- 6-10 阶乘计算升级版
- 6-11 求自定类型元素序列的中位数
- 6-12 判断奇偶性
- 6-13 折半查找
- 7-1 厘米换算英尺英寸
- 7-2 然后是几点
- 7-3 逆序的三位数
- 7-4 BCD解密
- 7-5 表格输出
- 7-6 混合类型数据格式化输入
- 7-7 12-24小时制
- 7-8 超速判断
- 7-9 用天平找小球
- 7-10 计算工资
- 7-11 分段计算居民水费
- 7-12 两个数的简单计算器
- 7-13 日K蜡烛图
- 7-14 求整数段和
- 7-15 计算圆周率
- 7-16 求符合给定条件的整数集
- 7-17 爬动的蠕虫
- 7-18 二分法求多项式单根
- 7-19 支票面额
- 7-20 打印九九口诀表
- 7-21 求特殊方程的正整数解
- 7-22 龟兔赛跑
- 7-23 币值转换
- 7-24 约分最简分式
- 7-25 念数字
- 7-26 单词长度
- 7-27 冒泡法排序
- 7-28 猴子选大王
- 7-29 删除字符串中的子串
- 7-30 字符串的冒泡排序
- 7-31 字符串循环左移
- 7-32 说反话-加强版
- 7-33 有理数加法
- 7-34 通讯录的录入与显示
- 7-35 有理数均值
- 7-36 复数四则运算
- 7-37 整数分解为若干项之和
- 7-38 数列求和-加强版
前言
在CSDN逛了也有将近两年了,学习到了许多大佬的知识分享,在这里分享观点,记录学习工作经验也是很令人欣慰的。一直想把自己脑子里的东西都整理下来,一直没有什么时间。这几天有空就尽量都肝完吧。作为本人第一篇博客,也算是为自己以后的道路留个纪念,到时候回头再看也好留下了自己的脚印。哎呀不酸了,直接上货。
6-1 简单输出整数
代码如下
void PrintN ( int N )
{
int i;
for(i=1;i<=N;i++)
printf("%d\n",i);
}
6-2 多项式求值
代码如下
double f(int n, double a[], double x)
{
double sum = 0;
int i;
for(i=0; i<=n; i++)
{
sum += a[i]*pow(x,i);
}
return sum;
}
6-3 简单求和
代码如下
int Sum ( int List[], int N )
{
int i,sum;
sum=0;
for(i=0;i<N;i++)
sum=sum+List[i];
return sum;
}
6-4 求自定类型元素的平均
代码如下
ElementType Average( ElementType S[], int N )
{
int i;
ElementType AVG=0;
for(i=0;i<N;i++)
{
AVG=AVG+S[i];
}
return AVG/N;
}
6-5 求自定类型元素的最大值
代码如下
ElementType Max( ElementType S[], int N )
{
int i;
ElementType MAX=S[0];
for(i=1;i<N;i++)
{
if(MAX<S[i])
MAX=S[i];
}
return MAX;
}
6-6 求单链表结点的阶乘和
代码如下
int FactorialSum(List L)
{
int i, Num;
int Sum = 0;
while (L != NULL) //遍历整个链表
{
Num = 1;
for (i = 1; i <= L->Data; i++)//从每个节点读取数据计
{
Num = Num*i; //算每个节点数据的阶乘
}
Sum = Sum + Num; //对节点数据求和
L = L->Next;
}
return Sum; //返回单链表结点的阶乘和
}
6-7 统计某类完全平方数
代码如下
int IsTheNumber ( const int N ){
int n,m,temp;
m=N;
n = (int)sqrt(N);
if(n*n==m){
int num[10]= {0};//这里应该定义num的长度为10,因为传入的整数的每位数可能是0~~9,而不是传入数的位数。
while(m>0){//遍历N的每一位上的数字,在相应的数组中自加 如果有一个数组元素等于2 说明至少有2个位上的数相同
temp = m%10;
for(int i=0 ;i<=9;i++){
if(temp==i){
num[i]++;
if(num[i]==2){
return 1;
}
}
}
m/=10;
}
return 0;
}
return 0;
}
6-8 简单阶乘计算
代码如下
int Factorial( const int N )
{
int i,j=1;
if(N>=0)
{
for(i=1;i<=N;i++)
{
j=j*i;
}
return j;
}
else
return 0;
}
6-9 统计个位数字
代码如下
int Count_Digit ( const int N, const int D )
{
int i,j,b=0;
i=N;
if(i<0)
i=-i;
do{
j=i%10;
if(j==D)
b++;
i/=10;
}
while(i>0);
return b;
}
6-10 阶乘计算升级版
代码如下
void Print_Factorial ( const int N )
{
if(N<0)
{
puts("Invalid input");
return;
}
int num[3001]={0}; // 确保可以存储 N! 位数
int k,n;
k=1; // 位数
n=0; // 进位
num[0]=1; // init result 1
int tmp; // 阶乘的任一元素与临时结果的某位的乘积结果
// 最基本的乘法运算思想,将临时结果的每位与阶乘元素相乘
for(int i=2;i<=N;i++) // 开始阶乘,阶乘元素从 2 开始
{
for(int j=0;j<k;j++)
{
tmp=num[j]*i+n; // 相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)
num[j]=tmp%10; // 更新临时结果的该位上的信息
n=tmp/10; // 看是否有进位
}
while(n) // 如果有进位
{
num[k++]=n%10; // 新加一位,添加信息。位数+1
n/=10; // 看还能不能进位
}
}
for(int i=k-1;i>=0;i--)
{
printf("%d",num[i]);
}
puts("");
}
6-11 求自定类型元素序列的中位数
代码如下
ElementType Median( ElementType A[], int N )
{
ElementType temp;
for(int gap= N/2; gap> 0; gap= gap/ 2) //gap是每次排序分组的间隔,每次间隔缩小两倍(其他缩小办法也可以)
{
for(int i= gap; i< N; i++)//相当于在同一组内采用直接插入排序
{
for(int j= i- gap; j>= 0 && A[j]> A[j+ gap]; j= j- gap)//如果同一组内前一个元素大于相 gap个位置的元素,则两者交换位置
{
temp= A[j];
A[j]= A[j+ gap];
A[j+ gap]= temp;
}
}
}
return A[N/ 2];//返回中间元素
}
6-12 判断奇偶性
代码如下
int even( int n )
{
if(n%2==0)
return 1;
else
return 0;
}
6-13 折半查找
代码如下
int Search_Bin(SSTable T, KeyType k){
int head = 1 , tail = T.length ;
while( head <= tail){
int mid = (head+tail)/2 ;
if( k == T.R[mid].key ) return mid ;
else if ( k < T.R[mid].key ){
tail = mid -1 ;
}
else{
head = mid +1 ;
}
}
return 0;
}
7-1 厘米换算英尺英寸
代码如下
#include <stdio.h>
int main()
{
int foot,inch;
int meter;
scanf("%d",&meter);
foot=meter/30.48;
inch=(meter-30.48*foot)/30.48*12;
printf("%d %d\n",foot,inch);
return 0;
}
7-2 然后是几点
代码如下
#include<stdio.h>
int main()
{
int a,b,h,f,z,x,e,y;
scanf("%d %d",&a,&b);
h=a/100;
y=h*60;
f=a%100;
z=y+f+b;
e=z/60;
x=z%60;
printf("%d%02d",e,x);
return 0;
}
7-3 逆序的三位数
代码如下
#include<stdio.h>
int main()
{
int x,a,b,c;
scanf("%d",&x);
a=x/100;
b=x/10-10*a;
c=x%10;
if(c==0&&b!=0)
printf("%d%d",b,a);
else
if(c==0&&b==0)
printf("%d",a);
else
printf("%d%d%d",c,b,a);
return 0;
}
7-4 BCD解密
代码如下
#include<stdio.h>
int main()
{
int a,b,c,d;
scanf("%d",&a);
b=a%16;
c=a/16;