5.10 有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1。这4个塔的高度分别为10m。塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
程序如下:
#include
x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4;
printf(\请输入一个点(x,y):\ scanf(\
d1=(x-x1)*(x-x1)+(y-y1)*(y-y1); /*求该点到各中心点的距离*/
d2=(x-x2)*(x-x2)+(y+y2)*(y+y2); d3=(x+x3)*(x+x3)+(y-y3)*(y-y3); d4=(x+x4)*(x-x4)*(y+y4)*(y+y4);
if(d1>1&&d2>1&&d3>1&&d4>1) h=0; /*判断该点是否在塔外*/
printf(\该点高度为%d\\n\ }
第六章 循环控制
6.1输入两个正整数m和n,求其最大公约数和最小公倍数。 main()
{long m,n,i=1,j,s;
scanf(\ for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0) s=i;} if(m>=n) j=m; else j=n;
for(;!(j%m==0&&j%n==0);j++); printf(\ }
6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include\ main()
{char c;int i=0,j=0,k=0,l=0; while((c=getchar())!=?\\n?)
{if(c>=65&&c<=90||c>=97&&c<=122) i++; else if(c>=48&&c<=57) j++; else if(c==32) k++; else l++;}
printf(\ }
6.3求Sn=a+aa+aaa+?+aa?aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。
#include\ main()
{int n,sum=0,i=1,s=2; scanf(\ while(i<=n)
{sum=sum+s;s=s+2*pow(10,i); i++;}
printf(\ }
6.4 求 ,(即求1!+2!+3!+4!+5!+?+20!) main()
{int n,i=1;long sum=0,s=1; scanf(\
while(i<=n) {s=s*i;sum=sum+s;i++;} printf(\ }
6.5 求 main()
{double i=1,j=1,k=1,s1=0,s2=0,s3=0,sum; for(;i<=100;i++) s1=s1+i; for(;j<=50;j++) s2=s2+j*j; for(;k<=10;k++) s3=s3+1/k; sum=s1+s2+s3;
printf(\ }
6.6打印出所有\水仙花数\,所谓\水仙花数\是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。 #include\ main()
{int x=100,a,b,c;
while(x>=100&&x<1000)
{a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;
if(x==(pow(a,3)+pow(b,3)+pow(c,3))) printf(\ }
6.7一个数如果恰好等于它的因子之和,这个数就称为\完数\。例如,6的因子为1、2、3,而6=1+2+3,因此6是\完数\。编程序找出1000之内的所有完数,并按下面格式
6
输出其因子:
6 its factors are 1、2、3 main() {int m,i,j,s;
for(m=6;m<10000;m++)
6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下{s=1;
for(i=2;i {printf(\its fastors are 1 \if(m%j==0) printf(\ } } 或 main() {int m,i,j,s; for(m=6;m<1000;m++) {s=m-1; for(i=2;i {printf(\its fastors are 1 \if(m%j==0) printf(\ } } 6.8有一分数序列: 求出这个数列的前20项之和。 main() {int i=1,n;double t,x=1,y=2,s,sum=0; scanf(\ while(i<=n) {s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;} printf(\ } 6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main() {int i,n;double h=100,s=100; scanf(\ for(i=1;i<=n;i++) {h*=0.5;if(i==1) continue;s=2*h+s;} printf(\ } 一个桃子了。求第一天共摘多少桃子。 main() {int i=1,sum=0; for(;i<=10;sum=2*sum+1,i++); printf(\ } 6.11用迭代法求 。求平方根的迭代公式为: 要求前后两次求出的得差的绝对值少于0.00001。#include\ main() {float x0,x1,a; scanf(\ x1=a/2; do {x0=x1;x1=(x0+a/x0)/2;} while(fabs(x0-x1)>=0.00001); printf(\ } 6.12 用牛顿迭代法求方程在1.5附近的根。 main() {double x,y;x=1.5; do{y=2*x*x*x-4*x*x+3*x-6; x=x-y/(6*x*x-8*x+3);} while(y!=0); printf(\ } 6.13用二分法求方程在(-10,10)之间的根 main() {double x1,x2,y1,y2;x1=-10;x2=10; do{y1=2*x1*x1*x1-4*x1*x1+3*x1-6; x1=x1-y1/(6*x1*x1-8*x1+3);} while(y1!=0); do {y2=2*x2*x2*x2-4*x2*x2+3*x2-6; x2=x2-y2/(6*x2*x2-8*x2+3);} while(y2!=0); printf(\ 7 } 6.14打印以下图案 * * * * * * * * * * * * * * * * {static int i,j,k,a[98]; for(i=2;i<100;i++) {a[i]=i;k=sqrt(i); for(j=2;j<=a[i];j++) if(j if(j>=k+1) * * * * * * * * * #include\ main() {int i,j,k; for(i=0;i<=3;i++) {for(j=0;j<=2-i;j++) printf(\ for(k=0;k<=2*i;k++) printf(\ printf(\ } for(i=0;i<=2;i++) {for(j=0;j<=i;j++) printf(\ for(k=0;k<=4-2*i;k++) printf(\ printf(\ } } 第七章 7.1 用筛法求之内的素数。 main() { int i,j,a[100]; for(i=2;i<100;i++) { a[i]=i; for(j=2;j<=i;j++) {if(j if(a[i]%j==0) break; if(a[i]-j==0) printf(\ } } printf(\ } 或 #include\ main() 数组 printf(\ } printf(\ } 7.2用选择法对10个整数从小到大排序。 main() { int i,j,a[10],t; for(i=0;i<10;i++) scanf(\ for(j=1;j<10;j++) for(i=0;i<=9-j;i++) if(a[i]>a[i+1]) {t=a[i+1];a[i+1]=a[i];a[i]=t;} for(i=0;i<10;i++) printf(\ } 或 main() {static int a[10],i,j,k,t; for(i=1;i<11;i++) scanf(\ for(j=1;j<10;j++) for(i=1;i<=10-j;j++) if (a[i]>a[i+1]) {t=a[i+1];a[i+1]=a[i];a[i]=t;} for(i=1;i<11;i++) printf(\ printf(\ } 7.3求一个3×3矩阵对角线元素之和。 main() {int i=0,j=0,a[3][3],s1,s2; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\ s1=a[0][0]+a[1][1]+a[2][2]; s2=a[0][2]+a[1][1]+a[2][0]; printf(\ } 或 8 main() { static int i,j,s1,s2,a[3][3]; for(i=1;i<=3;i++) for(j=1;j<=3;j++) scanf(\ s1=a[1][1]+a[2][2]+a[3][3]; s2=a[1][3]+a[2][2]+a[3][1]; printf(\ } 7.4已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。 main()
C语言程序设计第三版谭浩强课后习题答案完整版
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)