作业描述:
参考代码:
#include <stdio.h>
int GetAbsoluteValue(int num)//求绝对值
{
return num > 0 ? num : -num;
}
double GetAbsoluteValue2(double num)
{
return num > 0 ? num : -num;
}
double GetSqrt(double num)
{
//此题进行一下扩展,原题是输入正整数,为了更加通用,改成输入一个正数
const double eps = 1e-12;//定义结果的精度
double x = 0, y = num / 2;
while (GetAbsoluteValue2(y - x) >= eps)
{
x = y;
y = (x + num / x) / 2;
}
return x;
}
void CalculateQuotientAndReminder(int dividend, int divisor)
{
//思路:先判断符号是否同号,然后比较绝对值,然后不停的减去除数
int quotient = 0;
int remainder = 0;
if (0 == divisor)
{
printf("除数不能为0\n");
return;
}
if (dividend * divisor < 0) //表示异号
{
while (GetAbsoluteValue(dividend) >= GetAbsoluteValue(divisor))
{
dividend += divisor;
quotient--;
}
}
else
{
while (GetAbsoluteValue(dividend) >= GetAbsoluteValue(divisor))
{
dividend -= divisor;
quotient++;
}
}
remainder = dividend;
printf("商=%d\n", quotient);
printf("余数=%d\n", remainder);
}
int main()
{
double Radius;
const double Pi = 3.1415926;
int dividend;
int divisor;
double sqrtnum;
printf("-----------------------------------必做作业1:----------------------------------\n");
printf("-7%%2=%d\n", (-7) % 2);
printf("7%%-2=%d\n", 7 % (-2));
printf("\n");
printf("-----------------------------------必做作业2:----------------------------------\n");
printf("输入圆的半径: ");
scanf_s("%lf", &Radius);
printf("圆的面积=%.6lf\n", Pi * Radius * Radius);
printf("\n");
printf("-----------------------------------选做作业1:----------------------------------\n");
printf("输入被除数: ");
scanf_s("%d", ÷nd);
printf("输入被除数: ");
scanf_s("%d", &divisor);
CalculateQuotientAndReminder(dividend, divisor);
printf("\n");
printf("-----------------------------------选做作业2:----------------------------------\n");
printf("输入被开平方根的数: ");
scanf_s("%lf", &sqrtnum);
printf("开根结果=%.10lf\n", GetSqrt(sqrtnum));
return 0;
}
输出结果: