一个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);
展开
 我来答
warcraftw
2011-07-01 · 超过15用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:48.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不用再定义一次。
追问
谢谢,看了半天就是不知哪里错误,你能把我帮他改为在c++6.0上顺利运行的吗?我再加分
追答
main()  函数的这一句
for(int j=first;j <= last;j++)
cout<<Array[j]<<" ";
改成
for(j=first;j <= last;j++)
cout<<Array[j]<<" ";

如果还不行,可能是你函数里面有同样的错误。
编译时应该有提示的啊。
如果是运行错误,把具体的错误情况描述一下。
veket_linux
2011-07-01 · TA获得超过4092个赞
知道大有可为答主
回答量:3809
采纳率:0%
帮助的人:4497万
展开全部
for(int j=first;j <= last;j++)

for循环的第一个表达式里定义循环变量 ,是C99标准 才支持的
vc6 是 98年出的不支持 C99标准
追问
哦,那得修改的有好几个,麻烦你帮我修改下   不胜感激
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式