PTA程序设计答案.docx
- 文档编号:3939544
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:75
- 大小:30.55KB
PTA程序设计答案.docx
《PTA程序设计答案.docx》由会员分享,可在线阅读,更多相关《PTA程序设计答案.docx(75页珍藏版)》请在冰豆网上搜索。
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分) 答案: intma*(inta,intb){ intma*; if(a>=b) ma*=a; else ma*=b; returnma*; } 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(double*1,doubley1,double*2,doubley2){ doubled; d=sqrt((*1-*2)*(*1-*2)+(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,double*){ 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(*,i)/cj; sum=sum+d; i+=2; } else{ cj=1; for(j=1;j<=i;j++) cj=cj*j; d=pow(*,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){ int*,p=0,i; for(i=0;i *=a*pow(10,i); p=p+*; } 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,int*){ inti,result; for(i=0;i if(list[i]==*){ 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(double*,intn){ inti; doublem=1; for(i=1;i<=n;i++) m=m**; 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简单实现*的n次方(10分) 答案: doublemypow(double*,intn){ inti; doubles=1; for(i=0;i s=s**; 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(int*,inty){ inti,t;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PTA 程序设计 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)