PAT《C语言程序设计》题目集参考答案上.docx
- 文档编号:11639873
- 上传时间:2023-03-29
- 格式:DOCX
- 页数:12
- 大小:37.72KB
PAT《C语言程序设计》题目集参考答案上.docx
《PAT《C语言程序设计》题目集参考答案上.docx》由会员分享,可在线阅读,更多相关《PAT《C语言程序设计》题目集参考答案上.docx(12页珍藏版)》请在冰豆网上搜索。
PAT《C语言程序设计》题目集参考答案上
PAT浙大版(C语言程序设计
(第3版)》题目集参考答案
练习5-1求m至1Jn之和Q0分)1
练习5-2找两个数中最大者(10分)2
练习5-3数字金字塔(15分)2
习题5-1符号函数(10分)3
习题5-2使用函数求奇数和(15分)3
习题5-4使用函数求素数和(20分)4
习题5-5使用函数统计指定数字的个数(15分)..5
习题5-6使用函数输出水仙花数(20分)6
习题5-7使用函数求余弦函数的近似值(15分)..8
习题6-1分类统计字符个数(15分)8
习题6-2使用函数求特殊a串数列和(20分).......9习题6-3使用函数输出指定范围内的完数(20分)
10
习题6-4使用函数输出指定范围内的Fibonacci数
(20分)11
习题6-5使用函数验证哥德巴赫猜想(20分)….13
练习5-1求m到n之和(10分)
本题要求实现一个计算m~n(m 函数接口定义: intsum(intm,intn); 其中m和n是用户传入的参数,保证有m intsum(intm,intnX inta=0; while(m<=n){ a=m+a; 练习5-2找两个数中最大者(10分) 本题要求对两个整数a和b,输出其中较大的数。 函数接口定义: intmax(inta,intb); 其中a和b是用户传入的参数,函数返回的是两者中较大的数, intmax(intajntbXintc; if(a>b) c=a; else 踽 returnc; 练习5-3数字金字塔(15分) 本题要求实现函数输出n行数字金字塔。 函数接口定义: voidpyramid(intn); 其中n是用户传入的参数,为[1,9]的正整数。 要求函数按照如样例所示的格式打印出n行数字金字塔。 注 意每个数字后面跟一个空格。 voidpyramid(intn){for(inti=l;i<=n;i++Xfor(intz=n-i;z>0;z--)printff”); for(mtj=r,j<=i;j++Xprintf(^d",i); printf("\n") 习题5-1符号函数QO分) 本题要求实现符号函数sign(x)o函数接口定义: intsign(intx); 其中x是用户传入的整型参数。 符号函数的定义为: 若x大于0,sign(x)二1;若x等于 0,sign(x)=0;否则,sign(x)=-1。 intsign(intxX inta; if(x>0){if(x==OXa=0; 3 if(x<0){ 0 I returna; 习题5-2使用函数求奇数和(15分) 本题要求实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。 函数接口定义: inteven(intn); intOddSum(intListO,intN); 其中函数even将根据用户传入的参数n的奇偶性返回相应值: 当n为偶数时返回1,否则返回0o函数OddSum负责计算并返回传入的N个整数List口中所有奇数的和。 inteven(intnXinta: if(nW2==OXelseif(n%2! =0) a=0; returna: g intOddSum(intListQ,intN){intsum=0; for(inti=0;i if(List[i]H2! =O)sum=Listfi]+sumreturnsum 习题5-3使用函数计算两点间的距离(10分) 本题要求实现一个函数,对给定平面任意两点坐标(xl,yl)和(x2,y2),求这两点之间的距离。 函数接口定义: doubledist(doublexl,doubleyl,doublex2,doubley2); 其中用户传入的参数为平面上两个点的坐标(xLyl)和仅2,y2),函数dist应返回两点间的距离。 doubledist(doublexl,doubleyl,doublex2,doubley2X doublem; m二sqrt((xl-x2)*(xl-x2)+(yl-y2)*(yl-y2)); returnm; 习题5-4使用函数求素数和(20分) 本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。 素数就是只能被1和自身整除的正整数。 注意: 1不是素数,2是素数。 函数接口定义: intprime(intp); intPrimeSum(intm,intn); 其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m,n]内所有素数的和。 题目保证用户传入的参数mWn。 intprime(intp) { if(P<=lX return0; }e>seif(p==2X return1; }dse( for(i=2;i<=p/2;i++X return0; }elseif(i>p/2){return1; return1intPrimeSum(intm,intn){inti,sum=0; for(i=m;i<=n;i++){ if(prime(i)! =0)sum+=i; returnsum; 习题5-5使用函数统计指定数字的个数(15分) 本题要求实现一个统计整数中指定数字的个数的简单函数。 函数接口定义: intCountDigit(intnumber,intdigit); 其中number是不超过长整型的整数,digit为[0,9]区间内的整数。 函数CountDigit应返回number中digit出现的次数。 intCountDigitfintnumber,intdigit) intcount=0,x,if(number<0Xnumber*=-l; I while(number>10Xx=number^lO; number=number/10;if(x==digitXcount=count+l; if(number==digitX count=count+l; returncount; 习题5-6使用函数输出水仙花数(20分) 水仙花数是指一个N位正整数(NN3),它的每个位上的数字的N次熹之和等于它本身。 例如: 153=13+53+33。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。 函数接口定义: intnarcissistic(intnumber); voidPrintN(intm,intn); 函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。 函数PnntN则打印开区间(m,n)内所有的水仙花数,每个数字占一行。 题目保证 100这mWnWIOOOO。 intnarcissistic(intnumber) I intremainder,sum=1,allsum=0; intx,count=0,end=l; x=number; while(x>=0) count++; x=number; while(x! =0) ] remainder=xHlO; for(end: end<二count;end++) I sum*二remainder; I allsum+=sum: x=x/10; end=l; sum=l; I if(allsum==number) I return1; }else { return0; I ) voidPrintN(intm,intn) I m=m+l; for(m;m if(narcissistic(m)-1)printfC^d\n",m); 习题5-7使用函数求余弦函数的近似值(15分) 本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e: cos(x)=x0/0! -x2/2! +x4/4! 一x6/6! +… 函数接口定义: doublefuncos(doublee,doublex); 其中用户传入的参数为误差上限e和自变量x;函数funcos应返回用给定公式计算出来、并且满足误差要求的cos(x)的近似值;输入输出均在双精度范围内。 doublefuncos(doublee,doublexX intflag="l: doubleitem=l,m=2,sum=l: doublefenmu=l,fenzi while(item>eXfor(inti=l;i<=m;i++Xfenmu=fenmu*i; ] fenzi=pow(xtm); item=fenzi/fenmu; sum=sum+flag*item: m=m+2; fenmu=l; flag=-flag; ] returnsum; 习题6-1分类统计字符个数(15分) 本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。 函数接口定义: voidStringCount(chars[]); 其中chars口是用户传入的字符串。 函数StnngCount须在一行内按照 letter=英文字母个数,blank二空格或回车个数,digit二数字字符个数,other二其他字符个数 的格式输出。 voidStringCount(chars[]) I intletter,blank.digit.other; letter=blank=digit=other=0; intn; n=strlen(s); for(inti=0;i if((s|j]>='a,&&s[i]<二>=7V&&s[i卜='Z')X }elseif(s[i]>=O&&s[i]<=9){digit++ }elseif(s[i]== blank++; }else{ other++; I I printfC'letter二%d,blank二%d,digit二%d,other二%dM,letterfblank,digit,other); 习题6-2使用函数求特殊a串数列和(20分) 给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++…+aa…a(n个a)之和。 函数接口定义: intfn(inta,intn); intSumA(inta,intn); 其中函数fn须返回的是n个a组成的数字;SumA返回要求的和。 intfn(inta,intnX intlast=a; for(inti=l;i a=a*10; last+=a; I returnlast; I intSumA(inta,intnX intsum=a; intlast=a; for(inti=l;i a=a*10; last+=a; sum=sum+last; returnsum 习题6-3使用函数输出指定范围内的完数(20分) 本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0 例如: 6=1+2+3,其中1、2、3为6的因子。 函数接口定义: intfactorsum(intnumber);voidPrintPN(intm,intn); 其中函数factorsum须返回intnumber的因子和;函数PrintPN要逐行输出给定范围[m,n]内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数二因子1+因子2+…+因子k”,其中完数和因子均按递增顺序给出。 如果给定区间内没有完数,则输出一行“Noperfectnumber. intfactorsum(intnumberXintx=0; for(inti=l;i returnx; voidPrintPN(intm,intnXinta=0; for(inti=m;i<=n: i++X if(factorsum(i)==i){printf("%d=l",i); for(intj=2;j 制僵明 printff+ pnntf(AnM); I if(a==OX printf(MNoperfectnumber*") 习题6-4使用函数输出指定范围内的Fibonacci数(20分) 本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0 所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。 函数接口定义: intfib(intn); voidPrintFN(intm,intn); 其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m,n]内的所有Fibonacci数,相邻数字间有一个空格,行末不得有多余空格。 如果给定区间内没有Fibonacci数,则输出一行“NoFibonaccinumber”。 intfib(intn) intf[1000]; 眄 for(i=3;i<=n;i++) I F(l)=l,F (2)=l,F(n)=F(n-1)+F(n-2) (nN3,n£N*)♦/ returni[n] voidPrintFN(intm,intn) I int=0,count=0j while(fib(i)>0) I if(fib(i)>二m&&fib(i)<=n) count++ while(fib(i)>0) I if(fib(i)>=m&&fib(i)<=n) I count--; if(count>0) I pnntf(""); I flag4 I ■ I if(flag==O) t printf(MNoFibonaccinumber"); 习题6-5使用函数验证哥德巴赫猜想(20分) 本题要求实现一个判断素数的简单函数、并利用该函数验证哥德巴赫猜想: 任何一个不小于6的偶数均可表示为两个奇素数之和。 素数就是只能被1和自身整除的正整数。 注意不是素数,2是素数。 函数接口定义: intprime(intp); voidGoldbach(intn); 其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中pWq均为素数。 又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),要求必须输出所有解中p最小的解。 intprime(intp) { if(p<=0||p==lX return0; )elseif(p==2||p==3X return1; }elseif(p%6! =1&&pH6! =5儿 return0; }else( inttmp=(int)sqrt(p); for(i=5;i<=tmp;i+=6X if(p%i==0||pH(i+2)==0X return0; I■) return1; ] voidGoldbach(intnX intb,i; inta=0; for(i=l;i<=n;i++X if(prime(i)==lX 百 if(prime(b)==lX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 PAT 语言程序设计 题目 参考答案