C语言程序运行时出现exe停止工作

#include "stdio.h"
#include "stdlib.h"
void sort(int *a,int len)
{
int i, j;

for(i=len-1; i>=0; i--) {
for(j=0; j<len;j++)
if(a[j] < a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
} int n,k,stone[128];
int min=0,i,tdata[128],a[128];
int Fmin()
{
int len = n;
for( i=0; i<len; i++)
tdata[i] = stone[i];
while (len % (k - 1) != 1)
{
len++;
tdata[len-1]=0;
}

int p =0;
while(1)
{
if(len < k) break;

int temp = 0;
for (int j=1; j<=k; j++)
{
temp += tdata[len-j];
}
// printf("%d\n",temp);
a[p++] = temp;
tdata[len-k] = temp;
len = len - k + 1;
sort(tdata,len);
}

for(int j=0; j<len;j++){

min = min + a[j];
return min;
}
}
int Fmax()
{
int max = 0;
int temp = stone[0] + stone[1];
max = temp;
for (int i=2; i<=k;i++)
{
temp = temp + stone[i];
max += temp;
}
return max;
}

int main()
{
int i;
int n,k,stone[128];
scanf("%d%d",&n,&k);
for( i=0; i<n;i++){

scanf("%d",&stone[i]);
sort(stone,n);
printf("%d %d\n",Fmin(),Fmax());
return 0;
}
}

void sort(int *a,int len)
{
    int i, j;
 
    for(i=len-1; i>=0; i--)   { 
             for(j=0; j<len-1;j++) //是len-1 不然后面的a[j+1]会越界 
            if(a[j] < a[j+1]){
                int temp = a[j];
                           a[j] = a[j+1];
                a[j+1] =  temp;
                        }
                }


int main()
{
  int i;
   int n,k,stone[128]; 
   //scanf("%d%d",&n,&k);  k有什么用? 
   scanf("%d",&n); 
     for( i=0; i<n;i++)     
             scanf("%d",&stone[i]);
   sort(stone,n);
   //printf("%d %d\n",Fmin(),Fmax());
   printf("%d %d\n", stone[0], stone[n-1] ); //排序后,大小自然就得到了
   return 0;
}

追问

原题及正常情况下输出结果应如上图所示,但为什么运行结果会是下边的呢

求教

灰常感谢啊

追答

你的这个算法问题与你的程序代码不配套啊。

短时间我也写不出来。你自己多用用功,查一查相关代码参考一下吧

追问

嗯,多谢了,我再看看吧

追答

受之有愧,汗

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答