qimu9 2023-10-30 15:29 采纳率: 75%
浏览 10
已结题

ACMc语言刷题,请看看

c语言刷题,只有一组样例能通过。麻烦看一下问题在哪里

img


#include<stdio.h>
int main()
{
    int n,a=0,b=0,c,d=0,e,sum=0,arr[102];
    while (scanf("%d", &n) != EOF)
    {
        a = 0, b = 0, d = 0, sum = 0;
        while (a < n)
        {
            scanf("%d", &arr[a]);
            a++;
        }
        while (d < n)
        {
            b = 0;
            while (b < n - 1)
            {
                if (arr[b] > arr[b + 1])
                {
                    c = arr[b];
                    arr[b] = arr[b + 1];
                    arr[b + 1] = c;
                }
                b++;
            }
            d++;
        }
        b = 0;
        if (n % 2 == 0)
        {
            while (b < (n / 2))
            {
                c = arr[b];
                if (c % 2 == 0)
                    sum += (c / 2 + 1);
                else
                    sum += c / 2 + 1;
                b++;
            }
        }
        else
        {
            while (b < (n / 2 + 1))
            {
                c = arr[b];
                if (c % 2 == 0)
                    sum += (c / 2 + 1);
                else
                    sum += c / 2 + 1;
                b++;
            }
        }
        printf("%d\n", sum);
    }
    return 0;
}
  • 写回答

3条回答 默认 最新

  • 柯本 2023-10-30 15:53
    关注

    没细看你的思路,我写了一个,供参考(例样测试成功)

    #include <stdio.h>
    #include <stdlib.h>
    int a[101];
    int sort_function( const void *a, const void *b) 
    {
        return *(int *)a-*(int *)b;
    }
    int main()
    {
      int n, t, i, s = 0;
      scanf("%d", &n);
      for (i = 0; i < n; i++)
        {
          scanf("%d", &t);
          a[i]=t/2+1;   //每个班取一半以上的放入数组 
        }
      qsort(a,n,sizeof(int),sort_function); //从小到大排序(可自己写排序程序) 
      for (i = 0; i < n/2+1; i++) //将一半以上的班级累加
           s+=a[i];
      printf("%d\n",s);
      return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月6日
  • 已采纳回答 11月28日
  • 创建了问题 10月30日