程式語言~c之視窗跳出程式將關閉

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int main(void)

{

int aa,bb,cc,dd;

double k1,k4,k5,d,e,f,n,tmp;

double sita2,sita21,sita22,sita31,sita32 ;

while(1)

{

printf(\"aa=?\");

scanf(\"%d\",&aa);

if(aa<=0)

{

printf(\"inputerror\\n\");

continue;

}

else

break;

}

while(1)

{

printf(\"bb=?\");

scanf(\"%d\",&bb);

if(bb<=0)

{

printf(\"inputerror\\n\");

continue;

}

else

break;

}

while(1)

{

printf(\"cc=?\");

scanf(\"%d\",&cc);

if(cc<=0)

{

printf(\"inputerror\\n\");

continue;

}

else

break;

}

while(1)

{

printf(\"dd=?\");

scanf(\"%d\",&dd);

if(dd<=0)

{

printf(\"inputerror\\n\");

continue;

}

else

break;

}

printf(\"sita21=?\");

scanf(\"%d\",&sita21);

printf(\"sita22=?\");

scanf(\"%d\",&sita22);

printf(\"n=?\");

scanf(\"%d\",n);

sita21=sita21*3.14/180;

sita22=sita22*3.14/180;

if (sita22 > sita21)

{

tmp = sita21;

sita21 = sita22;

sita22 = tmp;

}

else

n=(sita21-sita22)/n;

k1=dd/(double)aa;

k4 = dd /(double) bb;

k5 = (cc *cc - dd*dd - aa*aa - bb*bb) / (double)(2 * aa * bb);

for (sita2=sita21 ; sita2<sita22 ; sita2=sita21+n)

{

d = k4 * cos(sita2) + cos(sita2) + k5 - k1;

e = -2 * sin(sita2);

f = k4 * cos(sita2) - cos(sita2) + k5 + k1;

sita31 = 2 * atan(-e + sqrt(e*e - 4 * d * f) / (2 * d))*(180/3.14159);

sita32 = 2 * atan(-e - sqrt(e*e - 4 * d * f) / (2 * d))*(180/3.14159);

printf(\"sita31=%6lf\\n\",sita31);

printf(\"sita32=%6lf\\n\",sita32);

}

system (\"pasue\");

return 0;

}

急~想不出什麼原因~是我的報告

已更新項目:

恩恩~我已經解決了上面的問題了,可是為什麼我看不到應該要出現的sita 31 跟sita 32呢?

2 個已更新項目:

原本我的程式是有整理的可是貼到這就變這樣了。我的目的是sita21跟 sita22是起始角跟終止角的關係。所以我要在中間分成N個等分且算出每一個sita31sita32的值。

然後我的迴圈就是

for(sita2=sita21;sita2

1 個解答

評分
  • adam!
    Lv 5
    1 0 年前
    最佳解答

    阿們

    scanf("%d",n);

    忘了加上&了

    我以前也常犯這個錯= =

    2006-06-13 22:21:46 補充:

    我不知道這個程式的目的程式也寫的有點亂所以我沒有看沒有出現那個,表示你這個迴圈沒有進去for (sita2=sita21 ; sita2<sita22 ; sita2=sita21+n)也就是sita2 < sita22 一開始就不成立了所以迴圈裡面的敘述一次都沒有執行到

    2006-06-14 09:47:34 補充:

    這個迴圈進不去是很明顯的結果for (sita2=sita21 ; sita2<sita22 ; sita2=sita21+n)一開始 sita2 = sita21 ,我們往前面幾行看if (sita22 > sita21){tmp = sita21;sita21 = sita22;sita22 = tmp;}如果sita22 比 sita21大則交換他們的值 ( 交換完後 ,sita21會比sita22大)

    2006-06-14 09:47:44 補充:

    所以for (sita2=sita21 ; sita2<sita22 ; sita2=sita21+n)裡面的sita2 一開始就比sita22大了,迴圈條件直接不成立又怎麼能進入迴圈呢??所以問題可能為1.你迴圈條件設錯 ( 當迴圈條件"成立"時,才進入迴圈內)2.判斷條件設錯 if (sita22 > sita21) 可能是相反才對

還有問題?馬上發問,尋求解答。