用keil写一个函数,要求如下:两个变量做除法运算,分别求出商的整数部分,小数部分,整数位数,小数位数
时间: 2023-12-04 10:05:51 浏览: 125
stc下载教程
好的,这里是一个用Keil编写的函数,可以满足您的要求:
```c
#include <stdio.h>
void div(int a, int b, int *integer_part, int *decimal_part, int *integer_digits, int *decimal_digits) {
int quotient = a / b; // 商的整数部分
int remainder = a % b; // 余数
int i;
// 计算整数部分
int integer = quotient;
int digits = 0;
while (integer > 0) {
integer /= 10;
digits++;
}
*integer_part = quotient;
*integer_digits = digits;
// 计算小数部分
float decimal = (float)remainder / b;
digits = 0;
while (decimal > 0 && digits < 6) {
decimal *= 10;
digits++;
}
*decimal_part = (int)decimal;
*decimal_digits = digits;
}
int main() {
int a = 10;
int b = 3;
int integer_part, decimal_part, integer_digits, decimal_digits;
div(a, b, &integer_part, &decimal_part, &integer_digits, &decimal_digits);
printf("a / b = %d.%d\n", integer_part, decimal_part);
printf("integer digits = %d, decimal digits = %d\n", integer_digits, decimal_digits);
return 0;
}
```
这个函数的原理是先计算出商的整数部分和余数,然后分别计算整数部分的位数和小数部分的位数,最后将结果存储在指针参数中返回。在这个例子中,我们将10除以3,得到3.33333,整数部分为3,小数部分为0.333333,小数部分的位数为6(因为我们设置小数部分最多只能有6位)。
阅读全文