那个对除法的要求其实没什么意义,C的floor division本来也就是这么干的,只取商,余数丢掉
当然是去取人数最多的班级了
思路:读入数组——降序排序——取前n/2个元素,并将这些元素的一半加起来
#include<stdio.h>
int main()
{
int a[100],n,i,j,tmp,r=0;
scanf(\"%d\",&n);
for(i=0;i<n;i++)
scanf(\"%d\",&a[i]);
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
if(a[j]<a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
for(i=0;i<n/2;i++)
r+=a[i]/2;
printf(\"%d\",r);
return 0;
}
题目描述
计算导论与程序设计课程要开习题课,由于教室座位有限,所以决定限制参加人数。于是规定:1、最多允许一半的班级里的同学参加;2、可以参加的班级最多允许一半的同学参加。现请你写一段程序来计算习题课最多可能有多少个学生参加。
输入为两行,第一行为一个整数n(0<n<100),代表班级的个数,第二行为n个正整数,分别代表每个班级的人数。
输出只有一行,为能够参加习题课的人数的最大值。(当数字为奇数时,一半指的是该数减一后除以2,测试用例保证所有整数可以用 int 类型存储)
输入样例
5
4 5 6 7 8
输出样例
7
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

