知ing

C语言程序设计教程(第2版)

李凤霞 编 / 北京理工大学出版社

拾° 上传

查看本书

一、单项选择题(241
1-5.BCCAA 6-10.CCDDD 11-15.ACACB 

二、填空题(243
1.看不出原题的意图。因为要计算1n的累加和,n应是一个≥1的正整数。可是题目中却出现了n=0的情况。除非另加规定当n=01n的累加和为0,或者把原题中的计算式改为计算0n的累加和。据此猜测,原题应填为:return(0) return(n+sum(n-1)) 
根据题意,如下程序较为合理: 
int sum(int n) 
{if(n<0)return(-1); / * -1是出错标志 */ 
 else if(n==1)return(1); 
 else return(n+sum(n-1));} 
2. return(1) return(n*facto(n-1)) 

三、编程题(244
3.源程序: 
main() 
{int i,a,b,c; 
for(i=100;i<999;i++) 
if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i) 
printf("%d\t",i);} 
执行结果: 
153 370 371 407 
8.源程序(非递归算法): 
#define P 13 / * P可以改为其他正整数 */ 
main() 
{int a[P],r,c; 
for(r=0;r<=P;r++) 
 {a[r]=1; 
 for(c=r-1;c>=1;a[c--]+=a[c-1]); 
 printf("%*d",(P-r)*3+1,a[0]); 
 for(c=1;c<=r;printf("%6d",a[c++])); 
 printf("\n");} 

执行结果: 
(应该排列成一个三角形,是贴吧造成现在这个样子的,不是程序有问题
 1 
 1 1 
 1 2 1 
 1 3 3 1 
 1 4 6 4 1 
 1 5 10 10 5 1 
 1 6 15 20 15 6 1 
 1 7 21 35 35 21 7 1 
 1 8 28 56 70 56 28 8 1 
 1 9 36 84 126 126 84 36 9 1 
 1 10 45 120 210 252 210 120 45 10 1 
 1 11 55 165 330 462 462 330 165 55 11 1 
 1 12 66 220 495 792 924 792 495 220 66 12 1 
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 
9.源程序(递归算法): 
#include "stdio.h" 
void printOCT(unsigned long n) 
{unsigned long i; 
if(i=n>>3)printOCT(i); 
putchar((n&7)+48);} 
main() 
{unsigned long i; 
scanf("%ld",&i); 
printOCT(i);} 
执行结果: 
1234567890 
11145401322 


查看更多