当前位置:编程学习 > C/C++ >>

各路大神,帮忙看一下为什么编译通过不了啊,这c++语法真麻烦

#include<iostream> //初始化为空集; int*flag; void Initial(int n) { flag=new int[n]; for(int j=0;j<n;j++) flag[j]=0; } template<class T> SonCollect(int k,int m,T list[]) { //一次编码方式确定后按flag输出; if(k==m) { for(int i=0;i<m;i++) if(flag[i]==1) cout<<list[i]; cout<<endl; } //继续按照递归式编码; flag[k]=0; SonCollect(k+1,m,list); flag[k]=1; SonCollect(k+1,m,list); } void main() { int list[4]={1,2,6,3}; Initial(4); SonCollect(0,4,list); }
答案:#include<iostream>
using namespace std ;
//初始化为空集;
int*flag;
void Initial(int n)
{
flag=new int[n];
for(int j=0;j<n;j++)
   flag[j]=0;
}
template<class T>
int SonCollect(int k,int m,T list[])
{
//一次编码方式确定后按flag输出;
 if(k==m)
 {
  for(int i=0;i<m;i++)
   if(flag[i]==1)
    cout<<list[i];
     cout<<endl;
 return 0 ;
 }
//继续按照递归式编码;
 flag[k]=0;
 SonCollect(k+1,m,list);
 flag[k]=1;
 SonCollect(k+1,m,list);
  
}
    void main()
 {
  int list[4]={1,2,6,3};
     Initial(4);
   SonCollect(0,4,list);
   system("pause") ;
 }
是你想要的结果吗?
其他:把编译器显示的错误信息拿出来亮亮啊 我先指出三点吧:
1,SonCollect();这个函数没有设置返回类型。你可以加个void上去。
2,还是SonCollect这个函数,既然说是递归,那么什么时候结束递归没有写。是不是应该在判断体里面加上一行return呢?
    if(k==m)
    {
        for(int i=0;i<m;i++)
            if(flag[i]==1)
                cout<<list[i];
        cout<<endl;
        return;
    }
3,cout和endl没有加上std命名空间。你可以使用std::cout和std::endl,或者简单点在头文件#include<iostream>之后加上一句using namespace std; 

上一个:c语言,希望详细的解答,谢谢
下一个:[C++]starttimer()这个函数怎么使用的,它的意思是什么?谢谢

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,