PTA程序设计答案.docx

上传人:b****8 文档编号:11006125 上传时间:2023-02-24 格式:DOCX 页数:203 大小:4.29MB
下载 相关 举报
PTA程序设计答案.docx_第1页
第1页 / 共203页
PTA程序设计答案.docx_第2页
第2页 / 共203页
PTA程序设计答案.docx_第3页
第3页 / 共203页
PTA程序设计答案.docx_第4页
第4页 / 共203页
PTA程序设计答案.docx_第5页
第5页 / 共203页
点击查看更多>>
下载资源
资源描述

PTA程序设计答案.docx

《PTA程序设计答案.docx》由会员分享,可在线阅读,更多相关《PTA程序设计答案.docx(203页珍藏版)》请在冰豆网上搜索。

PTA程序设计答案.docx

PTA程序设计答案

PTA所有答案

工业gc1601学习小组

一、判断题

二、选择题

三、函数题

4-3求m到n之和(10分)

答案:

intsum(intm,intn){

ints=0,i;

for(i=m;i<=n;i++)

s+=i;

returns;

}

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

答案:

voidPrintN(intN){

inti;

for(i=1;i<=N;i++)

printf("%d\n",i);

}

4-36简单求和(10分)

答案:

intSum(intList[],intN){

inti,s=0;

for(i=0;i

s+=List[i];

returns;

}

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

答案:

intFactorial(constintN){

inti,s=1;

if(N<0)

return0;

elseif(N==0)

return1;

else{

for(i=1;i<=N;i++)

s*=i;

returns;

}

}

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

printf("");

for(j=0;j

printf("%-2d",i);

printf("\n");

}

}

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

答案:

inteven(intn){

if(n%2==0)

return1;

else

return0;

}

4-46使用函数求奇数和(15分)

答案:

inteven(intn){

if(n%2==0)

return1;

else

return0;

}

intOddSum(intList[],intN){

inti;

intoddsum=0;

for(i=0;i

if(even(List[i])==0)

oddsum+=List[i];

returnoddsum;

}

4-47使用函数计算两点间的距离(10分)

答案:

doubledist(doublex1,doubley1,doublex2,doubley2){

doubled;

d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

returnd;

}

4-48使用函数求素数和(20分)

答案:

intprime(intp){

inti,j,count=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-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分)

答案:

voidStringCount(chars[]){

inti;

intn1=0,n2=0,n3=0,n4=0;

for(i=0;s[i]!

='\0';i++){

if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))

n1++;

elseif(s[i]==''||s[i]=='\n')

n2++;

elseif(s[i]>='0'&&s[i]<='9')

n3++;

elsen4++;

}

printf("letter=%d,blank=%d,digit=%d,other=%d",n1,n2,n3,n4);

}

4-7使用函数求特殊a串数列和(20分)

答案:

intfn(inta,intn){

intx,p=0,i;

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分)

答案:

intfactorsum(intnumber){

inti,s=1;

for(i=1;i<=number/2;i++)

if(i>1&&number%i==0)

s+=i;

returns;

}

voidPrintPN(intm,intn){

intk,t,found=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,n;

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];

}

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,s[100];

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;

}

4-54删除字符(20分)

答案:

voiddelchar(char*str,charc){

inti=0,j=0;

for(;str[i]!

='\0';i++)

if(str[i]!

=c){

str[j]=str[i];

j++;

}

str[j]='\0';

}

4-55分类统计各类字符个数(15分)

答案:

voidStringCount(char*s){

inti;

intn1=0,n2=0,n3=0,n4=0,n5=0;

for(i=0;s[i]!

='\0';i++){

if(s[i]>='A'&&s[i]<='Z')

n1++;

elseif(s[i]>='a'&&s[i]<='z')

n2++;

elseif(s[i]=='')

n3++;

elseif(s[i]>='0'&&s[i]<='9')

n4++;

elsen5++;

}

printf("%d%d%d%d%d",n1,n2,n3,n4,n5);

}

4-26使用递归函数计算1到n之和(10分)

答案:

intsum(intn){

inti,sum=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=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){

if(n<10)

printf("%d\n",n);

else{

printdigits(n/10);

printf("%d\n",n%10);

}

}

4-9统计各位数字之和是5的数(20分)

答案:

intis(intnumber){

ints=0;

while(number>0){

s+=number%10;

number/=10;

}

if(s==5)

return1;

else

return0;

}

voidcount_sum(inta,intb){

inti,count=0,count_sum=0;

for(i=a;i<=b;i++)

if(is(i)){

count++;

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){

inti;

doubles=1;

for(i=1;i<=n;i++)

s=s*i;

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){

inti,j,k,t;

for(i=0;i

for(j=i+1;j

if(a[j]

t=a[i];a[i]=a[j];a[j]=t;

}

}

}

4-16函数实现字符串逆序(15分)

答案:

voidf(char*p){

inti,n=0;

chart;

for(i=0;p[i]!

='\0';i++)

n++;

for(i=0;i

t=p[i];

p[i]=p[n-1-i];

p[n-1-i]=t;

}

}

4-17递归计算P函数(15分)

答案:

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(10分)

答案:

intmain(void)

{

intmoney,year;

doubleinterest,rate;

scanf("%d",&money);

scanf("%d",&year);

scanf("%lf",&rate);

interest=money*pow(1+rate,year)-money;

printf("interest=%.2f\n",interest);

return0;

}

4-2弹球距离(15分)

答案:

doubledist(doubleh,doublep){

doubled=h;

while(p!

=0){

h=p*h;

if(h

break;

d=d+2*h;

}

returnd;

}

四、编程题

单词长度(20分)

答案:

#include

#include

intmain(){

chara[1000];

inti,n=0,k,t=0;

for(i=0;;i++){

scanf("%c",&a[i]);

if(a[i]=='.')

break;

}

k=i;

for(i=i-1;i>=0;i--){

if(a[i]=='')

t++;

elsebreak;

}

for(i=0;i<=k;i++){

if(a[i]=='.'){

if(n!

=0){

printf("%d",n);

printf("\n");

}

break;

}

if(a[i]==''){

if(n!

=0){

printf("%d",n);

n=0;

if(i

printf("");

}

}

else{

n++;

}

}

return0;

}

掉入陷阱的数字(20分)

答案:

#include

intmain(){

intn[1000],s[1000],i,t;

scanf("%d",&n[0]);

for(i=1;i<1000;i++){

s[i-1]=0;

t=n[i-1];

while(t>0){

s[i-1]+=t%10;

t/=10;

}

n[i]=3*s[i-1]+1;

printf("%d:

%d\n",i,n[i]);

if(n[i]==n[i-1])break;

}

return0;

}

九宫格输入法(20分)

答案:

#include

#include

intmain(){

char*key[10]={"0","1,.?

!

","2ABC","3DEF",

"4GHI","5JKL","6MNO",

"7PQRS","8TUV","9WXYZ"

};

intlength[10];

for(inti=0;i<10;i++){

length[i]=strlen(key[i]);

}

charch;

charp;

intcount=0;

do{

ch=getchar();

if(ch!

=''&&ch!

='\n'){

p=ch;

count++;

}

else{

putchar(key[p-'0'][(count-1)%length[p-'0']]);

count=0;

}

}while(ch!

='\n');

return0;

}

算术入门之加减乘除(20分)

答案:

#include

main(){

inta,b,r1,r2,r3,r41,c;

floa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1