请教C语言的问题解决方案

数组求和,这个好像不能够运行,但是提交代码可以,而且加入了getch();和system pause;试过了也不行!
#include
#include
void Print(int*data,int n)
{ int i;
for(i=0;i<n;i++)
{

printf("%d",data[i]);

         }
      printf("\n");
 }

int Split(int *data,int pre,int rear)
{
int value=data[pre];
while(pre {
while(data[rear]>=value && pre<rear) rear--;

data[pre]=data[rear];
while(data[pre]<value && pre<rear) pre++;
data[rear]=data[pre];
}
data[pre]=value;
return pre;
}
//快速排序
void QuickSort(int *data,int pre,int rear)
{

if(pre<rear)

{ int mid=Split(data,pre,rear);
QuickSort(data,pre,mid-1);

QuickSort(data,mid+1,rear);
}

}
int main()
{
int i,n;
int data;
scanf("%d",&n);
data=(int
)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&data[i]);

        }

}
    QuickSort(data,0,n-1);
    Print("data,n");
    getch();
    return 0;

}
还有一个能提交但是不能运行,getch();用过了也不行!

Fibonacci数列的
#include
#define N 1000001
#define M 10007
int main()
{
int a[N],i,n;
scanf("%d",&n);
a[1]=1;a[2]=1;
for(i=3;i<=n;i++)
a[i]=(a[i-1]+a[i-2])%M;
printf("%d",a[n]);
getch();
return 0;
}

int a[N] 这个数组定义的也太大了吧,已经超过 VC 或 VS 系统编译工具的默认设置,这样的程序运行不起来也是正常的。
可以考虑将 a 所需要的内存动态分配:malloc / new 都可以的。

int a[N]把他定义成全局的

定义的数组有点大了,定义成全局的

int main()
{
int a,i,n;
scanf("%d",&n);
a = (int
)malloc(n*sizeof(int));
a[1]=1;a[2]=1;
for(i=3;i<=n;i++)
a[i]=(a[i-1]+a[i-2])%M;
printf("%d",a[n]);
getch();
free(a);
return 0;
}
数组a动态分配比较好。

第二个是因为数组是连续存储的,你申请的内存过大,没有这么多,可能导致越界,我把数改小了,是可以运行的,如果你非要用这么大的数,可以用链表存储

你这个是斐波那契数列对吧,我记得通项公式是an=1/根号5((1+根号5之和/2)的n次方-(1-根号5之差/2)的n次方),n=1,2,3...
用这个公式行不行啊???