PTA 基础编程题目集 -函数12题



4-1 简单输出整数   (10分)

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

4-2 多项式求值   (15分)

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

4-3 简单求和   (10分)

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

4-4 求自定类型元素的平均   (10分)

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

4-5 求自定类型元素的最大值   (10分)

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

}

4-6 求单链表结点的阶乘和   (15分)

int fun(int n)
{
    if(n==0 || n==1)
        return 1;
    else
        return n*fun(n-1);
}
int FactorialSum( List L )
{
    int sum = 0;
    while(L!=NULL){
        int m = fun(L->Data);
        sum += m;
        L = L->Next;
    }
    return sum;
}

4-7 统计某类完全平方数   (20分)

int IsTheNumber ( const int N )
{
    int M=N;
    double m=sqrt(N);
    int m1=sqrt(N),a[10]= {0},i,j,c=0;
    if(m>m1) return 0;
    else
    {
        while(M>0)
        {
            j=M%10;
            a[j]++;
            M=M/10;
        }
        for(i=0; i<10; i++)
        {
            if(a[i]>1) c=1;
            if(c==1) break;

        }
        if(c==1) return 1;
        else return 0;
    }
}

4-8 简单阶乘计算   (10分)

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

4-9 统计个位数字   (15分)

int Count_Digit ( const int N, const int D )
{
    int i,num=0,M;
    if(N>=0) M=N;
    else M=-N;
    if(M==0)
    {
        if(D==0) return 1;
        else return 0;
    }
    else
    {
        while(M>0)
        {
            i=M%10;
            if(i==D) num++;
            M=M/10;
        }
    }
    return num;
}

4-10 阶乘计算升级版   (20分)

void Print_Factorial( const int N )
{
    int i,j,f[3200]= {0};
    f[0] = 1;
    if(N<0) printf("Invalid input");
    else
    {
        for(i=2; i<=N; i++)
        {
            int c = 0;
            for(j=0; j<3200; j++)
            {
                int s = f[j]*i+c;
                f[j]=s%10;
                c = s/10;
            }
        }
        for(j = 3199; j >= 0; j--)
        {
            if(f[j]!=0) break;
        }
        for(i=j; i>=0; i--)
        {
            printf("%d",f[i]);
        }
    }
}

4-11 求自定类型元素序列的中位数   (25分)

void mergearray(ElementType A[],int first,int mid,int last,ElementType temp[])
{
	int i=first,j=mid+1,m=mid,n=last,k=0;
	while(i<=m&&j<=n){
		if(A[i]<=A[j]){
			temp[k++]=A[i++];
		}
		else{
			temp[k++]=A[j++];
		}
	}
	while(i<=m){
		temp[k++]=A[i++];
	}
	while(j<=n){
		temp[k++]=A[j++];
	}
	for(i=0;i<k;i++){
		A[first+i]=temp[i];
	}
}
void mergesort(ElementType A[],int first,int last,ElementType temp[])
{
	if(first<last){
		int mid=(first+last)/2;
		mergesort(A,first,mid,temp);
		mergesort(A,mid+1,last,temp);
		mergearray(A,first,mid,last,temp);
	}
}
ElementType Median( ElementType A[], int N )
{
	ElementType p[MAXN];
	mergesort(A,0,N-1,p);

	return A[N/2];
}

4-12 判断奇偶性   (10分)

int even( int n )
{
    if(n%2==0) return 1;
    else return 0;
}
时间: 2024-11-05 03:06:40

PTA 基础编程题目集 -函数12题的相关文章

PTA基础编程题目集6-3简单求和 (函数题)

6-3 简单求和 (10 分) 本题要求实现一个函数,求给定的N个整数的和. 函数接口定义: int Sum(int List[],int N) 其中给定整数存放在数组List[]中,正整数N是数组元素个数.该函数须返回N个List[]元素的和. 裁判测试程序样例: #include <stdio.h> #define MAXN 10 int Sum ( int List[], int N ); int main (){ int List[MAXN], N, i; scanf("%d

PTA基础编程题目集6-7 统计某类完全平方数 (函数题)

本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144.676等. 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数.如果N满足条件,则该函数必须返回1,否则返回0. 裁判测试程序样例: #include <stdio.h> #include <math.h> int IsTheNumber ( const int N ); int main() { int n1, n2, i,

PTA基础编程题目集——爬动的蠕虫

原题链接https://pintia.cn/problem-sets/14/problems/797 这题一开始考虑时犯了一些错误,一开始是这样考虑的,按题目的意思,每2分钟蠕虫爬行的距离是(U-D)寸.那么平均每分钟爬行的距离是(U-D+1)/2寸.然后对照样例数据N=12,U=3,D=1算出需要8分钟爬完,当然这个结果是错的.调整一下思路,假设时间为t,爬行距离为s.当t=0时,s=0:当t=1时,s=U:当t=2时,s=U-D:当t=3时,s=U-D+U:当t=4时,S=U-D+U-D:.

PTA基础编程题目集7-1厘米换算英尺英寸

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048.现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸. 输入格式: 输入在一行中给出1个正整数,单位是厘米. 输出格式: 在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开. 输入样例: 170 输出样例: 5 6 1 #include <stdio.h> 2 int main(int argc, char const *arg

PTA基础编程题目集(四)

直接插入排序,希尔排序 求大数阶乘: // 1000 的阶乘 2568 位 #include <stdio.h> int a[3000]; void show(int k) { int i=0; printf("位数 %d 位\n",k); for (i=k-1; i>=0; i--) { printf("%d",a[i]); } } int fanc(int n) { int w=0; int i=0, j=0; int t=n; int k=0

Python基础编程 内置函数

内置函数 内置函数(一定记住并且精通) print()屏幕输出 int():pass str():pass bool():pass set(): pass list() 将一个可迭代对象转换成列表 tuple() 将一个可迭代对象转换成元组 dict() 通过相应的方式创建字典. # 创建字典的几种方式 #直接创建 dic = {1: 2} #字典推导式 print({i: 1 for i in range(3)}) dict() #dict创建 dic = dict(one=1, two=2,

大数据学习初体验:Linux学习+Shell基础编程+hadoop集群部署

距离上次博客时间已经9天,简单记录下这几天的学习过程 2020-02-15 10:38:47 一.Linux学习 关于Linux命令,我在之前就已经学过一部分了,所以这段时间的linux学习更多的是去学习Linux系统的安装以及相关配置多一些,命令会一些比较常用的就够了,下面记录下安装配置Linux系统时的注意事项. 这里配置的虚拟机的内存为4g 使用的 CentOS-6.5-x86_64-minimal.iso 映射文件 在进入linux系统中时,需要将虚拟机的主机名修改成自己想要的名字,还要

java基础编程题

java基础编程题 1.打印出如下图案 1 public class Prog19{ 2 public static void main(String[] args){ 3 int n = 5; 4 printStar(n); 5 } 6 7 //打印星星 8 private static void printStar(int n){ 9 //打印上半部分 10 for(int i=0;i<n;i++){ 11 for(int j=0;j<2*n;j++){ 12 if(j<n-i) 1

PTA数据结构与算法题目集(中文) 7-14

PTA数据结构与算法题目集(中文)  7-14 7-14 电话聊天狂人 (25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔. 输出格式: 在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔.如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数. 输入样例: 4 130057