1樓:養豬場廠長夫人
我看出來了 樓主的程式 是想根據 輸入的一個數 輸出它的 個位 十位 百位...... **的錯誤 主要是
a[i]=(b/pow(10,i))%10; 因為你進行了 / 除法運算 得到的數字 不一定是int型 所以程式報錯 你可以進行個強轉 a[i]=((int)(b/pow(10,i)))%10 就可以了
2樓:
pow(10,i)的結果型別為double浮點型別,我猜lz這裡是想用整數,剛好此狀況下應該是整數無疑。
寫成(int)pow(10,i)就可以了,注意括號。
ps:不太明白lz的思路,為什麼最後輸出時要反著順序?
3樓:匿名使用者
錯誤指示翻譯過來是:%左邊不能為double型別的數。
所以你要把%左邊的值變為整數,以下修改僅為參考,可能會影響程式功能。
#include
#include
#define n 10
void main()
for(i=0;i printf("%4d",a[i]);} 這個程式錯在哪了? 4樓:金色潛鳥 t=fabs(x); 要用浮點數求絕對值,若用 abs(x) 則自動取整了。 if (g==y) 比較符號是 ==, 若用 g=y 則成了賦值,不是比較了。 另,浮點數比較相等時,可能會有截斷誤差,也可用 if ( fabs(g-y) < 1.0e-08 ) ... 考慮精度的比較方式。 scanf("%lf %lf %lf %lf" 注意拼寫,小寫的 l, 不是數字1,常見有人寫成數字1。 5樓:匿名使用者 if(g==y) 「=」這是賦值,「==」這個才是「等於」 這個程式錯在哪 6樓:匿名使用者 我想問下,你**的功能是什麼, if(str[i]!=c) new_str[j]='\0'; 這段你想表達的是不是,如果找到了我輸入的**,將其複製陣列new_str[j]的相應位置賦值為'\0'? 假如是這個意思你應該這樣寫 if(str[i]!=c) else break; 找到後跳出迴圈 而且的話,你僅僅只是為了找到那個字母,沒必要再重建一個陣列,用標記的方式來解決,效率太低。直接找到不更省事嗎? if(str[i]==c) 這個程式錯在哪? 7樓:匿名使用者 sum=sum+flag*i/(2*i-1);括號裡面是2*i,不是2i,電腦識別不出2i是什麼 8樓:匿名使用者 1-1/3+1/5-.......(-1)^(i-1) i/(2i-1)=? 語法沒錯啊。 不過你 scanf("%d", &repeat); for(ri = 1; ri < 有可能程式把前一次的輸入之後的回車當作後一次的輸入的。 最好是輸入之後,用一個printf來提示,或者用一個變數接受一個無效字元。加上判斷是否是有效字元。 9樓:雪 你輸出要求的是浮點型,你的sum定義的也是double型的,可是你計算的結果是整型(int),sum=sum+flag*i/(2i-1.0);我這邊沒有編譯器,能力有限,只能幫到這了!! 10樓:匿名使用者 flag=-flag; 不能這樣寫 應該flag=flag*(-1); 希望幫到你 11樓:匿名使用者 題目是什麼啊……………… 這個程式是錯在哪呀? 12樓: 首先是:else if (c=='2) 語句,2的右邊缺少一個單引號,應該是:'2'。 其次是:sqrt( (float)i * (float)j ); 必須要提前進行強制型別轉換才行,否則的話,輸出結果就是錯誤的。 這個程式錯在哪?! 13樓:匿名使用者 merge()函式的返回值型別及返回值有誤,應採用無返回值的函式以指標的方式修改陣列c的元素值(參考網友yiouzhou的程式),如果要採用有返回值的merge()函式,以參考下例。 #include void main() ,b[10]=; int *c,i; sort(a); sort(b); c=merge(a,b); for(i=0;i<20;i++) printf("%d ",c[i]); }void sort(int *a) }int *merge(int *a,int *b)if(i==10) c[t++]=b[j++]; else c[t++]=a[i++]; return c;} 14樓:匿名使用者 最後一句 return c[20]; 因為前文宣告瞭int c[20] 所以對於陣列c, 能訪問的第一個陣列成員為c[0] 能訪問的最後一個陣列成員為c[19] 而訪問c[20]會越界 會造成陣列越界 15樓:匿名使用者 你的函式int merge(int *a,int *b)有問題,你返回的只有c[20]; 一個值,而且還是越界的 應該用指標來返回陣列 #include void main() ,b[10]=; int c[20],i; sort(a); sort(b); merge(a,b,c); for(i=0;i<20;i++) printf("%d ",c[i]); }int sort(int *a) }int merge(int *a,int *b,int *c)if(i==10) c[t++]=b[j++]; else c[t++]=a[i++]; return 1;} 問題在於你 s char malloc i sizeof char 這一步分配記憶體不足,i是從0開始的下標,作為數量使用時要用i 1。或者你這裡直接用上面的n,把這一行改成 s char malloc n sizeof char 即可。for i 10 p int malloc n sizeof ... 冬一又二分之一 首先 int a 要加分號 else下面有多條語句,應該加上 include int main int a printf input a scanf d a if a 0 a 100 printf error n else switch a 10 case 10 case 9 pri... 看這個吧,跟你的設計一摸一樣,有註釋,你的沒有註釋,有些不怎麼好理解。include stdio.h include stdlib.h struct tree 宣告樹的結構 typedef struct tree treenode 宣告新型別樹結構 typedef treenode b tree 宣...麻煩幫我看看這個程式錯在哪
請問這C語言程式錯在哪,請問我這C語言程式錯在哪
請各位幫我看看這個遍歷排序二叉樹程式錯哪兒了?只能遍歷坐邊的樹,到右邊就彈出了