这是第一个题的题目,哈哈哈,写了两天终于知道原来pta上交作业只写自定义函数就对啦
自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。本题要求对给定的非负整数n,求该级数的前n项和。
输入格式:
输入第一行中给出非负整数n(≤1000)。
输出格式:
在一行中输出部分和的值,保留小数点后八位。
函数接口定义:
在这里描述函数接口。例如: double fun(int n) //递归算法;
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如: #include<stdio.h> double fun(int n) //递归算法; int main() { int n; scanf("%d",&n); int i; double sum=1.0; for(i=1;i<=n;i++) { sum+=1.0/fun(i); } printf("%.8lf\n",sum); } /* 请在这里填写答案 */
#include<stdio.h>
double fun(int a)
{
double f;
if(a==1) return 1.0;
else
{
f=fun(a-1)*a;
return f;
}
}
这里必须用递归算法,简单说就是在自己写的这个函数里面再次使用这个函数本身
来看看第二个题目吧
本题要求实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。
函数接口定义:
在这里描述函数接口。例如: int even( int n ); int OddSum( int List[], int N );
其中函数even将根据用户传入的参数n的奇偶性返回相应值:当n为偶数时返回1,否则返回0。函数OddSum负责计算并返回传入的N个整数List[]中所有奇数的和。
裁判测试程序样例:
#include <stdio.h> #define MAXN 10 int even( int n ); int OddSum( int List[], int N ); int main() { int List[MAXN], N, i; scanf("%d", &N); printf("Sum of ( "); for ( i=0; i<N; i++ ) { scanf("%d", &List[i]); if ( even(List[i])==0 ) printf("%d ", List[i]); } printf(") = %d\n", OddSum(List, N)); return 0; } /* 你的代码将被嵌在这里 */
#include<stdio.h>
int even(int n)
{
if(n%2!=0)
return 0;
else
return 1;
}
int OddSum(int List[],int N)
{
int c,i,s=0;
for(i=0;i<N;i++)
{
c=even(List[i]);
if(c==0)
s+=List[i];
}
N=s;
return N;
}
第二个题明显比第一个题看着复杂些,遇见这种就得看清楚题目所要求的每个函数的功能,然后一定一定要仔细,把函数功能区分开,总之,多看题目要求,会少走很多弯路;这两个自定义函数功能也比较简单,一个用来判断奇数偶数,一个用来求和,注意一定要有返回值,因为这个自定义函数被调用时是以表达式形式出现的。