c++公式求糾錯...
1樓:網友
#include
#include
using namespace std;
int main()
念慶 double a,b,c,x1,x2;
cout<<"輸入係數a、b、c"<>a>>b>>c;
double result = b*b-4*a*c;
if(a==0 &&result> 0)
耐乎 else
result = sqrt(result);
if(result>0)
x1=((b)+sqrt(b*b+4*a*c))/2*a);
x2=((b)-sqrt(b*b-4*a*c))/2*a);
cout<<"x1為:"<
結果如下:<>
2樓:網友
break只能用來跳出迴圈,不能跳出扮前盯主函式。
然後if(sqrt(b*b-4*a*c)>0) 都sqrt了肯定大於0啊。把sqrt去了。
if(sqrt(b*b-4*a*c)=0) 一悔耐個是sqrt的問題 乙個這裡不廳和能用=0 要用==0
下面也要去掉sqrt
另外涉及到sqrt,把int改為float或者double吧。
c語言程式設計求糾錯~~~~
3樓:天馬
while(scanf("%d",&n)!=eof)
這個迴圈出錯了,如果按你這個**來執行的話,每次讀入乙個n的值,迴圈裡都是隻計算一次a的值,a的值要麼是sg(n),要麼是sg(a),然後繼續讀入新的n的值。
要想滿足「如果結果是兩位數或者包括更多位的數字,那麼再把這些數字加起來。如此進行下去,直到得到是一位數為止。」這個要求的話,在迴圈裡還得加上乙個迴圈,反覆計算a的值,直到其為一位數。
4樓:網友
你的程式肯定不對這是定下的,因為要是第二次a還大於10,那麼就不對了所以a=sg(n);
if(a>=10)
a=sg(a);
這裡是要用迴圈來做的。
don=sg(n)
while(n<10);
因為至少要計算一次,所以用do--while迴圈這個判斷while可能有錯,你試驗一下吧,要是錯了,變成n>=10即可。
5樓:清河大俠
可能和輸入的整數太大有關。你的資料都是int型,pc機上通常是16bit。資料範圍:
32768 ~ 32767。對於大於+32767的數值,就變成了負值。而你的程式要求的範圍是:
小於101000。因此超出了int的範圍。
把int改成long應該就ok了。scanf()和printf()等也相應改變:%d ==> %ld。
6樓:網友
這麼簡單的問題還問,gdb,自己除錯下不就知道哪錯了嗎?
7樓:
子程式裡頭,while(n)改為if(n/10!=0)試試。
8樓:慕菀雪宸
首先,你缺了乙個大括號,其次,for(a=2;a<=d;a++)這句多了乙個分號,導致for迴圈其實就是乙個空語句,然後你再用break語句就會出錯,因為break語句不在for迴圈裡。最後,printf("m不是乙個素數");
和printf("m是乙個素數");這兩句列印出來的是「m不是乙個素數」或「
m是乙個素數」,而不是你輸進去的m值。
C語言 糾錯 程式如下,在C語言中,電腦程式通常有哪幾種錯誤?
首先不是完數,完數的因子相加時不能包括完數本身。比如也是的因子,總不能讓 吧,然後的一些問題我再程式中指出 include int main void int i,j,s for i i i for j j i j if i j s s j 因子相加。if s i printf d i for j ...
糾錯C ,我哪裡錯了,請悉數指出
c 每行語句用分號結尾,記住用英文輸入法,其次 if exp else if exp else if exp else include 這裡不是。using namespace std 名稱空間。int main 這裡需要加上int返回型別,因為你最後有return 這句話。cout enter y...
求EXCEL公式,求EXCEL公式大全
if a2 高管 b2 0.7,if a2 管理 min b2,5000 if a2 辦公室 min b2,4500 if a2 員工 min b2,3500 求excel公式大全 因為公式要引用上一行,所以公式只能從第2行開始,c1中手動按規律輸入好了。回c2中輸入公式 答 if b2 a2,0,...