?? 飛翔理科ii.txt
字號:
return b;
}
//==================================================
void menu()
{
int x,y,mm;
char k;
subject=0;ii=1;e=1;x=0;y=0;yy=0;
win(1);
cai(1);
menul(1,1);
menur(1,1);
Block(3,35+15*yy,50,46+15*yy,2);
Block(56+x*54,35+15*y,103+x*54,46+15*y,2);
Refresh();
while(1)
{
mm=max(subject+1);
k=getchar();
if(k==109){yy=yy-1;if(yy<0){yy=0;ii--;if(ii<1)ii=1;}}
if(k==32){yy=yy+1;if(yy>2){yy=2;ii++;if(ii>mm)ii=mm;}}
if(k==PGDN_KEY){ii=1;yy=0;x=0;y=0;subject++;if(subject>4)subject=0;}
if(k==PGUP_KEY){ii=1;yy=0;x=0;y=0;subject--;if(subject<0)subject=4;}
if(k==21){y=y+1;if(y>2)y=0;}
if(k==22){x=x+1;if(x>1)x=0;}
if(k==20){y=y-1;if(y<0)y=2;}
if(k==23){x=x-1;if(x<0)x=1;}
if(k==ESC_KEY){quit();}
if(k=='a'){help(3,help_info,17);}
if(k=='t'){help(5,help_info2,10);}
if(k==HELP_KEY){help(2,help_info1,8);}
if(k==ENTER_KEY){break;}
win(1);
cai(subject+1);
menul(subject+1,ii);
menur(subject+1,ii+yy);
Block(3,35+15*yy,50,46+15*yy,2);
e=y*2+x+1;
if(subject!=4)Block(56+x*54,35+15*y,103+x*54,46+15*y,2);
Refresh();
}
}
//========================================================
void getnum(int i,int y)
{
char fpp;
char t[20];
if ((fpp=fopen("/FLY/FLY_num.dat","r"))==0)
{
win(1);
cai(subject+1);
TextOut(3,35,"文件打開錯誤!",1);
TextOut(3,50,"請重新下載該文件。",1);
TextOut(3,65,"錯誤文件:",1);
TextOut(63,65,"FLY/FLY_num.dat",1);
Refresh();
getchar();
}
else {
fseek(fpp,y,0);
fread(pic,1,i,fpp);
fclose(fpp);
}
}
//**********************************************************************************
//***數學***
//==================================================
void fangcheng()//方程速解
{
int a,b,c,d,t1,t2,t3,t4;
long x1,x2,x3,x4;
char temp[20];
t3=0;t4=0;
win(1);
cai(1);
TextOut(10,35,"方程:x^2+bx+c=0",1);
ex:
Block(3,50,150,65,0);
TextOut(3,50,"a=",1);
a=scanf(15,50,10);
if(a==0){TextOut(3,50,"二次項系數不能為零!",1);Refresh();getchar();goto ex;}
Block(3,50,150,65,0);
TextOut(3,50,"b=",1);
b=scanf(15,50,10);
Block(3,50,150,65,0);
TextOut(3,50,"c=",1);
c=scanf(15,50,10);
Block(3,50,150,65,0);
d=b*b-4*a*c;
Block(2,35,158,78,0);
TextOut(3,35,"△=",1);
pp(21,35,d);
Refresh();
if(d<0){TextOut(3,50,"方程沒有實數根!",1);Refresh();goto end;}
x1=((-1000*b+sqrt(d*1000000)))/(2*a);
x2=((-1000*b-sqrt(d*1000000)))/(2*a);
x3=x1-((x1/1000)*1000);
x4=x2-((x2/1000)*1000);
if(x1<0){x1=x1*-1;t1=1;}
if(x2<0){x2=x2*-1;t2=1;}
if(x3<0){x3=x3*-1;t3=1;}
if(x4<0){x4=x4*-1;t4=1;}
x1=x1/1000;
x2=x2/1000;
TextOut(3,50,"X1=",1);
TextOut(3,65,"X2=",1);
pp(27,50,x1);
if(t1==1||t3==1){TextOut(21,50,"-",1);}
TextOut(27+lenboy*6,50,".",1);
pp(33+lenboy*6,50,x3);
pp(27,65,x2);
if(t2==1||t4==1){TextOut(21,65,"-",1);}
TextOut(27+lenboy*6,65,".",1);
pp(33+lenboy*6,65,x4);
Refresh();
end:
while(getchar()!=27);
}
//==================================================
void fenshu()//分數化簡
{
char zi[6],mu[6];
long fenzi,fenmu;
long p,q;
long a,b,temp,x,i;
win(1);
cai(1);
Block(10,55,70,56,1);
Rectangle(12,38,68,53,1);
Rectangle(12,58,68,73,1);
fenzi=scanf(15,40,6);
fenmu=scanf(15,60,6);
//////////////////////////////////////////////////
a=fenzi;b=fenmu;
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
///////////////////////////////////////////////////
fenzi=fenzi/a;
fenmu=fenmu/a;
Block(92,35,140,76,0);
TextOut(73,50,"=",1);
Block(80,55,140,56,1);
Rectangle(82,38,138,53,1);
Rectangle(82,58,138,73,1);
sprintf(zi,"%d",fenzi);
sprintf(mu,"%d",fenmu);
TextOut(84,40,zi,1);
TextOut(84,60,mu,1);
Refresh();
while(getchar()!=27);
}
//==================================================
long sqr(long x)
{ long i;
for (i=1;;i++)
{if((i*i)>x) return (i-1);}
}
char ispnum(long n)
{ char c,i;
c=1;
i=0;
if (n==1){c=0;return c;}
else if (n==2||n==3||n==5){c=0;return c;}
else if (n%2==0){return c;}
else if (n%3==0){return c;}
else if (n%5==0){return c;}
else if (n<49){c=0;return c;}
else {
for (i=7;i<=sqr(n);i=i+30)
{if (n%i==0){return c;}
else if (n%(i+4)==0){return c;}
else if (n%(i+6)==0){return c;}
else if (n%(i+10)==0){return c;}
else if (n%(i+12)==0){return c;}
else if (n%(i+22)==0){return c;}
else if (n%(i+24)==0){return c;}
}
}
c=0;
return c;
}
//==============================================================
void genshi()//根式化簡
{
long i,w,m;
long a,b,d,n,gb,ga;
b=1;
a=1;
win(1);
cai(1);
WriteBlock(8,38,7,16,1,gen);
Block(15,38,90,38,1);
Rectangle(16,40,88,54,1);
Refresh();
n=scanf(18,41,5);
w=1;m=1;
while(ispnum(n)){
for(i=2;i<=sqr(n);i++){
if(n%i==0){
if (n%(i*i)==0){
w=w*i;n=n/(i*i);}
else {n=n/i;m=m*i;}
break;}
}
}
if (w==1){gb=n*m;ga=1;a=gb;b=ga;}
else if(n*m==1)
{ga=w;gb=1;a=gb;b=ga;}
else {gb=n*m;ga=w;a=gb;b=ga;}
end:
WriteBlock(48,58,7,16,1,gen);
Block(55,58,90,58,1);
Rectangle(8,60,45,74,1);
Rectangle(53,60,88,74,1);
pp(10,61,b);
pp(55,61,a);
Refresh();
while(getchar()!=27);
}
//=========================================================================
void yinshu()//因數分解
{
long n,i;
win(1);
cai(1);
TextOut(3,35,"輸入一個數:",1);
n=scanf(69,35,5);
SetScreen(1);
printf("======= 分解質因數 =======");
Locate(1,0);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!=1)
{
if(n%i==0)
{
printf("%d*",i);
n=n/i;
}
else
break;
}
}
printf("%d",n);
while(getchar()!=27);
}
//===================================================================
void yueshu()//約數倍數
{
//long a,b,num1,num2,temp,gongyue,gongbei;
long a,b,c,d,t,aa,bb;
win(1);
cai(1);
TextOut(3,35,"輸入第一個數:",1);
Refresh();
c=scanf(81,35,5);
TextOut(3,50,"輸入第二個數:",1);
Refresh();
d=scanf(81,50,5);
a=c;
b=d;
while(b!=0)
{
t=a%b;
a=b;
b=t;
}
aa=a;
bb=c*d/a;
win(1);
cai(1);
TextOut(3,35,"數 , 的",1);
TextOut(3,50,"最大公約數:",1);
TextOut(3,65,"最小公倍數:",1);
pp(15,35,c);
pp(57,35,d);
pp(69,50,aa);
pp(69,65,bb);
Refresh();
while(getchar()!=27);
}
//========================================================
void panduanzhishu()
{
long na;
char c;
loop2:
win(1);
cai(1);
TextOut(3,35,"輸入正整數:",1);
na=scanf(69,35,6);
if(na<=1)
{
TextOut(3,50,"請輸入正整數!",1);
Refresh();
getchar();
goto loop2;
}
else
{
c=ispnum(na);
if (c==1){TextOut(3,50,"您輸入的是合數!",1);}
else {TextOut(3,50,"您輸入的是質數!",1);}
Refresh();
}
while(getchar()!=27);
}
//==================================================
long suan(int m,int n)
{
int i;
long sum;
sum=1;
for(i=0;i<=m-1;i++)
{
sum=sum*(n-i);
}
return sum;
}
void pai()
{
int m,n;
long sum;
win(1);
cai(1);
TextOut(3,35,"排列數",1);
WriteBlock(39,35,15,11,1,paia);
TextOut(3,50,"n=",1);
n=scanf(15,50,3);
TextOut(3,50," ",1);
TextOut(3,50,"m=",1);
m=scanf(15,50,3);
if(m>n){win(1);cai(1);TextOut(3,35,"輸入錯誤!(m<n)",1);Refresh();goto end;}
sum=suan(m,n);
win(1);
cai(1);
TextOut(3,35,"排列數 A( , )=",1);
pp(57,35,m);
pp(81,35,n);
pp(111,35,sum);
Refresh();
end:
while(getchar()!=27);
}
//=======================================================
void zu()
{
int m,n,tm,tn;
long sum;
win(1);
cai(1);
TextOut(3,35,"組合數",1);
WriteBlock(39,35,15,13,1,paic);
TextOut(3,50,"n=",1);
n=scanf(15,50,3);
TextOut(3,50," ",1);
TextOut(3,50,"m=",1);
m=scanf(15,50,3);
if(m>n){win(1);cai(1);TextOut(3,35,"輸入錯誤!(m<n)",1);Refresh();goto end;}
tm=m;
tn=n;
if(tm>(tn/2))tm=tn-tm;
sum=suan(tm,tn)/suan(tm,tm);
win(1);
cai(1);
TextOut(3,35,"組合數 C( , )=",1);
pp(57,35,m);
pp(81,35,n);
pp(111,35,sum);
Refresh();
end:
while(getchar()!=27);
}
//================================================================
void xunzhaozhishu()
{
long i;
long na,nb,c;
loop3:
win(1);
cai(1);
TextOut(3,35,"從:",1);
na=scanf(21,35,3);
TextOut(3,50,"到:",1);
nb=scanf(21,50,3);
if(na==0||nb==0||na>nb){
TextOut(3,65,"輸入錯誤!",1);
Refresh();
getchar();
goto loop3;}
else{
SetScreen(1);
printf("=========尋找質數=========");
printf("從%d到%d質數有:\n",na,nb);
for(i=na;i<=nb;i++)
{if (Inkey()==ESC_KEY) {break;}
c=ispnum(i);
if(c==0){printf("%d,",i);
}
}
printf("\n計算完畢!");
getchar();}
}
//==================================================================
void zuobiaozhou()
{
int i;
ClearScreen();
Block(zuox,0,zuox,80,1);
Block(0,zuoy,160,zuoy,1);
WriteBlock(zuox-2,1,5,3,1,jiantou1);
WriteBlock(157,zuoy-2,3,5,1,jiantou);
WriteBlock(155,zuoy-7,4,4,1,xtu);
WriteBlock(zuox+4,1,4,4,1,ytu);
WriteBlock(zuox+2,zuoy+2,4,4,1,otu);
Rectangle(1,0,160,80,1);
for(i=zuox;i<160;i=i+jdx)Block(i,zuoy-1,i,zuoy-2,1);
for(i=zuox;i>0;i=i-jdx)Block(i,zuoy-1,i,zuoy-2,1);
for(i=zuoy;i<160;i=i+jdy)Block(zuox+1,i,zuox+2,i,1);
for(i=zuoy;i>0;i=i-jdy)Block(zuox+1,i,zuox+2,i,1);
}
//==================================================================
void yicihanshu()
{
int a,b;
int sst,sen;
win(1);
cai(1);
TextOut(3,35,"方程:y=ax+b",1);
TextOut(3,65,"(請輸入擴大100倍后的系數)",1);
TextOut(3,50,"a=",1);
a=scanf(15,50,5);
TextOut(3,50,"b= ",1);
b=scanf(15,50,5);
zuobiaozhou();
Refresh();
if(abs(a)<50)
{sst=-80;sen=80;}
getchar();
}
void ercihanshu()
{
int a,b,c;
win(1);
cai(1);
TextOut(3,35,"方程:y=ax^2+bx+c",1);
TextOut(3,65,"(請輸入擴大100倍后的系數)",1);
TextOut(3,50,"a=",1);
a=scanf(15,50,5);
TextOut(3,50,"b= ",1);
b=scanf(15,50,5);
TextOut(3,50,"c= ",1);
c=scanf(15,50,5);
zuobiaozhou();
Refresh();
getchar();
}
//==================================================================
//***物理***
//***化學***
//==================================================
void fenzishi()//分子式計算
{
int x,y,z,js;
long shiliang;
js=0;
win(1);
cai(3);
TextOut(3,35,"請輸入式量:",1);
Refresh();
shiliang=scanf(69,35,3);
SetScreen(1);
Locate(0,0);
printf("計算中...");
for(x=0;x<(shiliang/12)+1;x++)
{
for(y=0;y<(shiliang)+1;y++)
{
for(z=0;z<(shiliang/16)+1;z++)
{
if (Inkey()==ESC_KEY) {goto end;}
if((x*12+y+z*16==shiliang)&&(y<=2*x+2))
{
js=js+1;printf("\n%d. C%d H%d O%d",js,x,y,z);
if(z==0){printf("\n.... C%d H%d",x,y);}
if(z==1&y>1){printf("\n.... C%d H%d OH",x,y-1);}
if(z==1&y>1){printf("\n.... C%d H%d CHO",x-1,y-1);}
if(z==2&y>1){printf("\n.... C%d H%d COOH",x-1,y-1);}
if(y>z&z>2){printf("\n.... C%d H%d (OH)%d",x,y-z,z);}
if(y>z&x>z&z>2){printf("\n.... C%d H%d (CHO)%d",x-z,y-z,z);}
if((z%2==0)&(y>=z/2)&(z>2)){printf("\n.... C%d H%d (COOH)%d",x-z/2,y-z/2,z/2);}
}
}
}
}
end:
printf("\n計算完畢!\n共有%d 種符合答案。",js);
while(getchar()!=27);
}
//==================================================
void dianziyun()
{
char k;
int i;
k=0;
i=5;
while(k!=ESC_KEY)
{
openfile(i);
k=getchar();
if(k==UP_KEY||k==LEFT_KEY||k==PGUP_KEY){i--;if(i<5)i=5;}
if(k==DOWN_KEY||k==RIGHT_KEY||k==PGDN_KEY){i++;if(i>8)i=8;}
}
}
//***生物***
//==================================================
void biaozhi()
{
long a,b,c,x;
win(1);
cai(4);
strcpy(out1," 標志重捕法是指在被調查");
strcpy(out2,"的種群的生活環境中,捕獲一");
strcpy(out3,"部分個體,將這些個體進行標");
prout();
getchar();
strcpy(out1,"志后再放回到原來的環境,經");
strcpy(out2,"過一段時間后進行重捕,根據");
strcpy(out3,"重捕中標志個體占總捕獲數的");
prout();
getchar();
strcpy(out1,"比例,來估算該種群的數量。");
strcpy(out2," ");
strcpy(out3," ");
prout();
getchar();
win(1);
cai(4);
TextOut(3,35,"第一次捕獲:",1);
Refresh();
a=scanf(69,35,6);
TextOut(3,50,"第二次捕獲:",1);
Refresh();
b=scanf(69,50,6);
TextOut(3,65,"已標志的有:",1);
Refresh();
c=scanf(69,65,6);
win(1);
cai(4);
if(c>b||c>a){TextOut(3,35,"輸入錯誤!",1);Refresh();goto end;}
x=(a*b)/c;
TextOut(3,35,"總共約有",1);
pp(51,35,x);
TextOut(81,35,"只",1);
Refresh();
end:
while(getchar()!=27);
}
//==================================================
void pinlu()
{
long a,b,c,d,x,y;
win(1);
cai(4);
strcpy(out1," 某種基因在某個種群中出");
strcpy(out2,"現的比例,叫做基因頻率。 ");
strcpy(out3," ");
prout();
getchar();
win(1);
cai(4);
TextOut(3,35,"基因型為AA的個體數:",1);
Refresh();
b=scanf(117,35,4);
TextOut(3,50,"基因型為Aa的個體數:",1);
Refresh();
c=scanf(117,50,4);
TextOut(3,65,"基因型為aa的個體數:",1);
Refresh();
d=scanf(117,65,4);
win(1);
cai(4);
a=b+c+d;
x=((2*b+c)*100)/(a*2);
y=((2*d+c)*100)/(a*2);
win(1);
cai(4);
TextOut(3,35,"A的基因頻率為: %",1);
pp(87,35,x);
TextOut(3,50,"a的基因頻率為: %",1);
pp(87,50,y);
Refresh();
end:
while(getchar()!=27);
}
//==================================================
void danbaizhi()
{
long n,m;
win(1);
cai(4);
TextOut(3,35,"氨基酸數:",1);
n=scanf(57,35,6);
TextOut(3,50,"肽鏈數:",1);
m=scanf(45,50,6);
win(1);
cai(4);
TextOut(3,35,"肽鍵數:",1);
TextOut(3,50,"失水數:",1);
TextOut(3,65,"蛋白質分子量:",1);
pp(45,35,n-m);
pp(45,50,n-m);
pp(81,65,130*n-18*(n-m));
Refresh();
while(getchar()!=27);
}
//========================================================
void fenli()
{
int ch,f,m;
char fu[5];
win(1);
cai(4);
strcpy(out1," 在雜合子的細胞中,位于");
strcpy(out2,"一對同源染色體上的等位基因");
strcpy(out3,",具有一定的獨立性,生物體");
prout();
getchar();
strcpy(out1,"在進行減數分裂形成配子時,");
strcpy(out2,"等位基因會隨著同源染色體的");
strcpy(out3,"分開而分離,分別進入到兩個");
prout();
getchar();
strcpy(out1,"配子中,獨立的隨配子遺傳給");
strcpy(out2,"后代。 ");
strcpy(out3," ");
prout();
getchar();
strcpy(out1," ");
strcpy(out2,"請選擇父本基因型: ");
strcpy(out3,"①AA②Aa③aa ");
prout();
while(ch!='b'&&ch!='n'&&ch!='m')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -