用C寫出2個點電荷在50*50格點空間的電勢值
點電荷可自取2個位置 電勢V=q/r q取1,
r為點電荷到某壹點的距離,該點電勢值為2個點電荷在這點電勢的數值和。
要求輸出文本
*/
#include<stdio.h>
#include<math.h>
main()
{
int a=0;int b=25;int c=50;int d=25;
int x=0;int y=0;
double n[50][50];
FILE *fp;
fp=fopen("123.txt","w");
//註意 x 和 y 的取值範圍都是 [0,50)
//不包括 50,否則數組 n[50][50] 會越界
for(x=0;x<50;x++)
{
for(y=0;y<50;y++)
{
// 註意這裏妳想要開平方的倒數(-1/2 次冪),用 ^(-1/2) 是不行的
// "^" 為按位異或運算符,不是冪運算符
// 雖然數學裏面我們會把 "^" 當做 冪運算符
// 但是在 C語言沒有這種用法
// 解決的方法是調用 <math.h> 裏面的函數 :
// double pow( double base, double exp )
// 這個函數的返回值是 : base^exp
// 也就是數學裏面的求冪運算
//錯誤: n[x][y]=(((x-a)^2+(y-b)^2)^(-1/2))+(((x-c)^2+(y-d)^2)^(-1/2));
n[x][y] = pow((x-a)*(x-a)+(y-b)*(y-b),-0.5) + pow((x-c)*(x-c)+(y-d)*(y-d),-0.5);
printf("%f\t",n[x][y]);
fprintf(fp,"%f\t",n[x][y]);
}
putchar('\n');
}
fclose(fp);
}