#include<stdio.h>
#include<math.h>
void insert(int *,int);
int main(int argc, char argv[])
{
int tree[1000];
memset(tree,'\0',1000);
int i=1;
while (!argv[i])
{
insert(tree,atoi(argv[i]));
}
int depth=0;
printf("Enter depth");
scanf("%d",&depth);
int x=pow(2,depth);
int y=2x-1;
int count=0;
for(;x<=y;x++)
{
if((tree[x]!=NULL) && (tree[2x+1]==NULL) && (tree[2x]==NULL))
{
count++;
}
}
printf("Number of leaf nodes is %d", count);
}
void insert(int *tree,int gmail)
{
int i=1;
if(tree[i]==NULL)
{
tree[i]=gmail;
}
else
{
if(gmail>tree[i])
{
insert(tree[2i+1],gmail);
}
else
insert(tree[2i],gmail);
}
}
Q
代碼編譯沒有
2
A
回答
4
你不能只是寫:
insert(tree[2i+1],gmail);
你需要明確提供的乘法運算,即:[2*i+1]
或[2*i]
。
此外,作爲tree[2*i0]
是int
,而不是一個int*
,你需要它的地址:
insert(&(tree[2*i+1]),gmail);
和:
insert(&(tree[2*i]),gmail);
或者,你可以使用:
insert(tree + (2*i), gmail);
另一個錯誤是pow
cal湖pow返回一個double值,不是int,所以你需要轉換回一個int:
int x = (int) pow(2.0, depth);
0
看起來你正在使用2i
和2x
作爲標到一個數組。這不符合您的使用方式。嘗試用2 * i
和2x
替換出現2i
與2 * x
。
0
2i+1
無效。請嘗試(2*i) + 1
0
2i
和2x
是無效表達式,您應該將2*i
和!
下一次發佈在它不編譯和一些說明,會更易於閱讀的行..
1
一旦你得到它來編譯,你要解決這個問題:
while (!argv[i])
{
insert(tree,atoi(argv[i]));
}
這將1)根本不執行,或2)給一個無限循環。 if (!argv[1])
等效於if (argv[i] == NULL)
,所以如果只有在沒有值存在的情況下才會讀取值。
1
#include<stdio.h>
#include<math.h>
void insert(int *,int);
int main(int argc, char argv[])
{
int tree[1000];
memset(tree,'\0',1000);
int i=1;
while (!argv[i])
{
insert(tree,atoi(argv[i]));
}
int depth=0;
printf("Enter depth");
scanf("%d",&depth);
int x=pow(2.0,depth);
int y=2*x-1;
int count=0;
for(;x<=y;x++)
{
if((tree[x]!=NULL) && (tree[2*x+1]==NULL) && (tree[2*x]==NULL))
{
count++;
}
}
printf("Number of leaf nodes is %d", count);
}
void insert(int *tree,int gmail)
{
int i=1;
if(tree[i]==NULL)
{
tree[i]=gmail;
}
else
{
if(gmail>tree[i])
{
insert(tree,tree[2*i+1]);
}
else
insert(tree,tree[2*i]);
}
}
這段代碼有工作,只是在我的編譯器的memset的功能還沒有認識 這是什麼功能?
相關問題
- 1. 編譯Qt3D沒有Qt源代碼
- 2. 代碼沒有運行但編譯?
- 3. Maven的:沒有源代碼編譯
- 4. 我的代碼沒有編譯錯誤,但沒有輸出
- 5. Libgdx HTML項目沒有編譯(沒有源代碼可用...)
- 6. 腳本代碼沒有執行,但沒有編譯器錯誤
- 7. NASM沒有編譯我的彙編代碼
- 8. GMP-彙編代碼?編譯代碼
- 9. 有沒有辦法編譯FF加載項代碼
- 10. Coffescript沒有編譯有效的源代碼
- 11. Visual Studio代碼沒有編譯所有* .ts文件
- 12. 編譯vhdl代碼
- 13. 編譯C代碼
- 14. 代碼不編譯
- 15. 編譯器可以在沒有擴展的情況下編譯代碼嗎?
- 16. 修復了編譯後的MVC ASP.NET網站沒有編譯的原始代碼
- 17. 反編譯預編譯源代碼ASP.NET
- 18. 用C++編譯器編譯c代碼
- 19. 在ubuntu中編譯/編譯源代碼
- 20. 編譯錯誤的代碼的編譯
- 21. Win64的從源代碼編譯包: 「對不起,沒有實現64位模式下編譯沒有」
- 22. XCode每次編譯所有源代碼
- 23. 編譯C++代碼有增強的regex_match
- 24. 代碼編譯,但沒有控制檯輸出
- 25. 編譯C代碼沒有它的主要功能
- 26. 代碼包括<fstream>沒有編譯
- 27. 大型C代碼沒有用MATLAB的mex編譯
- 28. 沒有源代碼可用於輸入:GWT編譯錯誤
- 29. 在沒有Visual Studio的情況下編譯Microsoft的LoginAdmin.dll代碼
- 30. 在代碼中編譯,沒有得到我想要的行爲。
將代碼格式化爲至少可讀! – ypnos 2011-02-14 17:19:58
請:有禮貌·告訴我們你需要什麼。不要只發布代碼。 – Benoit 2011-02-14 17:20:01