求為新手C 改錯!!!

2025-01-13 15:50:09 字數 1442 閱讀 9409

1樓:網友

當輸入的數是完全平方數時,最後的結果都會是x*(x+1),原因是當m ==n時跳出while迴圈體後,在for迴圈中n會+1

修改後的是。

#include

using namespace std;

int main()

int m,n;

bool f;

m = 1;

while(m)

cin>>m;

f=true;

for(n=2;nif(m%n==0)

f=false;

break;

if(f)coutif(m%n==0)

coutelsebreak;

if(m ==n) /只需要新增這兩行。

break;

cout覺得不錯給分吧,哥們。

2樓:網友

問題主要有3點:

1. m沒有初始化就開用了 (while(m))這樣不好;

2. 1也是質數加點判斷把;

3.最重要的一點,m=m/n; 運算的時候對m 做了修改,下一次迴圈m值就變了。

在這裡定義乙個區域性變數 int temp ,temp = m,用temp來運算,下次在用m 覆蓋temp就行了。

新手求解乙個c的問題!!

3樓:網友

你原來的程式存在著3個問題:

第一:你的本意是想通過cut_word函式,來除去非字母的部分,因此你在這個函式里面建立了乙個陣列array,來存在新的字串。但是,這裡有乙個很重要的一點!

那就是這個array陣列是乙個區域性變數,因此在這個函式呼叫結束了以後,array陣列佔用的記憶體就釋放了,就相當於不存在了,所以即便你已經返回了array陣列第乙個元素的位址,但是由於這個陣列已經沒有了,所以在主函式中,new_word指標相當於接收了乙個空的字串!所以說你後面在改進了以後,卻不顯示東西,原因就在這裡,所以在保留cut_word函式的情況下,你應該把陣列array宣告為static

第二:你的cut_word函式中while函式是有問題的。首先你while的條件,(*st++)

\0')這個條件在判斷了以後,st的值就已經指向下乙個元素了,就不符合你的原意了,因此你應該在做完以後再執行st++的操作。

第三:return應該是return(array);

這是完善了的函式,也完善了一些細節,建議你再多看看字元陣列與字元指標這方面的知識。

#include

#include

#define len 20

int main (void)

char *cut_word (char *st)return (array);}

4樓:

return p的p指向的是最後乙個字母的下一位址 puts函式是輸出當前位址以後的內容。

C語言改錯題,求大神指點

include include void fun char s s j 0 字元 不是字串 不能回用雙引 答號 main 1 intfun int n 沒有抄加宣告襲,後面有return且返回值是int型的,應該聲bai明int 2 sum sqrt s sum 求的是各項之du和,應該把前面zhi...

c語言程式改錯

幫你改一下,有序陣列的折半查詢。include define n 10 int fun int a,int m return 1 main k,m printf a陣列中的資料如下 n else printf not be found n 1 fun函式應該定義為返回值為int 2 else if ...

c語言新手問題,求前輩指教,C語言新手,就是一點小疑問,求指教

for n 1 n i n 這一句執行的結果並不是2 0 2 n 1 而是2 0 2 0 2 1 2 0 2 0 2 n 1 所以並不等於2 n 1。這是我修改的 include include int main if m i 0.01 s printf d n i return 0 你修改後的 f...