E_star_Int(); sudu=Extract_data(USART_RX_BUF); //ËÙ¶È 1980/sudu=duty1 duty1=1980/sudu;
时间: 2024-04-13 08:28:35 浏览: 87
根据给出的代码逻辑,在调用函数 `Extract_data` 之后,将返回值赋给变量 `sudu`。然后,根据公式 `1980/sudu` 计算 `duty1` 的值。
假设 `Extract_data` 返回的值是 31552,则计算过程如下:
```
sudu = 31552
duty1 = 1980 / sudu
```
根据上面的计算,得到的 `duty1` 的值是 0.0628(保留四位小数)。
请注意,这里假设 `sudu` 和 `duty1` 的数据类型为浮点数类型,可以存储小数。如果它们的数据类型是整数类型,则计算结果会被截断为整数。
相关问题
E_star_Int(); sudu=Extract_data(USART_RX_BUF); //ËÙ¶È 1980/sudu=duty1 duty1=1980/sudu; u16 Extract_data(u8 *p) { u16 i,t; u16 sum=0; if(p[0]=='F') { for(i=1;i<5;i++) { sum=sum*10+p[i]; } }return sum; }
根据给出的修改后的代码逻辑,函数 `Extract_data` 的实现如下:
```c
u16 Extract_data(u8 *p)
{
u16 i, sum = 0;
if (p[0] == 'F')
{
for (i = 1; i < 5; i++)
{
sum = sum * 10 + p[i] - '0';
}
}
return sum;
}
```
在这段代码中,首先判断 `p[0]` 是否等于字符 `'F'`,如果条件满足,则进入循环。
在循环中,将当前字符转换为数字并累加到 `sum` 中。由于字符 `'0'` 到 `'9'` 的 ASCII 码值是连续的,所以可以通过 `'0'` 的 ASCII 码值来实现字符到数字的转换。
假设输入的数据是 `F1234`,则循环的执行过程如下:
1. 第一次循环:`sum = 0 * 10 + '1' - '0' = 1`
2. 第二次循环:`sum = 1 * 10 + '2' - '0' = 12`
3. 第三次循环:`sum = 12 * 10 + '3' - '0' = 123`
4. 第四次循环:`sum = 123 * 10 + '4' - '0' = 1234`
所以,最终得到的 `sum` 的值为 1234。这个值将作为函数的返回值返回给调用者。
if(USART_RX_BUF[0]=='F') //¼ÓËÙ £¡£¡£¡£¡£¡ { E_star_Int(); sum=USART_RX_BUF[1]*1000+USART_RX_BUF[2]*100+USART_RX_BUF[3]*10+USART_RX_BUF[4]; sudu=sum; printf("a:%.2f\n",sudu);}输入F3000得到sudu=
根据给出的代码,如果输入的USART_RX_BUF[0]等于'F',则会执行相应的操作。在此情况下,代码会调用E_star_Int()函数,并计算sum的值,sum的值由USART_RX_BUF[1]、USART_RX_BUF[2]、USART_RX_BUF[3]和USART_RX_BUF[4]构成。根据代码,输入"F3000"后,sum的值将会是3000。
接下来,将sum的值赋给变量sudu,并使用printf函数打印出sudu的值(保留两位小数)。所以,根据输入"F3000",程序将打印出"a:3000.00"。
阅读全文