您的位置:首页 > 其它

从考试成绩中划出及格线

2014-03-21 20:43 120 查看
/******************************************************************
个学生考完期末试评卷成后,老师需要划出及格线,求如下:
(1)及格线是 10 的倍数
(2)保证至少有60%的学生及格;
(3)如果所有的学生都高于60分,则及格线为 60 分
输入10个整数:取值0~100
输出及格分数线,10的倍数
**********************************************************************/
#include<stdio.h>
#include<stdlib.h>

int comp(const void* a, const void* b)
{
	return *((int*)a) - *((int*)b);
}
int makesurePassLine(int* arr, int length)
{
	if(arr ==NULL || length<=0)
		return -1;

	int result = -1;
	qsort(arr,10,sizeof(int),comp);
	for(int i=0; i<length; ++i)
	{
		printf("%d\t",arr[i]);
	}

	if(arr[0] > 60)
		result = 60;
	else if(arr[4]%10 == 0)
		result = arr[4];
	else
		result = arr[4]/10*10;

	return result;
}

void test()
{
	const int length = 10;
	int arr[10] ={61,51,49,30,20,10,70,80,90,99};
	int passLine = makesurePassLine(arr,length);
	printf("%d\n",passLine);
}

void test1()
{
	const int length = 10;
	int arr[10] ={61,70,89,70,80,90,80,80,90,99};
	int passLine = makesurePassLine(arr,length);
	printf("%d\n",passLine);
}
int main()
{
	test();
	test1();
	return 0;
}
不足之处:改变了原来的输入数组,可通过辅助数组解决这个问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐