PTA-基础编程题目集(函数题)

简介: PTA-基础编程题目集(函数题)

6-1 简单输出整数

题目链接

1.png

void PrintN(int N)
{
    int i=0;
    for(i=1;i<=N;i++)
    {
        printf("%d\n",i);
    }
}

6-2 多项式求值(重点掌握)

题目链接

2.png

double f( int n, double a[], double x )
{
    double sum=0;
    double x0=1.0;
    int i=0;
    for(i=0;i<=n;i++)
    {
        if(a[i])
        {
            sum+=x0*a[i];
            x0*=x;
        }
    }
    return sum;
}

6-3 简单求和

题目链接

3.png

int Sum(int list[],int n)
{
    int sum=0;
    int i=0;
    for(i=0;i<n;i++)
    {
        sum+=list[i];
    }
    return sum;
}

6-4 求自定类型元素的平均

题目链接

4.png

ElementType Average( ElementType S[], int N )
{
    ElementType sum=0;
    ElementType ave=0;
    int i=0;
    for(i=0;i<N;i++)
    {
        sum+=S[i];
    }
    ave=sum/N;
    return ave;
}

6-5 求自定类型元素的最大值

题目链接

5.png

ElementType Max( ElementType S[], int N )
{
    ElementType max=S[0];
    int i=0;
    for(i=1;i<N;i++)
    {
        if(S[i]>max)
        {
            max=S[i];
        }
    }
    return max;
}

6-6 求单链表结点的阶乘和

后续补充


6-7 统计某类完全平方数(重点掌握)

题目链接

7.png

int IsTheNumber ( const int N )
{
    int m=(int)(sqrt)(N);
    int n=m*m;
    if(n==N)
    {
        int num[10]={0};
        int i=0;
        while(n)
        {
            for(i=0;i<=9;i++)
            {
                if(n%10==i)
                {
                    num[i]+=1;
                }
                if(num[i]==2)
                {
                    return 1;
                }
            }
            n/=10;
        }
    }
    return 0;
}

6-8 简单阶乘计算

题目链接

8.png

方法一(循环):

int Factorial( const int N )
{
    if(N<0)
    {
        return 0;
    }
    else if(N==0)
    {
        return 1;
    }
    int i=0;
    int ret=1;
    for(i=1;i<=N;i++)
    {
        ret*=i;
    }
    return ret;
}

方法二(递归):

int Factorial( const int N )
{
    if(N<0)
    {
        return 0;
    }
    else if(N==0)
    {
        return 1;
    }
    return N*Factorial(N-1);
}

6-9 统计个位数字

题目链接

9.png

方法一:(此方法是我自己写的,虽然有点混乱,但好在结果正确)

int Count_Digit ( const int N, const int D )
{
    if(N==0)
    {
        return 1;
    }
    int tmp1=N;
    if(tmp1<0)
    {
        tmp1=-tmp1;
    }
    int tmp2=tmp1;
    int tmp3=tmp1;
    int i=0;
    int k=0;//k表示为几位数
    while(tmp2)
    {
        k++;
        tmp2/=10;
    }
    int count=0;
    for(i=0;i<k;i++)
    {
        if(tmp3%10==D)
        {
            count++;
        }
        tmp3/=10;
    }
    return count;
}


6-10 阶乘计算升级版(重点掌握)

题目链接

10.png

void Print_Factorial(const int N)
{
    char a[3000];
    int alength = 1;
    a[0] = 1;
    if (N < 0)
    {
        printf("Invalid input");
        return;
    }
    int i = 2;
    for (i = 2; i <= N; i++)
    {
        int z = 0;
        int k = 0;
        for (k = 0; k < alength; k++)
        {
            int t = i * a[k] + z;
            a[k] = t % 10;
            z = t / 10;
        }
        while (z)
        {
            a[alength++] = z % 10;
            z /= 10;
        }
    }
    for (i = alength - 1; i >= 0; i--)
    {
        printf("%d", a[i]);
    }
}

6-11 求自定类型元素序列的中位数(重点掌握)

题目链接

11.png

ElementType Median(ElementType A[], int N)
{
    ElementType i = 0;
    for (i = 0; i < N - 1; i++)
    {
        int j = 0;
        for (j = 0; j < N - 1 - i; j++)
        {
            if (A[j] > A[j + 1])
            {
                ElementType tmp = 0;
                tmp = A[j];
                A[j] = A[j + 1];
                A[j + 1] = tmp;
            }
        }
    }
    ElementType ret = 0;
    if (N % 2 == 0)
    {
        return  ret = A[(N + 1) / 2];
    }
    else
    {
        return ret = A[(N + 1) / 2 - 1];
    } 
}//超时但结果正确

11.1.png

上述代码写的时候结果正确,但是很遗憾超时了😂不过骗点分还是没问题的,哈哈😄。

下面是我找到的另外一种做法:


ElementType Median(ElementType A[], int N)
{
    int k = 0;
    ElementType tmp = 0;
    int i = 0;
    for (i = N / 2; i > 0; i = i / 2)
    {
        int j = 0;
        for (j = i; j < N; j++)
        {
            tmp = A[j];//将找到的中位数放到中间变量中去
            for (k = j; k >= i; k = k - i)
            {
                if (tmp < A[k - i])
                {
                    A[k] = A[k - i];
                }
                else
                {
                    break;
                }
            }
            A[k] = tmp;
        }
    }
    return A[N / 2];
}


6-12 判断奇偶性

题目链接


12.png

int even( int n )
{
    if(n%2==0)
        return 1;
    return 0;
}

6-13 折半查找

后续补充


总结

6-2 多项式求值中多项式的表示方法

多项式求值中多项式即:

13.png

这里我想说的是x的i次方该如何表示,其中让我感到巧妙的是这一部分:x0*=x;。


ElementType和ElemType

Element Type:typedef int ElementType;定义Element Type为int类型

ElemType:#define ElemType int;定义ElemType为int类型

这两个的作用都是一样的,没有区别,只不过定义的方式不同而已:

对于**typedef int ElementType;是重命名

对于#define ElemType int;是宏定义**


由于笔者还没怎么接触到数据结构,所以有些更好的题解不能进行没有写到,后续再给大家补充,另外6-6和6-13也是类似情况,请谅解,我会尽力及时补充。蟹蟹各位。😀

目录
打赏
0
0
0
0
18
分享
相关文章
现代数据库技术的发展与应用
本文将探讨现代数据库技术的发展趋势和广泛应用领域。我们将从传统关系型数据库开始,介绍NoSQL数据库、分布式数据库以及最新的图数据库等技术,探讨它们的特点和优势。此外,我们还将讨论数据库在大数据、云计算和物联网等领域中的应用案例,并展望未来数据库技术的发展方向。
服务器版Rstudio-server初体验丨随时随地云端处理数据,不再担心电脑崩盘重启了!
服务器版Rstudio-server初体验丨随时随地云端处理数据,不再担心电脑崩盘重启了!
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
329 7
使用Java和XPath在XML文档中精准定位数据
【Java基础】 - 常用注解@SuppressWarings
【Java基础】 - 常用注解@SuppressWarings
210 1
React 树形组件 Tree View
本文从零开始构建了一个简单的React树形组件,介绍了环境准备、项目创建、基础组件构建等步骤,并探讨了常见问题及解决方案,包括层次嵌套过深、状态管理复杂、事件处理不当和样式问题,帮助读者在实际项目中更好地应用树形组件。
412 4
软件项目管理:从计划到成功的实践
【8月更文第20天】在快速变化的IT行业中,高效的软件项目管理是确保项目成功的关键。本文将探讨软件项目管理中的几个核心领域:项目计划与估算、风险管理、人员配置与团队建设以及进度控制与成本管理,并通过具体案例加以说明。
990 2
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)2
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)
2326 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问