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