#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
/*********************************************************************
2. Please implement a C function to round up a given number N to the
nearest multiply of another given number M.
Example: N=8,M=3
M*2 = 6,M*3 = 9, 8 is a nearer to 9 other than 6 so
round_to_nearest_M(8,3)=9
Prototype:
int round_to_nearest(int n, int m);
**********************************************************************/
int my_round_to_nearest(int n, int m)
{
int value0=0,value1=0;
int i=0;
if(m == 0)
return 0;
else
{
i = n/m;
if((m>0 && n>0) || (m<0 && n<0))
{
value0 = i*m;
value1 = (i+1)*m;
if(abs(n-value0) < abs(value1-n))
return value0;
else
return value1;
}
if((m>0 && n<0) || (m<0 && n>0))
{
value0 = i*m;
value1 = (i-1)*m;
if(abs(n-value1) < abs(value0-n))
return value1;
else
return value0;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int result=0;
int M = -3, N=8;
result = my_round_to_nearest(N,M);
cout<<result<<endl;
return 0;
}
//运算结果为