首页
社区
课程
招聘
[旧帖] [求助]c语言段错误找不到原因 0.00雪花
发表于: 2015-12-23 21:46 1792

[旧帖] [求助]c语言段错误找不到原因 0.00雪花

2015-12-23 21:46
1792
在做编程题时遇到的一个问题,测试数据都能通过。最后一个段错误不知道什么原因,百度说是数组越界什么的,弄了好久也没解决。下面是截图

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int phase(int N);
int main(void){
	//a保存输入的序列,b保存输出矩阵 
	int a[10001],b[101][101]; 
	int flag,N,n,m,i,j,count=0,temp,c;
	scanf("%d",&N);
	//输入N个数 
	for(i=0;i<N;i++){
		scanf("%d",&a[i]);
	}
	//降序排序 
	for(i=0;i<=N-2;i++){
		for(j=N-1;j>=1;j--){
			if(a[j]>a[j-1]){
				temp = a[j];
				a[j] = a[j-1];
				a[j-1] = temp;
			}
		}	
	}	
	//m和n的差值 
	flag =  phase(N);
	for(i=1;i<=N;i++){
		if(i*(i+flag)==N){
			break;
		}
	}
	//获得行和列的值 
	n = i;
	m = i+flag;
	
	//开始循环 
	i = 0;
	j = 0;
	c = 0;
	N = 0; 
	//只有一列特殊处理 
	if(n==1){
		for(i=0;i<m;i++)
		for(j=0;j<n;j++)
		b[i][j] = a[c++];		
	}else{
		do{		
			while(j<(n-count)){
			b[i][j] = a[N++];
			j++;
			}
			if(N==m*n)
			break;			
			j--;
			i++;	
			while(i<(m-count)){							
				b[i][j] = a[N];	
				i++;
				N++;			
			}
				if(N==m*n)
				break;			
			i--;
			j--;	
			while(j>=count){
				b[i][j] = a[N];	
				j--;
				N++;			
			}
			if(N==m*n)
			break;			
			 j++;
			 i--;	
			count++;	
			while(i>=count){
				b[i][j] = a[N];	
				i--;
				N++;		
			}
			if(N==m*n)
			break;				
			j++;
			i++;	
			}while(1);
}

	//打印输出 
	for(i=0;i<m;i++){
		for(j=0;j<n;j++){
			if(j<n-1){
				printf("%d ",b[i][j]);
			}else{
				printf("%d\n",b[i][j]);
			}
		}
	}
	return 0;
}
//获得m,n差值 
int phase(int N){
	int min,i,n,m;
	min = N;
	for(i=1;i<=N; i++){
		n=i;
		m=N/n;
		if(n*m==N){
			min = min<abs(m-n)?min:abs(m-n);	
		}
	}
	return min;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 8
活跃值: (277)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有没有测试用例啊?有的话好分析一些
2015-12-23 21:53
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我觉得最后一组数据是极限测试。恰好是按10000个数据测的吧
2015-12-24 10:31
0
雪    币: 123
活跃值: (144)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
g++ -g xxxx.cpp(你的文件)
gdb ./a.out
然后正常跑,等gdb拦到那个bug点
然后l命令查看崩溃到哪里
2015-12-24 11:10
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
您好,不是很明白,我用的是dev,只有单步调试功能
2015-12-24 20:37
0
雪    币: 123
活跃值: (144)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
devcpp吗?直接可以图形界面调啊
2015-12-28 12:43
0
游客
登录 | 注册 方可回帖
返回
//