PTAC语言理论课5函数.docx
- 文档编号:9850055
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:34
- 大小:82.29KB
PTAC语言理论课5函数.docx
《PTAC语言理论课5函数.docx》由会员分享,可在线阅读,更多相关《PTAC语言理论课5函数.docx(34页珍藏版)》请在冰豆网上搜索。
PTAC语言理论课5函数
C理论5-函数
标号
标题
分数
通过数
提交数
通过率
6-1
找两个数中最大者
10
180
502
0.36
6-2
简单实现x的n次方
10
185
524
0.35
6-3
弹球距离
10
178
633
0.28
6-4
使用函数求最大公约数
10
180
391
0.46
6-5
使用函数输出一个整数的逆序数
10
176
400
0.44
6-6
使用函数求奇数和
10
166
480
0.35
6-7
使用函数求特殊a串数列和
10
164
371
0.44
6-8
使用函数求素数和
10
202
605
0.33
6-9
统计各位数字之和是5的数
10
198
768
0.26
6-10
简单求和
10
148
235
0.63
6-11
多项式求值
10
172
401
0.43
6-12
移动字母
10
194
504
0.38
6-13
在数组中查找指定元素
10
161
441
0.37
6-14
删除字符
10
208
694
0.30
6-15
分类统计各类字符个数
10
174
450
0.39
6-16
函数实现字符串逆序
10
199
446
0.45
6-17
长整数转化成16进制字符串
10
184
500
0.37
6-18
递归计算Ackermenn函数
10
154
252
0.61
6-19
递归计算P函数
10
148
293
0.51
6-20
递归求阶乘和
10
160
309
0.52
6-1 找两个数中最大者 (10分)
本题要求对两个整数a和b,输出其中较大的数。
函数接口定义:
intmax(inta,intb);
其中a和b是用户传入的参数,函数返回的是两者中较大的数。
裁判测试程序样例:
#include
intmax(inta,intb);
intmain(){
inta,b;
scanf("%d%d",&a,&b);
printf("max=%d\n",max(a,b));
return0;
}
/*你的代码将被嵌在这里*/
输入样例:
-58
输出样例:
max=8
intmax(inta,intb)
{
intm;
if(a>b)
m=a;
else{
m=b;
}
returnm;
}
6-2 简单实现x的n次方 (10分)
本题要求实现一个计算xn(n≥0)的函数。
函数接口定义:
doublemypow(doublex,intn);
函数mypow应返回x的n次幂的值。
题目保证结果在双精度范围内。
裁判测试程序样例:
#include
doublemypow(doublex,intn);
intmain()
{
doublex;
intn;
scanf("%lf%d",&x,&n);
printf("%f\n",mypow(x,n));
return0;
}
/*你的代码将被嵌在这里*/
输入样例:
0.244
输出样例:
0.003318
doublemypow(doublex,intn)
{
inti;
doubleret=1;
for(i=1;i<=n;i++)
{
ret=ret*x;
}
returnret;
}
6-3 弹球距离 (10分)
设有一个球从高度为h米的地方落下,碰到地面后又弹到高度为原来p倍的位置,然后又落下,再弹起,再落下…。
请编写函数求初始高度为h的球下落后到基本停下来(高度小于给定阈值TOL)时在空中所经过的路程总和。
函数接口定义:
doubledist(doubleh,doublep);
其中h是球的初始高度,p是球弹起高度与弹起前落下高度的比值;函数dist要返回球下落后到基本停下来时在空中所经过的路程总和。
注意:
当弹起的高度小于裁判程序定义的常数TOL时,弹起的距离不计算在内。
裁判测试程序样例:
#include
doubledist(doubleh,doublep);
intmain()
{
doubleh,p,d;
scanf("%lf%lf",&h,&p);
d=dist(h,p);
printf("%.6f\n",d);
return0;
}
/*你的代码将被嵌在这里*/
输入样例:
1.00.4
输出样例:
2.319680
doubledist(doubleh,doublep){
//递归函数:
下落高度+弹起高度+后续路程
//递归出口:
下落高度+0+0
if(p*h returnh; else returnh+p*h+dist(p*h,p); } 6-4 使用函数求最大公约数 (10分) 本题要求实现一个计算两个数的最大公约数的简单函数。 函数接口定义: intgcd(intx,inty); 其中x和y是两个正整数,函数gcd应返回这两个数的最大公约数。 裁判测试程序样例: #include intgcd(intx,inty); intmain() { intx,y; scanf("%d%d",&x,&y); printf("%d\n",gcd(x,y)); return0; } /*你的代码将被嵌在这里*/ 输入样例: 3272 输出样例: 8 intgcd(intx,inty) { inti; for(i=x;i>=1;i--){ if(x%i==0&&y%i==0) break; } returni; } 6-5 使用函数输出一个整数的逆序数 (10分) 本题要求实现一个求整数的逆序数的简单函数。 函数接口定义: intreverse(intnumber); 其中函数reverse须返回用户传入的整型number的逆序数。 裁判测试程序样例: #include intreverse(intnumber); intmain() { intn; scanf("%d",&n); printf("%d\n",reverse(n)); return0; } /*你的代码将被嵌在这里*/ 输入样例: -12340 输出样例: -4321 intreverse(intn){ intflag=1,x,sum=0; if(n<0){ n=-n; flag=-1; } while(n>0){ x=n%10; sum=sum*10+x; n/=10; } sum*=flag; returnsum; } 6-6 使用函数求奇数和 (10分) 本题要求实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。 函数接口定义: inteven(intn);intOddSum(intList[],intN); 其中函数even将根据用户传入的参数n的奇偶性返回相应值: 当n为偶数时返回1,否则返回0。 函数OddSum负责计算并返回传入的N个整数List[]中所有奇数的和。 裁判测试程序样例: #include #defineMAXN10 inteven(intn);intOddSum(intList[],intN); intmain() { intList[MAXN],N,i; scanf("%d",&N); printf("Sumof("); for(i=0;i scanf("%d",&List[i]); if(even(List[i])==0) printf("%d",List[i]); } printf(")=%d\n",OddSum(List,N)); return0; } /*你的代码将被嵌在这里*/ 输入样例: 6 2-3788015 输出样例: Sumof(-3715)=19 inteven(intn) { if(n%2==0) return1; else return0; } intOddSum(intList[],intN) { intsum=0,i; for(i=0;i { if(even(List[i])==0) sum+=List[i]; } returnsum; } 6-7 使用函数求特殊a串数列和 (10分) 给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++⋯+aa⋯a(n个a)之和。 函数接口定义: intfn(inta,intn);intSumA(inta,intn); 其中函数fn须返回的是n个a组成的数字;SumA返回要求的和。 裁判测试程序样例: #include intfn(inta,intn);intSumA(inta,intn); intmain() { inta,n; scanf("%d%d",&a,&n); printf("fn(%d,%d)=%d\n",a,n,fn(a,n)); printf("s=%d\n",SumA(a,n)); return0; } /*你的代码将被嵌在这里*/ 输入样例: 23 输出样例: fn(2,3)=222 s=246 intfn(inta,intn) { inti,j; intret=a;//初始化正整数 for(i=1;i { inttmp=1;//tmp出循环自动销毁 //10^i for(j=1;j<=i;j++) { tmp*=10;//初始化10^1 } //ret ret+=a*tmp; } returnret; } intSumA(inta,intn) { inti; intsum=0; for(i=1;i<=n;i++) { sum+=fn(a,i); } returnsum; } 6-8 使用函数求素数和 (10分) 本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。 素数就是只能被1和自身整除的正整数。 注意: 1不是素数,2是素数。 函数接口定义: intprime(intp);intPrimeSum(intm,intn); 其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m, n]内所有素数的和。 题目保证用户传入的参数m≤n。 裁判测试程序样例: #include intprime(intp);intPrimeSum(intm,intn); intmain() { intm,n,p; scanf("%d%d",&m,&n); printf("Sumof("); for(p=m;p<=n;p++){ if(prime(p)! =0) printf("%d",p); } printf(")=%d\n",PrimeSum(m,n)); return0; } /*你的代码将被嵌在这里*/ 输入样例: -110 输出样例: Sumof(2357)=17 intprime(intp){ intret=1; if(p<=1) ret=0; for(inti=2;i if(p%i==0) ret=0; } returnret; } intPrimeSum(intm,intn){ intsum=0; for(;m<=n;m++){ if(prime(m)) sum+=m; } returnsum; } 6-9 统计各位数字之和是5的数 (10分) 本题要求实现两个函数: 一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。 函数接口定义: intis(intnumber);voidcount_sum(inta,intb); 函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。 函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。 最后按照格式 count=满足条件的整数个数,sum=这些整数的和 进行输出。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PTAC 语言 理论 函数
![提示](https://static.bdocx.com/images/bang_tan.gif)