C语言程序,编译成功,但是运行时报错
程序编译时没有问题的,但是运行时不能显示出结果,总是说出现问题导致程序停止。。。求大神指点。。。源程序:#include<stdio.h>#include<malloc....
程序编译时没有问题的,但是运行时不能显示出结果,总是说出现问题导致程序停止。。。
求大神指点。。。
源程序:
#include<stdio.h>
#include<malloc.h>
//交换数组的两段大小相等的范围的对应数据
//a[low1] <->a[low2] a[low1+1]<->a[low2+1] ... a[high1] <-> a[high2]
void swap(int a[],int low1,int high1,int low2,int high2){
int temp;
while(low1<=high1){
temp=a[low1];
a[low1]=a[low2];
a[low2]=temp;
low1++;
low2++;
}
}
//利用分治算法, 每次选择最小的数组进行换位
void patition(int a[], int low, int k, int high){
if(low<high){
if((k-low+1)==(high-k))
swap(a,low,k,k+1,high);
else if((k-low+1)<(high-k)){
swap(a,low,k,low+high-k,high);
patition(a,low,k,low+high-k-1);
}
else{
swap(a,low,high+low-k-1,k+1,high);
patition(a,high+low-k,k,high);
}
}
}
//测试
int main(){
int*a;
int i=0;
int n,k;
scanf("%d","%d",n,k);
a=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
scanf("%d",a[i]);
}
patition(a,a[0],4,a[n]);
free(a);
return 0;
} 展开
求大神指点。。。
源程序:
#include<stdio.h>
#include<malloc.h>
//交换数组的两段大小相等的范围的对应数据
//a[low1] <->a[low2] a[low1+1]<->a[low2+1] ... a[high1] <-> a[high2]
void swap(int a[],int low1,int high1,int low2,int high2){
int temp;
while(low1<=high1){
temp=a[low1];
a[low1]=a[low2];
a[low2]=temp;
low1++;
low2++;
}
}
//利用分治算法, 每次选择最小的数组进行换位
void patition(int a[], int low, int k, int high){
if(low<high){
if((k-low+1)==(high-k))
swap(a,low,k,k+1,high);
else if((k-low+1)<(high-k)){
swap(a,low,k,low+high-k,high);
patition(a,low,k,low+high-k-1);
}
else{
swap(a,low,high+low-k-1,k+1,high);
patition(a,high+low-k,k,high);
}
}
}
//测试
int main(){
int*a;
int i=0;
int n,k;
scanf("%d","%d",n,k);
a=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
scanf("%d",a[i]);
}
patition(a,a[0],4,a[n]);
free(a);
return 0;
} 展开
2个回答
展开全部
int main(){
int*a;
int i=0;
int n,k;
scanf("%d,%d",&n,&k); //变量用地址,注意格式控制,输入时两数间也要有逗号,如2,2
a=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
scanf("%d",&a[i]); //&a[i]
}
patition(a,a[0],4,a[n]);
free(a);
return 0;
}
//程序可能还有其他问题,能执行,但没有输出。
int*a;
int i=0;
int n,k;
scanf("%d,%d",&n,&k); //变量用地址,注意格式控制,输入时两数间也要有逗号,如2,2
a=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
scanf("%d",&a[i]); //&a[i]
}
patition(a,a[0],4,a[n]);
free(a);
return 0;
}
//程序可能还有其他问题,能执行,但没有输出。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询