这是PTA乙级1019的代码,我在网站上运行时没有问题,但在自己的电脑上的VS Code上运行时就显示segmentation fault,这是为什么
输入示例:6767
#include <stdio.h>
#define MAXSIZE 4
void swap( int * a, int * b);
int main(void){
int n;
int max;
int min;
int N[MAXSIZE] = {0};
scanf("%d", &n);
N[0] = n/1000; //如何取得各位上的数字
N[1] = (n/100)%10;
N[2] = (n/10)%10;
N[3] = n%10;
if((N[0]==N[1])&&(N[0]==N[2])&&(N[0]==N[3])){
printf("%04d - %04d = 0000",n ,n);
}
else{
do{
int tag = 0;
if( tag != 0){
printf("\n");
}
for( int p = MAXSIZE-1; p>=0; p--){ //从小到大排序
int flag = 0;
for( int i=0; i<p; i++){
if( N[i]>N[i+1]){
swap( &N[i], &N[i+1]);
flag = 1;
}
}
if( flag == 0){
break;
}
}
max = N[3]*1000 + N[2]*100 + N[1]*10 + N[0];
min = N[0]*1000 + N[1]*100 + N[2]*10 + N[3];
n = max - min;
N[0] = n/1000; //如何取得各位上的数字
N[1] = (n/100)%10;
N[2] = (n/10)%10;
N[3] = n%10;
printf("%04d - %04d = %04d", max, min, n);
tag++;
}while( n != 6174);
}
return 0;
}
void swap( int * a, int * b){
int * t;
*t = *a;
*a = *b;
*b = *t;
}