#include<stdio.h>
#include<math.h>
main()
{
float a[3][2],b[1][2],r,R,s,ra,sl /*二维数组的前三行输入三个对应的坐标,数组b计算起终点的中点坐标*/
int i,j /*r记录弦的半长,R记录弧的半径,s记录弦中点到弧中点的距离,ra记录夹角,sl记录弧长*/
for(i=0i<3i++)
{
for(j=0j<2j++)
{
printf("a[%d][%d]=",i+1,j+1)
scanf("%f,%f"&a[i][j])
printf(",")
}
printf("\n")
}
for(i=0i<2i++)
{
b[0][i]=(a[0][i]+a[2][i])/2.0 /*求出弦中点坐标*/
}
r=sqrt((a[2][0]-a[0][0])*(a[2][0]-a[0][0])+(a[2][1]-a[0][1])*(a[2][1]-a[0][1]))/2.0 /*计算弦长并除以2*/
s=sqrt((a[1][0]-b[1][0])*(a[1][0]-b[1][0])+(a[1][1]-b[1][1])(a[1][1]-b[1][1]))
R=(s*s+r*r)/(2.0*s) /*因为有(R-s)2+r2=R2(这个注释中的2表示平方)*/
ra=2.0*(asin(r/R)) /*求出夹角,弧度制*/
sl=R*ra /*求出弧长*/
printf("sl=%f,ra=%f\n",sl,ra)
}
不对,因为C语言,甚至多数的工业界使用的编程语言,数组下标都是从0开始。正确写法:
scanf(”%s",s)
如果要加下标scanf(”%s", &s[0])
楼下的忘了取地址符号了。还有,你说从终端输入5个字符,终端打成终点,让他以为是从数组的尾端了。
&符号的意思是,给scanf传递它的地址。s[0]不是地址,只是单个变量。
s 能代替 &s[0]是因为,在C语言中,数组名就代表s[0]的地址。
你可以输出printf("%d %d\n", &s[0], s)看结果。