大神们看看这是什么原因
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
int MERGE_SORT(int* pt,int p,int r);
void MERGE(int* ptr,int p,int q,int r);
void main()
{
int i=0;
int a[]={3,1,4,6,2,9,8,6};
MERGE_SORT(a,0,7);
/*输出数组*/
while(i<=7)
printf("%d",a[i++]);
}
int MERGE_SORT(int* pt,int p,int r)
{
int q=floor((p+r)/2);
if(p=r) return 0;
if(p<r)
{
MERGE_SORT(pt,p,q);
MERGE_SORT(pt,q+1,r);
}
MERGE(pt,p,q,r);
}
void MERGE(int* ptr,int p,int q,int r)
{
int n1=q-p+1;
int n2=r-q;
int *L,*R;
int i,j;
for(i=1;i<n1;i++)
{L[i]=ptr[p+i-1];}
for(j=1;j<n2;i++)
{R[j]=ptr[q+j];}
L[n1+1]=344;
R[n2+1]=344;
int i=1;
int j=1;
int k=0;
for(k=p;k<r;k++)
{
if(L[i]<=R[i])
{ptr[k]=L[i];i=i+1;}
else {ptr[k]=R[i];j=j+1;}
}
}
调试后输出如下:该怎么改呢?3Q~
1>f:\visual studio\6.1\6.1\1.c(19): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
1>f:\visual studio\6.1\6.1\1.c(41): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
1>f:\visual studio\6.1\6.1\1.c(42): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
1>f:\visual studio\6.1\6.1\1.c(43): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
1>f:\visual studio\6.1\6.1\1.c(44): error C2065: “k”: 未声明的标识符
1>f:\visual studio\6.1\6.1\1.c(44): error C2065: “k”: 未声明的标识符
1>f:\visual studio\6.1\6.1\1.c(44): error C2065: “k”: 未声明的标识符
1>f:\visual studio\6.1\6.1\1.c(47): error C2065: “k”: 未声明的标识符
1>f:\visual studio\6.1\6.1\1.c(48): error C2065: “k”: 未声明的标识符
1>
1>生成失败。
[解决办法]
1. 重复定义。
2. C语言中变量声明要放在代码块头部。