从考试成绩中划出及格线

/******************************************************************
个学生考完期末试评卷成后,老师需要划出及格线,求如下:
(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;
}
不足之处:改变了原来的输入数组,可通过辅助数组解决这个问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值