一维数组 6272凹凸曼打怪兽这题求解qaq

代码如下;我输入的例子都能过,但只给10分,xd。

#include <stdio.h>
double hush[500];

int main (void)
{
   int a,b,c=0,sum=0,d,e,f,h=0;
   double g;
   scanf("%d",&a);
   while(scanf("%lf",&hush[c++])==1);
   f=c;
   for(c;c>=0;c--)
   {
       sum+=hush[c];
       if(sum==a) {
           sum=0;
           h++;
       }
       if(sum>a) {
           sum=0;
           h+=2;
       }

   }
   if(sum!=0)
       h++;
   printf("%d\n",h);
   for(e=0;e<=f-2;e++)
   {    g=hush[e]+hush[e]*0.2;
       printf("%.1lf ",g);
   }
   return 0;

}
2 个赞
       if(sum==a) {
           sum=0;
           h++;
       }
       if(sum>a) {
           sum=0;
           h+=2;
       }

这里出了问题,如果是输入:

10
2 8 5
就会出错
首先,循环顺序反了
然后,没考虑当sum>a时hush[c-1/按你的代码是c-1,正确代码是i+1/]+hush[c]<=n
帮你改了一下

#include <stdio.h> 
 
int main(void) { 
    int a; 
    scanf("%d", &a); 
     
    double hush[500]; 
    int c = 0; 
    while (scanf("%lf", &hush[c]) == 1) { 
        c++; 
    } 
     
    int h = 0; 
    int sum = 0; 
     
    
    for (int i = 0; i < c; i++) { 
        sum += hush[i]; 
        if (sum > a) { 
            h++; 
            sum = hush[i]; 
        } 
    } 
    if (sum > 0) { 
        h++; 
    } 
     
    
    printf("%d\n", h); 
     
    
    for (int i = 0; i < c; i++) { 
        printf("%.1f", hush[i] * 1.2); 
        if (i < c - 1) { 
            printf(" "); 
        } 
    } 
    printf("\n"); 
     
    return 0; 
}