PTA基础编程题目集

本文整理了6-7章PTA基础编程题目,涵盖整数输出、多项式求值、链表操作、数学计算等多个方面,通过代码实现解析解题思路。
摘要由CSDN通过智能技术生成

前言

在CSDN逛了也有将近两年了,学习到了许多大佬的知识分享,在这里分享观点,记录学习工作经验也是很令人欣慰的。一直想把自己脑子里的东西都整理下来,一直没有什么时间。这几天有空就尽量都肝完吧。作为本人第一篇博客,也算是为自己以后的道路留个纪念,到时候回头再看也好留下了自己的脚印。哎呀不酸了,直接上货。

6-1 简单输出整数

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;
PTA_基础编程答案_整章 包括但不限于如下 7-1 厘米换算英尺英寸 15 27785 103313 0.27 7-2 然后是几点 15 20063 78572 0.26 7-3 逆序的三位数 10 24732 62644 0.39 7-4 BCD解密 10 14066 23357 0.60 7-5 表格输出 5 15169 36439 0.42 7-6 混合类型数据格式化输入 5 15719 36076 0.44 7-7 12-24小时制 15 14687 51855 0.28 7-8 超速判断 10 15328 39238 0.39 7-9 用天平找小球 10 15145 33252 0.46 7-10 计算工资 15 14241 35238 0.40 7-11 分段计算居民水费 10 12907 35261 0.37 7-12 两个数的简单计算器 10 12912 33359 0.39 7-13 日K蜡烛图 15 9280 34024 0.27 7-14 求整数段和 15 11461 55664 0.21 7-15 计算圆周率 15 9826 33135 0.30 7-16 求符合给定条件的整数集 15 8986 21898 0.41 7-17 爬动的蠕虫 15 9739 24881 0.39 7-18 二分法求多项式单根 20 7282 31752 0.23 7-19 支票面额 15 7375 21837 0.34 7-20 打印九九口诀表 15 10325 35138 0.29 7-21 求特殊方程的正整数解 15 7799 22600 0.35 7-22 龟兔赛跑 20 7446 29142 0.26 7-23 币值转换 20 4333 18467 0.23 7-24 约分最简分式 15 6728 15335 0.44 7-25 念数字 15 6724 20180 0.33 7-26 单词长度 15 5648 37409 0.15 7-27 冒泡法排序 20 7255 24045 0.30 7-28 猴子选大王 20 6144 13327 0.46 7-29 删除字符串中的子串 20 4798 15074 0.32 7-30 字符串的冒泡排序 20 4752 14741 0.32 7-31 字符串循环左移 20 4527 13605 0.33 7-32 说反话-加强版 20 4030 25470 0.16 7-33 有理数加法 15 4476 10862 0.41 7-34 通讯录的录入与显示 10 4323 19524 0.22 7-35 有理数均值 20 3281 17202 0.19 7-36 复数四则运算 15 2530 10103 0.25 7-37 整数分解为若干项之和 20 2437 4673 0.52 7-38 数列求和-加强版 20 4692 35190 0.13 当前显示1 - 38项,共38项
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值