C#程序:#define n 3.1415926#includevoid main(){ double s,l,r; scanf("%lf",&r); s=n*r*r; l=2*n*r; printf("s=%lf\n l=%lf\n",s,l); //float 对应%f double对应 %lf}
拓展资料
求图像的周长
描述:
给一个用 . 和X表示的图形,图形在上、下、左、右、左上、左下、右上、右下8个方向都被看作是连通的,并且图像中间不会出现空洞,求这个图形的边长。
输入:
首先给出m、n、x、y四个正整数,下面给出m×n的图形,x、y表示点击的位置,全0表示结束。
输出:
点击的图形的周长。
输入样例
2 2 2 2 XX XX 6 4 2 3 .XXX .XXX .XXX ...X ..X. X... 0 0 0 0
输出样例:
#include
void length();
void search(int x,int y);
int m,n,x,y,q=0,k=0; char
a[100][100]; int
b[100][100];//该数组用来存取与给定点有关的位置的坐标
int l[8]={1,-1,0,0,1,1,-1,-1},h
[8]={0,0,-1,1,1,-1,1,-1};//两数组分别表示八个方向的横纵坐标位移,用于递归时,对八个方向的讨论
int main() { int i,j; char d[100][100]; while(1) { k=0; scanf
("%d%d%d%d",&m,&n,&x,&y); if
(m==0&&n==0)return0;
scanf("\n"); for(i=1;i<=m;i++) { for(j=1;j<=n+1;j++)
{ scanf("%c",&d[i][j]); b[i][j]=0;//每次输入时都要对数组初始化,避免上一组数据的影响
if(d[i][j]!='\n')a[i][j]=d[i][j]; } } if(a[x][y]=='.')//若点击的点不是X,则周长为零 { printf("0\n"); } else { b[x][y]=1; //该点处为X,对应数组元素赋值为一 search(x,y);
length();
}
}
} void search (int x,int y)
{ int i,row,col;
for(i=0;i<8;i++)
{
row=l[i]+x;
col=h[i]+y;
if(row>m||col>n||row<1||col<1)
continue;//若数组越界,跳过
else if(b[row][col]==1)continue;//若之前已给该位置赋值为一,则跳过,避免递归陷入死循环
else if(a[row][col]=='X') { b[row][col]=1;为该点处数组元素赋值为1
search(row,col);
}
}
} void length()//要计算图形周长面积,只需数一下每一个X周围有几个.即可或者当X处于边界时,周长+1 { int c=0; for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++) { if(b[i][j]==1)
{
if(i-1<1||a[i-1][j]=='.')c++; if(i+1>m||a[i+1][j]=='.')c++;
if(j+1>n||a[i][j+1]=='.')c++;
if(j-1<1||a[i][j-1]=='.')c++; } } } printf("%d\n",c); }