一个c语言程序,在c++6.0上运行出错,求指点
#include<iostream>#include<cstdlib>usingnamespacestd;intm2=0,c2=0;constintMAX_SIZE=10...
#include <iostream>
#include <cstdlib>
using namespace std;
int m2=0,c2=0;
const int MAX_SIZE =100;
typedef int DataType;
void back (int a[10][MAX_SIZE+1],int Array[]);
void merge(DataType theArray[],int first,int mid, int last);
void mergeSort(DataType theArray[],int first,int last) ;
void Radixsort ( int Array[], int n);
int c1=0,m1=0;
int main()
{
int Array[MAX_SIZE],i;
//srand((unsigned)time(NULL));
for( i=0;i < MAX_SIZE;i++)
Array[i] = rand()%999;
cout<<"the numbers to sort..."<<endl;
for(int j=0;j <MAX_SIZE;j++)
cout<<Array[j]<<" ";
cout<<endl<<endl<<endl<<endl;
cout<<"after sorting..."<<endl;
Radixsort (Array,MAX_SIZE);
for (i=0;i<MAX_SIZE;i++)
cout<<Array[i]<<" ";
cout<<endl<<endl;
int first = 0;
int last = MAX_SIZE-1;
//int mid =(first+last)/2;
mergeSort(Array,first,last);
for(int j=first;j <= last;j++)
cout<<Array[j]<<" ";
cout<<endl<<endl;
cout<<"基数排序关键字参加的比较次数Compare1为"<<3*c1<<"关键字的移动次数Move1(关键字交换计为次移动)为"<<m1<<endl;
cout<<"归并排序关键字参加的比较次数Compare2为"<<3*c2<<" "<<"关键字的移动次数Move2(关键字交换计为次移动)为"<<m2<<endl;
return 0;
}
void back (int a[10][MAX_SIZE+1],int Array[])
{
int i=0,j=0,k=0;
for(;i<10;i++)
{
for(j=1;j<= a[i][0];j++)
{
Array[k++]=a[i][j];m1++;
}
}
}
void Radixsort (int Array[],int n)
{
int count[10];int key;
for(int i=0;i<10;i++)
count[i] = 0;
int j=1,k=0,a[10][MAX_SIZE+1],i=0;
for(int m=0;m<10;m++)
for(int n =0;n<MAX_SIZE+1;n++)
a[m][n] = 0;
for( i=0;i<MAX_SIZE;i++)
{
key=Array[i]%10;c1++;
count[key]++;
a[key][count[key]]=Array[i];m1++;
}
for(int k=0;k<10;k++)
a[k][0] = count[k];
back (a,Array); 展开
#include <cstdlib>
using namespace std;
int m2=0,c2=0;
const int MAX_SIZE =100;
typedef int DataType;
void back (int a[10][MAX_SIZE+1],int Array[]);
void merge(DataType theArray[],int first,int mid, int last);
void mergeSort(DataType theArray[],int first,int last) ;
void Radixsort ( int Array[], int n);
int c1=0,m1=0;
int main()
{
int Array[MAX_SIZE],i;
//srand((unsigned)time(NULL));
for( i=0;i < MAX_SIZE;i++)
Array[i] = rand()%999;
cout<<"the numbers to sort..."<<endl;
for(int j=0;j <MAX_SIZE;j++)
cout<<Array[j]<<" ";
cout<<endl<<endl<<endl<<endl;
cout<<"after sorting..."<<endl;
Radixsort (Array,MAX_SIZE);
for (i=0;i<MAX_SIZE;i++)
cout<<Array[i]<<" ";
cout<<endl<<endl;
int first = 0;
int last = MAX_SIZE-1;
//int mid =(first+last)/2;
mergeSort(Array,first,last);
for(int j=first;j <= last;j++)
cout<<Array[j]<<" ";
cout<<endl<<endl;
cout<<"基数排序关键字参加的比较次数Compare1为"<<3*c1<<"关键字的移动次数Move1(关键字交换计为次移动)为"<<m1<<endl;
cout<<"归并排序关键字参加的比较次数Compare2为"<<3*c2<<" "<<"关键字的移动次数Move2(关键字交换计为次移动)为"<<m2<<endl;
return 0;
}
void back (int a[10][MAX_SIZE+1],int Array[])
{
int i=0,j=0,k=0;
for(;i<10;i++)
{
for(j=1;j<= a[i][0];j++)
{
Array[k++]=a[i][j];m1++;
}
}
}
void Radixsort (int Array[],int n)
{
int count[10];int key;
for(int i=0;i<10;i++)
count[i] = 0;
int j=1,k=0,a[10][MAX_SIZE+1],i=0;
for(int m=0;m<10;m++)
for(int n =0;n<MAX_SIZE+1;n++)
a[m][n] = 0;
for( i=0;i<MAX_SIZE;i++)
{
key=Array[i]%10;c1++;
count[key]++;
a[key][count[key]]=Array[i];m1++;
}
for(int k=0;k<10;k++)
a[k][0] = count[k];
back (a,Array); 展开
2个回答
展开全部
for(int j=0;j <MAX_SIZE;j++)
cout<<Array[j]<<" ";
......
for(int j=first;j <= last;j++)
cout<<Array[j]<<" ";
在vc6里编译器标准c++规范,而是微软的规范,与标准的c++有区别。
vc6里,在for()里定义的变量和for的作用域是平齐的,而非之内。
即for (int j=0; ...) 等同于int j; for (j=0; ...)
也就是说下面一个循环中j不用再定义一次。
cout<<Array[j]<<" ";
......
for(int j=first;j <= last;j++)
cout<<Array[j]<<" ";
在vc6里编译器标准c++规范,而是微软的规范,与标准的c++有区别。
vc6里,在for()里定义的变量和for的作用域是平齐的,而非之内。
即for (int j=0; ...) 等同于int j; for (j=0; ...)
也就是说下面一个循环中j不用再定义一次。
追问
谢谢,看了半天就是不知哪里错误,你能把我帮他改为在c++6.0上顺利运行的吗?我再加分
追答
main() 函数的这一句
for(int j=first;j <= last;j++)
cout<<Array[j]<<" ";
改成
for(j=first;j <= last;j++)
cout<<Array[j]<<" ";
如果还不行,可能是你函数里面有同样的错误。
编译时应该有提示的啊。
如果是运行错误,把具体的错误情况描述一下。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询