PTA函数答案Word下载.docx
- 文档编号:5608397
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:25
- 大小:19.67KB
PTA函数答案Word下载.docx
《PTA函数答案Word下载.docx》由会员分享,可在线阅读,更多相关《PTA函数答案Word下载.docx(25页珍藏版)》请在冰点文库上搜索。
k++)
sum+=List[k];
returnsum;
4-40
简单阶乘计算
intFactorial(constintN)
if(N<
0)
return0;
elseif(N==0)
return1;
else
for(i=1;
s*=i;
returns;
4-41
统计个位数字
(15分)
intCount_Digit(constintN,constintD)
intx;
intcount=0;
inttemp=0;
x=N;
if(x<
0)
x=-x;
do
{
temp=x%10;
if(temp==D)
count++;
x=x/10;
}
while(x>
0);
returncount;
}
4-43
找两个数中最大者
intmax(inta,intb)
intmax;
if(a>
=b)
max=a;
else
max=b;
returnmax;
4-44
数字金字塔
voidpyramid(intn)
inti,j,space;
i<
=n;
{
space=n-i;
for(j=0;
j<
space;
j++)
putchar('
'
);
i;
printf("
%-2d"
putchar('
\n'
4-45
判断奇偶性
inteven(intn)
if(n<
0)
n=-n;
if(n%2==0)
4-46
使用函数求奇数和
intOddSum(intList[],intN)
intoddsum=0;
if(even(List[k])==0)
oddsum+=List[k];
returnoddsum;
4-47
使用函数计算两点间的距离
doubledist(doublex1,doubley1,doublex2,doubley2)
doubleDist;
Dist=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
returnDist;
4-48
使用函数求素数和
(20分)
intprime(intp)
inti,j;
intcount=0;
for(j=2;
j<
p;
j++)
if(p%j==0)
{
count++;
}
if(count==0&
&
p>
0&
p!
=1)
}else{
intPrimeSum(intm,intn)
inti,sum=0;
i<
i++)
if(prime(i)==1)
sum=sum+i;
4-19
使用函数统计指定数字的个数
intCountDigit(intnumber,intdigit)
intcount,temp,x;
x=number;
if(temp==digit)
4-20
使用函数输出水仙花数
intnarcissistic(intnumber)
inti,j,digit,power,powerSum,integer,count,flag;
count=0;
integer=number;
while(integer>
0)
integer=integer/10;
powerSum=0;
for(i=0;
count;
digit=integer%10;
power=1;
for(j=0;
power=power*digit;
powerSum=powerSum+power;
if(powerSum==number)
flag=1;
flag=0;
returnflag;
voidPrintN(intm,intn)
for(i=m+1;
n;
if(narcissistic(i)==1)
4-21
使用函数求余弦函数的近似值
doublefuncos(doublee,doublex)
doublesum=0,d=100;
inti=0,j;
doublecj;
while(d>
e)
count++;
if(count%2!
=0)
cj=1;
for(j=1;
j<
=i;
j++)
cj=cj*j;
d=pow(x,i)/cj;
sum=sum+d;
i+=2;
}
else
sum=sum-d;
4-49
分类统计字符个数
voidf(longintx,char*p)
charq;
staticinti=0,j=0;
x=-x;
*p='
-'
;
p++;
}
q=x%16;
if(q<
10)
q=('
0'
+q);
A'
+q-10);
x=x/16;
j++;
i=j;
if(x>
f(x,p);
*(p+(i-j))=q;
j--;
4-7
使用函数求特殊a串数列和
intfn(inta,intn)
intp=0;
for(i=0;
n;
x=a*pow(10,i);
p=p+x;
returnp;
intSumA(inta,intn)
n+1;
sum=sum+fn(a,k);
4-22
使用函数输出指定范围内的完数
voidPrintPN(intm,intn)
intt;
intfound=0;
for(k=m;
if(factorsum(k)==k)
{
found=1;
%d=1"
k);
for(t=1;
t<
=k/2;
t++)
if(t>
1&
k%t==0)
printf("
+%d"
t);
\n"
if(found==0)
Noperfectnumber"
4-25
使用函数输出一个整数的逆序数
intreverse(intnumber)
intm=0;
if(number<
number=-number;
-"
elseif(number==0)
m=0;
while(number>
0)
m=m*10+number%10;
number=number/10;
returnm;
4-50
移动字母
voidShift(chars[])
intn;
chara[3];
n=strlen(s);
3;
a[i]=s[i];
if(n>
3)
for(i=3;
s[i-3]=s[i];
s[n-3+i]=a[i];
4-51
在数组中查找指定元素
intsearch(intlist[],intn,intx)
inti,result;
for(i=0;
if(list[i]==x)
result=i;
break;
if(i==n)
result=-1;
returnresult;
4-52
数组循环右移
intArrayShift(inta[],intn,intm)
inti=0;
ints[10];
if(m>
=n)
m=m%n;
if(m!
=0)
for(i=n-m;
s[i-(n-m)]=a[i];
for(i=n-m-1;
i>
=0;
i--)
a[i+m]=a[i];
for(i=0;
m;
a[i]=s[i];
注:
最后一个样例(2分),段错误没通过,暂时还没找到原因
4-54
删除字符
voiddelchar(char*str,charc)
inti,j;
for(j=i=0;
str[i]!
='
\0'
if(str[i]!
=c)
str[j]=str[i];
j++;
str[j]='
4-55
分类统计各类字符个数
voidStringCount(char*s)
inti,bletter=0,sletter=0,blank=0,digit=0,other=0;
s[i]!
if(s[i]>
&
s[i]<
Z'
)
bletter++;
elseif(s[i]>
a'
z'
sletter++;
elseif(s[i]=='
blank++;
9'
digit++;
else
other++;
%d%d%d%d%d"
bletter,sletter,blank,digit,other);
4-26
使用递归函数计算1到n之和
intsum(intn)
intSum=0;
if(n<
Sum+=i;
returnSum;
4-28
递归求阶乘和
doublefact(intn)
doublem=1;
if(n==0)
returnm;
m=m*i;
doublefactsum(intn)
intj;
doublesum;
sum=0;
if(n>
for(j=1;
sum+=fact(j);
4-29
递归实现指数函数
doublecalc_pow(doublex,intn)
m=m*x;
4-32
递归求Fabonacci数列
intf(intn)
intd;
d=0;
elseif(n==1)
d=1;
elsed=f(n-2)+f(n-1);
returnd;
4-33
十进制转换二进制
voiddectobin(intn)
if(n==0||n==1)
%d"
n%2);
t=n;
dectobin(n=n/2);
t%2);
4-8
递归实现顺序输出整数
voidprintdigits(intn)
intN=1;
intshang;
intyushu;
intm;
m=n;
while(m>
9)
N++;
m=m/10;
for(i=N-1;
shang=n*pow(10,-i);
yushu=n-shang*pow(10,i);
n=yushu;
shang);
4-9
统计各位数字之和是5的数
intis(intnumber)
intyushu=number;
while(number>
yushu=number%10;
s=yushu+s;
number=number/10;
if(s==5)
voidcount_sum(inta,intb)
intcount_Sum=0;
for(i=a;
=b;
if(is(i))
count_Sum=count_Sum+i;
count=%d,sum=%d"
count,count_Sum);
4-10
简单实现x的n次方
doublemypow(doublex,intn)
doubles=1;
s=s*x;
4-13
使用函数求1到10的阶乘和
for(k=1;
k<
s=s*k;
4-14
使用函数求最大公约数
intgcd(intx,inty)
inti,t;
y)
t=y;
y=x;
x=t;
for(i=y;
i>
=1;
i--)
if(x%i==0&
y%i==0)
break;
returni;
4-15
使用函数的选择法排序
(25分)
voidsort(inta[],intn)
inttemp,k,min,i;
n-1;
k++)
min=k;
for(i=k+1;
if(a[i]<
a[min])
min=i;
temp=a[min];
a[min]=a[k];
a[k]=temp;
4-16
函数实现字符串逆序
voidf(char*p)
chartemp;
char*end=p+my_strlen(p)-1;
while(end>
p)
temp=*p;
*p=*end;
*end=temp;
--end;
++p;
intmy_strlen(char*p)
char*q=p;
while(*p!
='
)
p++;
returnp-q;
4-17
递归计算P函数
doubleP(intn,doublex)
doublez;
if(n==0)
z=1;
elseif(n==1)
z=x;
elseif(n>
1)
z=((2*n-1)*P(n-1,x)-(n-1)*P(n-2,x))/n;
returnz;
4-1
计算存款利息-genlib
intmain(void)
intmoney,year;
doubleinterest,rate;
scanf("
&
money);
year);
%lf"
rate);
interest=money*pow(1+rate,year)-money;
interest=%.2f\n"
interest);
4-2
弹球距离
doubledist(doubleh,doublep)
doubled=h;
while(p!
h=p*h;
if(h<
TOL)
d=d+2*h;
return(d);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PTA 函数 答案