![](https://csdnimg.cn/release/download_crawler_static/7638993/bg6.jpg)
(-2,-2),圆半径为 1。这 4 个塔的高度分别为 10m。塔以
外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔
外的高度为零)。
程序如下:
#include <stdio.h>
main()
{ int h=10;
float
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("%f,%f",&x,&y);
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",h);
}
第六章 循环控制
6.1 输入两个正整数 m 和 n,求其最大公约数和最小公倍数。
main()
{long m,n,i=1,j,s;
scanf("%ld,%ld",&m,&n);
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("s=%ld,j=%ld\n",s,j);
}
6.2 输入一行字符,分别统计出其中英文字母、空格、数字
和其他字符的个数。
#include"stdio.h"
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("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);
}
6.3 求 Sn=a+aa+aaa+…+aa…aaa(有 n 个 a)之值,其中 a
是一个数字。例如:2+22+222+2222+22222(n=5),n 由键
盘输入。
#include"math.h"
main()
{int n,sum=0,i=1,s=2;
scanf("%d",&n);
while(i<=n)
{sum=sum+s;s=s+2*pow(10,i);
i++;}
printf("sum=%d\n",sum);
}
6.4 求 ,(即求 1!+2!+3!+4!+5!+…+20!)
main()
{int n,i=1;long sum=0,s=1;
scanf("%d",&n);
while(i<=n) {s=s*i;sum=sum+s;i++;}
printf("sum=%ld\n",sum);
}
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("sum=%f\n",sum);
}
6.6 打印出所有"水仙花数",所谓"水仙花数"是指一个三位
数,其各位数字立方和等于该本身。例如:153 是一个水仙
花数,因为 153=1^3+5^3+3^3。
#include"math.h"
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("%5d",x);x++;}
}
6.7 一个数如果恰好等于它的因子之和,这个数就称为"完
数"。例如,6 的因子为 1、2、3,而 6=1+2+3,因此 6 是"
完数"。编程序找出 1000 之内的所有完数,并按下面格式
输出其因子: